Docker로 Nginx구동까지

NginX의 구동

  1. 도커 이미지를 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
  2. 도커 이미지를 로컬로 다운받음

    // 아래의 커맨드에서 버전명은 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
  3. 다운로드 받은 도커이미지를 확인

    docker images

    ➜ translateSlackBot docker images
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    nginx        latest    6efc10a0510f   2 weeks ago   142MB
  4. 다운받은 도커이미지로 컨테이너 생성및 실행

    // 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
  5. 도커의 프로세스 확인

    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
  6. 도커 run명령어로 설치/실행후 종료한 컨테이너는 아래 명령어로 다시 시작할수있다

    docker start [컨테이너명]

  7. 도커 컨테이너 정지

    // docker stop [컨테이너 ID]

    docker stop b68ffead65da

  8. 도커 컨테이너 삭제

    // dockerrm [컨테이너 ID]

    docker rm b68ffead65da

  9. 도커의 컨테이너에 접속

    // 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

Apr 30, 2023 Views 110