본문 바로가기

Rookies 9기/클라우드 취약점 진단 및 대응 실무

취약점 진단 및 대응 실무 4일차

728x90

도커 파일, 도커 컴포즈

수동으로 도커 컨테이너를 다운로드 

 

•도커 파일(Apache2 서버 및 PHP)

sudo mkdir web_docker

관리하기 쉽게 디렉터리 별로 하나씩 관리

sudo vim Dockerfile

Dockerfile의 이름은 약속

파일의 내용은 위에서 부터 아래로 명령이 진행

Dockerfile 이 있는 곳에서 빌드해야 함

. 은 현재 디렉토리 파일에서 가져와서 docker_web이름으로 빌드

※ Dockerfile을 다른 이름으로 저장을 하면 . 이 아닌 -f 옵션을 줌

sudo docker images

도커 파일의 이미지가 잘 생성되었는지 확인

sudo docker run -itd -p 8000:80 --name docker_web docker_web

docker_web으로 만든 이미지를 8000 포트로 실행

Dockerfile의 내용 부분 중 RUN echo 'Docker Web Application' > /var/www/html/index.html 이 실행이 되는지 확인

phpinfo.php

Dockerfile의 내용 부분 중 RUN echo '<? php phpinfo();?>' > /var/www/html/phpinfo.php 이 실행이 되는지 확인

 

 

•도커 파일을 활용한 nginx 빌드

관리를 쉽게 하기 위해 web_nginx 디렉터리 생성

Dockerfile
sudo docker build -t docker_nginx .

Dockerfile 파일을 현재 위치에 docker_nginx 이름으로 빌드

docker_nginx 이미지가 생성 되었는지 확인 

docker_nginx 이미지 8001포트로 실행 

도커 컨테이너가 잘 실행이 되는지 확인 

도커 컨테이너 시스템 안에 들어와서 index.html 파일을 수정 

index.html 수정 후
도커 이미지 기록 표시

docker_nginx 이미지 기록 표시

 

 

•도커 컴포즈를 활용한 웹 서비스 구축

다중 컨테이너 애플리케이션을 관리할 수 있는 실행 도구

sudo apt install docker-compose

도커 컴포즈를 설치 

 

 

•도커 컴포즈 DB 

DB를 관리를 쉽게하기 위해 db-test 디렉터리 생성

docker-compose.yaml

docker-compose.yaml 파일 이름 또한 하나의 약속이다.

sudo docker-compose up

도커  컴포즈를 실행 

3306포트로 mariadb:10.4.6가 실행이 되는 걸 확인

sudo docker-compose ps

도커 컴포드 프로세스 확인

sudo docker exec -it db_test_mydb_1 bash

exec 명령어를 사용해 시스템에 접속

mypass

mysql -uroot -p로 접속 password는 docker-compose.yaml 파일에 있는 내용 MYSQL_ROOT_PASSWORD: mypass  

show databases;

docker-compose.yaml 파일에 있는 내용 중 MYSQL_DATABASE: wordpress이 잘 실행되었는지 확인

도커 컴포즈를 삭제
백그라운도로 실행

 

 

•워드 프레스 및 DB 구축

워드프레스 및 DB을 쉽게 관리하기위해 web_db 디렉터리 생성

docker-compose.yaml

첫 번째 environment는 DB에 관한 정보이고 두 번째 environment는 wordpress db에 관한 정보

도커 컴포즈 실행
sudo docker-compose ps

도커 컴포즈가 실행이 되는지  프로세스 확인

wordpress

워드프레스가 동작이 잘 되는지 확인

 

 

•도커 컴포즈 활용한 Load Balancer 

‣ 3개의 웹서비스 생성

도커 컴포즈의 프로젝트를 관리할 폴더를 생성 (project)

3개의 도커파일을 저장할 폴더를 생성 (web01, web02, web03)

각 도커파일 Dockerfile을 각 폴더에 하나씩 생성 Docker Web Application01, Docker Web Application02.... index.html수정

web01의 Dockerfile
web02의 Dockerfile
web03의 Dockerfile

project 폴더에 docker-compose.yaml을 만들어서 build를 각각 수행

docker-compose.yaml

도커 컴포즈 실행

web01 의 웹 서버 실행 화면
web02 의 웹 서버 실행 화면
web03 의 웹 서버 실행 화면

‣ Load Balancer

로드밸런싱을 하기 위한 nginx 컨테이너를 생성을 해야 하기 때문에 nginx_alb 디렉터리 생성

Dockerfile 및 nginx.conf 파일 생성

nginx.conf
Dockerfile

도커 컴포즈를 실행

3개의 웹서비스가 새로고침을 할때 마다 변경이 됨