1. 요구 사항 - nginx 배포하기
- mkdir 0822/testlab 을 만든다
- 해당 디렉토리 내에서 Dockerfile 을 생성하여 이미지 testweb:1.0 을 생성한다. 이미지는 아래의 내용을 포함해야 한다
- 베이스 이미지 => ubuntu:18.04
- 설치 패키지 -> nginx 를 설치한다.
- 0822/testlab 에 index.html 파일을 curl 을 이용하여 간단히 생성하고 해당 파일을 nginx 의 기본 웹 폼디렉토리에 올린다. 80번 포트가 열려 있어야 하며, 컨테이너로 배포시에는 자동으로 nginx 가 실행되어야 한다
- 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 로 마운트 된다
- docker container run 을 활용하여 cadvisor 를 설치하고 이를 통해 앞서 만들어 두었던 컨테이너들을 확인할 수 있어야 한다. 물론 cadvisor 도 testnetwork1 에 연결되어 있어야 한다
- 생성된 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 라고 쳐도 접속이 된다