728x90
반응형
본 문서는 Docker Compose에 대한 예제를 계속 기록하면서 사용방법에 대해 작성한다.
Docker Compose 란?
여러 개의 컨테이너가 하나의 애플리케이션으로 동작하는 구조에서 하나의 컨테이너를 run 명령어로 여러 번 실행시켜 컨테이너를 시작할 수 있지만 YAML 파일에 여러 개의 컨테이너의 실행 절차를 정의하여 컨테이너를 실행시키는 환경을 Docker가 제공한다. 이를 Docker Compose라고 한다.
Docker Compose 설치
$ sudo curl -L <https://github.com/docker/compose/releases/download/{설치버전}/docker-compose-`uname> -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
github에서 간단하게 다운로드가 가능하다. 설치 버전은 아래 링크를 참고한다.
Releases · docker/compose
Define and run multi-container applications with Docker - docker/compose
github.com
Docker Compose 명령어
docker-compose 명령어의 사용법은 엄청 간단하다.
$ sudo docker-compose -f [파일경로] up -d
-f 옵션으로 파일경로를 지정할 수도 있고 -f 옵션이 없다면 pwd 명령어(현재 경로)에 존재하는 docker-compose.yml 파일을 가리킨다.
up 은 컨테이너를 up (실행) 하겠다는 의미이다.
그와 반대로 down은 올렸던 컨테이너를 내린다는 의미이다.
Docker Compose 작성법
앞으로 새로운 지식이 쌓일 때마다 아래의 Docker Compose 작성법을 계속 업데이트할 예정이다.
예제 형식으로 YAML 파일만 작성할 것이다.
YAML 파일은 크게 4가지 버전, 서비스, 볼륨, 네트워크 정의로 이루어진다.
version: '3.1'
services:
dike-jenkins:
image: redjoon10/jenkins-base:0.0.1
container_name: dike-jenkins
ports:
- "48888:8080"
privileged: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dike-jenkins:/var/jenkins_home
user: root
environment:
- TZ="Asia/Seoul"
networks:
- dike
networks:
dike:
driver: bridge
version: | compose 파일의 버전을 명시하는 것이며, "1" 버전은 현재 사용하지 않는다. 버전은 Docker Engine에 따라 호환성을 보이는 것이기에 버전 확인 페이지를 참고한다. |
- services: | 서비스를 정의한다. |
- dike-jenkins: | 정의하려는 서비스 이름 |
- image: | 컨테이너를 생성할 때 사용할 이미지 ( [저장소이름]/[이미지이름]:[태그] ) 형식을 따라간다. |
- container_name: | 생성하려는 컨테이너 이름 |
- ports: | 포트 바인딩 정보 |
- privileged: | 호스트 서버의 시스템 자원 접근 권한 설정 ( Default : false ) |
- volumes: | 마운트 하려는 볼륨 /var/run/docker.sock를 마운트 한다면 컨테이너에서 docker.io가 설치 되어있는지 확인해야함. |
- user: | docker run으로 컨테이너를 실행 시키면 일반적으로 root로 실행된다. root로 실행되면 docker에서 작성하는 파일들이 모두 root권한으로 작성이 된다. user: 설정으로 컨테이너 실행 시 어떤 사용자권한으로 실행할지 정의가 가능하다. 단 Image에 해당 사용자가 존재해야하므로 Dockerfile이나 미리 image에 구성해야한다. |
- environment: | 컨테이너에 설정한 환경변수 값을 정의한다. |
- networks: | 네트워크를 지정할 수 있다. 단 network가 어떤 driver를 지니고 있는지 따로 설정 해주어야한다. |
networks: | 네트워크 정보를 정의한다 |
- dike: | dike 네트워크를 정의한다. |
- driver: | dike 네트워크의 드라이버가 어떤 것인지 정의한다. docker에서 create한 네트워크 같은 경우 기본 bridge 드라이버 이다. |
728x90
반응형
'Linux > Docker' 카테고리의 다른 글
[Docker] Dockerfile Docs - 나만의 문서. (0) | 2022.06.24 |
---|