NginX의 구동
도커 이미지를 docker-hub에서 검색함
//OFFICIAL을 사용할거고 STARTS를 참조해서 선택
docker search nginx:[버전명]
➜ translateSlackBot docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 18442 [OK] linuxserver/nginx An Nginx container, brought to you by LinuxS… 193 bitnami/nginx Bitnami nginx Docker Image 159 [OK] ubuntu/nginx Nginx, a high-performance reverse proxy & we… 86
도커 이미지를 로컬로 다운받음
// 아래의 커맨드에서 버전명은 docker-hub사이트에 확인가능하고 입력하지않을시 lastest 최신 버전을 사용함
docker pull nginx:[버전명]
➜ translateSlackBot docker pull nginx Using default tag: latest latest: Pulling from library/nginx 26c5c85e47da: Pull complete ... Digest: sha256:63b44e8ddb83d5dd8020327c1f40436e37a6fffd3ef2498a6204df23be6e7e94 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
다운로드 받은 도커이미지를 확인
docker images
➜ translateSlackBot docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 6efc10a0510f 2 weeks ago 142MB
다운받은 도커이미지로 컨테이너 생성및 실행
// docker run -d --name {컨테이너 이름} -p <host port number>:<container port number> {이미지 명}:[버전명]
// 원래 컨테이너 생성 및 실행은 create와 start명령어를 사용해야하지만 run명령어 사용하면 create와 start를 동시에 한 결과가 된다
// host port number : 내 PC(HOST)의 80번 포트에 유입되는 모든 트래픽
// container port number : 해당 컨테이너의 접근가능한 포트번호
// 즉 위와 같이 80:80이란 포트를 설정시, 해당 pc의 80번 포트에 들어오는 모든 트래픽을 해당 컨테이너의 80번 포트를 통해서 전달된다는말
// 내 PC(호스트)의 80포트에 요청 -> 내 컴퓨터 80포트가 받고 -> 컨테이너 80포트로 던짐 -> 해당 요청 처리
docker run -d --name nginx_server -p 80:80 nginx
➜ translateSlackBot docker run -d --name nginx_server -p 80:80 nginx b68ffead65da3d6eec4b82543a8a077747533cc2cb9e8ef1087427164db196fc
도커의 프로세스 확인
docker ps // 동작중인 프로세스 확인
docker ps -a // 동작,비동작 프로세스 전부확인
➜ translateSlackBot docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b68ffead65da nginx "/docker-entrypoint.…" 11 seconds ago Up 10 seconds 0.0.0.0:80->80/tcp nginx_server
도커 run명령어로 설치/실행후 종료한 컨테이너는 아래 명령어로 다시 시작할수있다
docker start [컨테이너명]
도커 컨테이너 정지
// docker stop [컨테이너 ID]
docker stop b68ffead65da
도커 컨테이너 삭제
// dockerrm [컨테이너 ID]
docker rm b68ffead65da
도커의 컨테이너에 접속
// docker exec -it [컨테이너명] /bin/sh
// -i 를 사용하면 해당 컨테이너 내부에서 터미널을 통해 명령을 받을수있게 된다
// -t 는 명령입력을 위한 새로운 터미널을 연다라는 의미
// /bin/sh는 리눅스에서 기본제공하는 쉘을 사용한다는 의미
// 즉 해당 컨테이너에 입출력할수있는 터미널을 열고 쉘은 기본 쉘(/bin/sh)을 사용한다는 의미
docker exec -it nginx_server /bin/sh
도커의 hostPort와 ContainerPort의 개념에 대해서
아래의 이미지에서 apahce는 8080:80으로 컨테이너가 설치되어있으며
mysql은 6603:3306으로 설치되어있다
외부인터넷으로 해당 컨테이너의 아파치에 접근하기 위해서는 아래와 같은 과정이 필요하다.
<해당 PC의 IP:8080포트>로 접근 -> 80포트의 컨테이너
참조
https://hyeo-noo.tistory.com/177