본문 바로가기
Docker

[Docker] Docker Compose & 실습

by Johnny's 2023. 4. 11.

Docker Compose

- 도커 컨테이너를 일괄적으로 정의하고 제어하는 도구

- 설정 파일을 도커 CLI로 번역하는 역할

 

Docker Compose-file 구성

Version

Services

- 실행하려는 컨테이너들을 정의하는 역할

- 이름, 이미지, 포트 매핑, 환경 변수, 볼륨 등을 포함

- 해당 정보를 가지고 컨테이너를 생성하고 관리

- image: 컨테이너를 생성할 때 쓰일 이미지 지정

- build: 정의된 도커파일에서 이미지를 빌드해 서비스의 컨테이너를 생성하도록 설정

- environment: 환경 변수 설정, docker run 명령어의 —env, -e 옵션과 동일

- command: 컨테이너가 실행될 때 수행할 명령어, docker run 명령어의 마지막에 붙 는 커맨드와 동일

- depends_on: 컨테이너 간의 의존성 주입, 명시된 컨테이너가 먼저 생성되고 실행

- ports: 개방할 포트 지정, docker run 명령어의 -p와 동일 (포트 포워딩)

- expose: 링크로 연계된 컨테이너에게만 공개할 포트 설정 volumes: 컨테이너에 볼룸을 마운트함

- restart: 컨테이너가 종료될 때 재시작 정책

      - no: 재시작 되지 않음

      - always: 외부에 영향에 의해 종료 되었을 때 항상 재시작 (수동으로 끄기 전까지)

      - on-failure: 오류가 있을 시에 재시작

 

Docker Compose 명령어

 docker-comopse -f local-infra.yml up -d

 

up: 도커 컴포즈 파일로, 컨테이너 생성하기

-f: 도커 컴포즈 파일 지정하기 -d: 백그라운드에서 실행하기

-d: 백그라운드에서 실행하기

 

# 실습1 - 도커 CLI로 여러개 컨테이너 관리하기

1. 도커 네트워크 리스트 조회

docker network ls

- bridge: 도커 엔진에 의해 자동으로 생성되는 가상 네트워크. 컨테이너끼리 연결되는 기본 네트워크

- host: 호스트 컴퓨터의 네트워크 인터페이스를 그대로 사용하는 네트워크

none: 네트워크를 사용하지 않는 컨테이너

2. 도커 네트워크 생성

docker network create wordpress_net

3. mysql db container 생성

docker \
run \
    --name "db" \
    -v "$(pwd)/db_data:/var/lib/mysql" \
    -e "MYSQL_ROOT_PASSWORD=root_pass" \
    -e "MYSQL_DATABASE=wordpress" \
    -e "MYSQL_USER=docker_pro" \
    -e "MYSQL_PASSWORD=docker_pro_pass" \
    --network wordpress_net \
mysql:latest

4. wordpress container 생성

docker \
    run \
    --name app \
    -v "$(pwd)/app_data:/var/www/html" \
    -e "WORDPRESS_DB_HOST=db" \
    -e "WORDPRESS_DB_NAME=wordpress" \
    -e "WORDPRESS_DB_USER=docker_pro" \
    -e "WORDPRESS_DB_PASSWORD=docker_pro_pass" \
    -e "WORDPRESS_DEBUG=1" \
    -p 8888:80 \
    --network wordpress_net \
wordpress:latest

5. 컨테이너 확인

docker ps

Host : 8888 → Container : 88 wordpress 잘 실행되는 것 확인

 

# 실습2 - docker-compse.yml 파일 실행하기

1. /home/ec2-user/docker-compose 경로에 docker-compose 폴더 생성

2. docker-compose.yml, Docker 생성

3. yml 파일 실행

docker-compose -f docker-compose.yml up --build

확인

정리

 

 


EC2 Linux Docker-compose 설치 방법

// 최신 docker compose를 해당 링크에서 받을 수 있음
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

// 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

// 설치 확인
docker-compose version

 

* 참고

- 원티드(프리온보딩 백엔드 챌린지 4월) - Docker: 나만의 도커 이미지 만들기부터, 클라우드 배포까지! - Github

- Docker 공식 문서

- Docker Compose 예제 - Github

- 리눅스 Docker-compose 설치

 

 

댓글