0부터 시작하는 Docker 공부 - Docker Compose - nginx 배포하기 & cAdvisor

Jaehong Lee·2022년 8월 22일
1
post-thumbnail

1. 요구 사항 - nginx 배포하기

  1. mkdir 0822/testlab 을 만든다
  2. 해당 디렉토리 내에서 Dockerfile 을 생성하여 이미지 testweb:1.0 을 생성한다. 이미지는 아래의 내용을 포함해야 한다
    • 베이스 이미지 => ubuntu:18.04
    • 설치 패키지 -> nginx 를 설치한다.
    • 0822/testlab 에 index.html 파일을 curl 을 이용하여 간단히 생성하고 해당 파일을 nginx 의 기본 웹 폼디렉토리에 올린다. 80번 포트가 열려 있어야 하며, 컨테이너로 배포시에는 자동으로 nginx 가 실행되어야 한다
  3. docker-compose 파일을 작성한다. 아래의 내용을 포함해야 한다
  • web

    • web -> testweb:1.0 을 사용
    • 변수 : DB이름 DB_NAME-> testdb, DB_USER->root, DB_PASSWORD -> test123 (나중에 docker container exec testlab_web_1 env 하면 위의 정보가 보여야 함)
    • 외부 노출시 자신의 80번 포트를 호스트의 8881~8889 를 사용한다
  • db

    • db -> mysql:5.7
    • 변수 : MYSQL_ROOT_PASSWORD->test123, MYSQL_DATABASE-> testdb
    • 두 서비스 모두 (미리 만들어두어야함) testnetwork1 에 연결되어야 한다.
    • db 는 미리 생성해 두었던 testvolume1 에 연결되어야 하는데, /var/lib/mysql 로 마운트 된다
  1. docker container run 을 활용하여 cadvisor 를 설치하고 이를 통해 앞서 만들어 두었던 컨테이너들을 확인할 수 있어야 한다. 물론 cadvisor 도 testnetwork1 에 연결되어 있어야 한다
  2. 생성된 container 는 linux 재부팅시 자동으로 활성화 해야 한다

2. 디렉터리 & index.html 생성

  • 디렉터리 생성 후 index.html 을 생성하였다

3. volume & network 생성

docker volume create testvolume1
docker network create testnetwork1

  • 사용할 volume 도 생성하자
  • 사용할 network 도 생성하자

3. Dockerfile 작성

FROM ubuntu:18.04
RUN apt-get update
RUN apt-get -y install nginx
EXPOSE 80
ADD index.html /var/www/html/index.html
CMD ["nginx", "-g", "daemon off;"]

  • Dockerfile 을 생성해서 위의 코드를 입력해주자. nginx 설치하고, 80번 Port 를 외부에 열어주고, index.html 을 붙여넣기 하여 기본 웹 페이지로 지정하였다. 또한, CMD 를 통해 컨테이너 배포시 nginx 가 실행되게 설정하였다

4. Docker compose 작성

version: '3.7'
services:
  nginx:
    build: .
    ports:
      - "8881-8889:80"
    links:
      - "db:mysql"
    depends_on:
      - db
    environment:
      - DB_NAME=testdb
      - DB_USER=root
      - DB_PASSWORD=test123
    networks:
      - testnetwork1
    restart: always
  db:
    image: mysql:5.7
    environment:
      - MYSQL_DATABASE=testdb
      - MYSQL_ROOT_PASSWORD=test123
    networks:
      - testnetwork1
    volumes:
      - testvolume1:/var/lib/mysql
    restart: always
networks:
  testnetwork1:
    external: true
volumes:
  testvolume1:
    external: true
  • docker-compose.yaml 파일을 생성하여 요구 사항에 맞게 위와 같이 입력한다
    • docker-compose up 에는 restart 옵션이 없으므로 docker-compose.yaml services 정의 부분에 restart 옵션을 작성해줘야 한다

  • 배포해주자
  • 잘 생성됬는지 ps 를 통해 확인해주자

5. nginx 실행 확인

  • 192.168.1.118:8881 에 접속하면 잘 접속된다

6. cAdvisor 설치 및 확인

docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=9559:8080 --detach=true --name=cadvisor google/cadvisor:latest
  • 위 코드를 통해 cAdvisor 컨테이너를 배포하자
  • 컨테이너를 배포하였다
  • cAdvisor 에 잘 접속된다
  • 배포한 nginx 컨테이너와 db 컨테이너를 확인할 수 있다
  • docker container exec testlab_nginx_1 env 을 통해 nginx 컨테이너에 설정한 환경 변수도 잘 설정되있는 것을 확인할 수 있다
  • cAdvisor 를 통해 현재 Host 의 물리 자원 사용량을 모니터링 할 수 있다
  • ubuntu ( Host ) 에서 localhost 라고 쳐도 접속이 된다
profile
멋진 엔지니어가 될 때까지

0개의 댓글