Docker에서 nginx 이미지를 받아 nginx Webserver를 실행시키는 예제이다.
1. Nginx 이미지 다운로드
우선 hub.docker.com 에서 다운로드 받을 nginx 이미지의 버전을 확인합니다.
주의 : docker pull nginx(혹은 docker pull nginx:latest) 명령어를 통하여 마지막 버전의 nginx를 받아도 되지만,
어떤 버전을 사용하고 어떤 OS기반의 nginx를 사용하는지 명시하여 사용하는 것이 좋습니다.
저는 가벼운 OS인 alpine linux 기반의 nginx를 사용하도록 하겠습니다.
이미지를 다운 받기위해 터미널에 다음과 같이 입력합니다.
docker pull nginx:1.19.8-alpine
다운로드 후 docker images를 통하여 이미지를 확인합니다. (항상 확인하는 습관!)
docker images | grep nginx
용량이 22MB 밖에 되지 않습니다.
2. 다운로드 받은 이미지로 Nginx 컨테이너 실행
다운로드 받은 nginx 이미지를 이용하여 컨테이너를 생성 및 실행합니다.
이 때 docker의 run 명령어를 사용합니다.
docker run --name=nginx_server -d -p 8000:80 nginx:1.19.8-alpine
위 명령어를 해석하자면 다음과 같습니다.
- docker run 이미지를 이용하여 컨테이너를 생성 후 실행시켜라.
- --name : nginx_server 컨테이너의 이름을 nginx_server로 지정해라
- -d Container를 백그라운드에서 실행시켜라(detatch)
- -p Container의 80번 포트를 Host OS(내 PC)의 8000번 Port와 연결시켜라(중요!)
위에서 가장 중요한 옵션은 -p 옵션 입니다.
-p 옵션을 이용하여 컨테이너의 80번 포트(Nginx 웹 접속 포트)와 Host의 8000포트를 연결하여 Host의 8000번 포트를 이용하여 컨테이너의 80번 포트에 접속할 수 있게 합니다.
Host Port는 다른 포트번호를 사용하여도 상관없지만, Nginx의 80번 포트와 연결하여야 접속이 가능합니다!
정상 실행된다면 컨테이너의 ID 가 출력됩니다.(-d 옵션때문!)
docker ps 명령어를 통하여 확인해봅시다.
docker ps
잘 실행되고 있군요!!
3. Nginx Webserver 접속
Webserver 접속 방법은 간단합니다! Host의 8000번 포트와 컨테이너의 80번 포트를 연결시켜 놓았기 때문에
localhost:8000번으로 접속하면 됩니다!
혹은 curl 명령어를 통하여 확인할 수도 있습니다.
curl localhost:8000
Nginx 서버가 잘 작동하는 것을 확인하였습니다.
하지만 몇 가지 확인 해볼 수 있는 것들이 있습니다.
1. 컨테이너의 ip
컨테이너가 어떤 ip를 사용하는지 확인해볼까요?
docker inspect 명령어를 통하여 확인 가능합니다.
docker inspect nginx_server | grep IPAddress
docker inspect 의 결과는 JSON 형식으로 출력되는데 그 중에 IPAdress라는 항목이 포함된 부분을 출력하였습니다.
2. 컨테이너 자원 정보
docker stats 명령어를 통하여 컨테이너의 자원정보를 확인할 수 있습니다.
docker stats nginx_server
자세한 설명은 생략하겠습니다.
컨테이너를 종료 시킬 때는 다음과 같이 입력하면 됩니다.
docker stop nginx_server
docker rm nginx_server
Docker에서 nginx 이미지를 이용하여 nginx webserver를 생성해 보았습니다.
얼마전 Docker 교육을 받았는데, Docker라는 기술이 아주 매력적인 것 같아 다양한 실습을 해보고 포스팅할 예정입니다.
'About > Docker' 카테고리의 다른 글
[Docker] 실행 중인 컨테이너 한 번에 종료(삭제)하기 (0) | 2021.03.25 |
---|---|
[Docker] Docker에서 node.js 웹 서버 실행 (1) | 2021.03.21 |
[Docker] 이미지 목록 표시 (docker image ls) (0) | 2021.03.15 |
[Docker] Docker의 작동 구조 (4) (이미지 데이터 관리) (0) | 2020.12.27 |
[Docker] Docker의 작동 구조 (3) (네트워크 구성) (0) | 2020.12.27 |