1) 사전 준비
1) 로키 리눅스 기반의 vm을 생성하여 ssh 접속한다.
2) 리눅스 생성 시 아래 코드를 스크립트에 추가하여 도커를 설치한다.
#!/bin/bash -xe
echo ">>>> Initial Config Start <<<<"
echo "[TASK 1] Change Timezone"
# Change Timezone
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
echo "[TASK 2] Install Packages & Setting Profile & Bashrc & Go"
# Setting Profile & Bashrc
sudo dnf update -y
sudo dnf install epel-release -y
sudo dnf install git vim wget tree jq sshpass net-tools nfs-utils bridge-utils sysstat bat bind-utils bash-completion dnf-utils -y
# Install 'duf' utility
wget https://github.com/muesli/duf/releases/download/v0.8.1/duf_0.8.1_linux_amd64.rpm
sudo rpm -Uvh duf_0.8.1_linux_amd64.rpm
rm -rf duf_0.8.1_linux_amd64.rpm
# Update profile settings
echo 'alias vi=vim' | sudo tee -a /etc/profile
echo "alias cat='bat --paging=never'" | sudo tee -a /etc/profile
# Bashrc setting for rocky user
echo "sudo su -" >> /home/rocky/.bashrc
# Install Docker
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker
sudo systemctl enable docker
# Install Docker Compose
VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
sudo curl -L "https://github.com/docker/compose/releases/download/$VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Add current user to docker group (replace 'rocky' with the actual user if needed)
sudo usermod -aG docker rocky
v2 설치
#!/bin/bash -xe
echo ">>>> Initial Config Start <<<<"
echo "[TASK 1] Change Timezone"
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
echo "[TASK 2] Install Packages & Setting Profile & Bashrc"
sudo dnf update -y
sudo dnf install epel-release -y
sudo dnf install git vim wget tree jq sshpass net-tools nfs-utils bridge-utils sysstat bat bind-utils bash-completion dnf-utils -y
# Install 'duf' utility
wget https://github.com/muesli/duf/releases/download/v0.8.1/duf_0.8.1_linux_amd64.rpm
sudo rpm -Uvh duf_0.8.1_linux_amd64.rpm
rm -rf duf_0.8.1_linux_amd64.rpm
# Update profile settings
echo 'alias vi=vim' | sudo tee -a /etc/profile
echo "alias cat='bat --paging=never'" | sudo tee -a /etc/profile
echo "sudo su -" >> /home/rocky/.bashrc
echo "[TASK 3] Install Docker v2"
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# Start and enable Docker
sudo systemctl start docker
sudo systemctl enable docker
# Add user to docker group
sudo usermod -aG docker rocky
# Test docker compose version (v2 should show up)
docker compose version
3) 도커 설치 확인 및 루트 권한 부여
sudo docker ps -a
sudo su -
2) 컨테이너 생성 및 실행
1) 도커 run 커멘트를 통해 nginx 이미지 컨테이너를 생성 및 실행해보자
docker run -d --name felix -p 80:80 nginx
도커 run 명령어를 통해 컨테이너를 생성 및 실행하며, 백그라운드로 실행, nginx 이미지의 80포트로 설정해준다.
2) 정상적으로 생성되었는지 확인
docker ps -a
3) 기본적인 정보 확인
ip a
ip a 커맨드를 통해 아래 정보를 확인 가능하다.
1. eth0(이더넷=mac주소)
inet 10.0.0.44/20 > 내가 생성한 vm 인스턴스의 프라이빗 ip 주소
brd 10.0.15.255 > 브로드 케스트 주소
2. docker0
inet 172.17.0.1/16 > 통신에 사용되는 도커 ip 주소
brd 172.17.255.255 > 브로드 케스트 주소
3) 설치한 nginx 동작 확인
도커허브에서 가져온 이미지로 설치한 nginx가 정상적으로 동작하는지 확인해보려고 한다.
public ip 주소:80를 입력하게 되면 0.0.0.0:80>80으로 포트를 설정하였기 때문에 nginx가 나오게 된다.
컨테이너 외부에서 curl 127.0.0.1 입력 시 동일하게 nginx가 나오게 된다.
1) 외부에서 확인(인스턴스 public ip로 확인)
구글 크롬창을 켜서 vm 인스턴스 생성 시 부착했던 public ip 주소:80을 입력 시 엔지닉스 접속이 가능한 것을 확인
0.0.0.0:80 >80 외부에서 80포트를 통해 접속하는 경우 컨테이너에 80포트로 가게 포트설정을 해줬기 때문에
public ip 주소:80를 입력하게 되면 nginx가 나오게된다.
컨테이너의 외부에서 curl 127.0.0.1 입력 시 정상적으로 nginx가 나오는 것을 확인할 수 있다.
2) 내부에서 확인
docker exec -it 컨테이너명 /bin/sh
컨테이너 내부 접속 후 확인해도 역시 nginx가 나오게 된다.
4) 포트 설정을 바꾸고 확인한다면 어떤 결과가 나올까?
포트 설정을 80>5000으로 변경하였고 나머지는 이전과 동일하게 설치하였다.
1) 외부에서 확인
public ip 주소:80를 입력하게 되면 0.0.0.0:80>80으로 포트를 설정하였기 때문에 nginx가 나오게 된다.
컨테이너 외부에서 curl 127.0.0.1 입력 시 동일하게 nginx가 나오게 된다.
아까와 동일하게 입력하면 사이트에 연결할 수 없다는 메세지가 나오게 된다.
컨테이너 외부에서 curl 127.0.0.1 입력 시 역시 연결이 되지 않는다.
2) 내부에서 확인
docker exec -it 컨테이너명 /bin/sh
포트를 변경하였지만, 컨테이너 내부 접속 후 확인 시에는 포트 변경에 대한 영향이 없기 때문에 nginx가 나오게 된다.
'도커&쿠버네티스' 카테고리의 다른 글
로키 리눅스 기반 볼륨 마운트 개념 및 실습 (0) | 2024.10.13 |
---|---|
로키 리눅스 기반 도커 컨터이너와 호스트 간 파일 복사하기 (0) | 2024.10.12 |
로키 리눅스 기반 Mysql, Redmine 구축 및 연동하기 (0) | 2024.10.11 |
로키 리눅스 기반 도커 MySQL, Wordpress 구축하기 (0) | 2024.10.09 |
로키 리눅스 기반 도커 Private Registry 구축 및 사용해보기 (0) | 2024.10.04 |