본문 바로가기

IT

리눅스에서 도커(Docker) 활용하기 2(nginx, 컨테이너 내부 접근)

728x90

nginx 이미지

명령어 1단계

  • docker run nginx => nginx 이미지가 있나 확인하고 없으면 다운로드한다
  • 문제점
    1. Ctrl + C를 하면 nginx가 꺼진다.
    2. 외부에서 접근할 방법이 없다.
      • 원래 도커 컨테이너는 독립적인 공간에서 실행되기 때문에 접근이 안되는게 정상이다.

명령어 2단계

  • docker run -d nginx
  • 문제점
    1. 외부에서 접근할 방법이 없다.

명령어 3단계

  • docker run -d -p 8031:80 nginx 
  • -d (detach) => 백그라운드로 돌리겠다.
  • -p 8031:80 =>  바깥쪽에 있는 8031을 안쪽에 80과 연결하겠다. (포트포워딩)
  • 문제점
    1. 없음
    2. 현재 호스트 => VB(Virtual Box) => CentOS => Docker => 컨테이너에 nginx가 실행되고 있다.
    3. 바깥에 192.168.21.5에서는 CentOS까지만 접근할 수 있으므로 바깥쪽 8031과 CentOS안의 80포트를 뚫어준다. 

현재상태

 

docker로 실행한 nginx

docker run -d -p 8031:80 nginx 를 name이 랜덤으로 잡히기 때문에 --name옵션으로 이름을 부여 

docker run -d -p 8031:80 --name=nginx_1 

docker kill nginx_1 로 간단하게 끌 수 있음 하지만 docker ps -a 로 확인하면 흔적이 남는다. --rm 옵션을 주면 kill되었을때 자동삭제까지 부여할 수 있다.

실행 => docker run -d -p 8031:80 --name=nginx_1 --rm nginx

종료 => docker stop nginx_1

 

exec로 단순명령을 컨테이너에 전달할 수 있다.

docker exec nginx_1 ls => nginx_1 위치에서 ls를 실행

 

nginx_1에서 ls

상호작용이 필요한 경우 -it 옵션이 필요함

ls 같은 경우 단순하지만 sudo yum install mariadb의 경우 복잡하고 y 도 입력 해줘야한다. -it를 추가해주자

 

docker exec -it nginx_1 apt-get install vim (데비안 계열은 yum이 아닌 apt-get)

- docker exec nginx_1 apt-get update 위 명령어 실행전에 수행

- cat /etc/issue 로 리눅스 배포판을 확인 할 수 있음

 

docker exec -it ID bash 를 입력하면 컨테이너 내부에 진입할 수 있다.

bash

지금 현재 리눅스안에 리눅스에 존재 , 가상환경안에 가상환경, CentOS => Docker => 컨테이너

vim 설치 =>  apt-get update, apt-get install vim -y

cd /usr/share/nginx/html로 접근하여 vim index.html => index.html을 수정해주고 바뀐 내용이 적상적으로 출력되는지 확인

index.html
nginx=>index.html 수정한 결과 정상 출력