2 minute read

일지

아 의욕없어.. 뭐가문제지

주요 키워드

Docker-compose

오늘의 할일

  • 220512 TIL 작성
  • AWS 스터디 진행
  • 쿠버네티스 사전준비

추가로 정리해야할 부분

수업 정리


docker compose
멀티 컨테이너 환경에서 사용
컨테이너를 구동하기 위한 구성 정보를 코드로 관리
docker-compose.yml
docker compose 주요 기능
컨테이너간의 의존관계 설정
멀티 컨테이너, 다수의 컨테이너를 일괄 관리
코드 형태로 관리 - IaC, DevOps

docker-compose completion 설정
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose




docker-compose.yml
docker compose가 사용하는 세부적인 내용이 기술된 코드
기본 구조
version: 현재 docker-compose 문서의 버전.  Docker Engine과 연관
services: 구동할 컨테이너에 대한 상세한 명세
networks: 생성할 네트워크에 대한 정보
volumes: 생성할 볼륨의 정보
docker-compose.yml 세부 규격
compose-spec/spec.md at master · compose-spec/compose-spec · GitHub
예시
version: ‘3.8’
services:
  (서비스에 대한 내용)
networks:
  (생성할 네트워크에 대한 내용)
volumes:
  (생성할 볼륨에 대한 내용)


services 내부 항목
image: 사용할 이미지의 이름
build: Dockerfile을 지정하여 빌드를 수행하여 이미지 지정
context: 빌드할 Dockefile의 위치정보
dockerfile: 변경된 Dockerfile의 이름
arg: 사용할 변수 설정
command : 이미지의 CMD 대신 넣을 항목
list 형식으로 작성
entrypoint : 이미지의 ENTRYPOINT 대신 넣을 항목
list 형식으로 작성
links : 컨테이너의 연결정보를 지정
ports: 포트포워딩 설정
list 형식으로 작성
“<호스트포트>:<컨테이너포트>”
expose: 노출할 포트 설정 지정
list 형식으로 작성
“<컨테이너포트>”
depends_on : 컨테이너의 의존관계 지정
list 형태로 지정
해당 서비스가 구동된 이후에 현재 서비스를 구동
environment : 환경변수 지정
list 형식으로 작성
<변수명>=<값>
<변수명>: <값>
env_files: 변수가 저장된 파일로부터 변수를 읽어옴
container_name: 컨테이너명 지정
지정하지 않을 경우 <디렉토리명>-<서비스명>-<번호>
volumes: 사용할 볼륨 지정
list 형식 사용
Bind Mount, Docker Volume 모두 사용 가능
사용할 볼륨은 최상위 volumes 항목으로 생성한 것 사용 가능
networks: 사용할 네트워크 지정
list 형식 사용
사용할 네트워크는 최상위 networks 항목으로 생성한 것을 사용 가능
따로 networks 항목을 지정하지 않을 경우, 기본 bridge 네트워크 생성 사용


docker-compose.yml 예시
version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
version: '3'
services:
  ubuntu:
    build:
      context: .
      dockerfile: Dockerfile
version: '3'
services:
  ubuntu:
    image: ubuntu
    command:
      - sleep
      - infinity
version: '3'
services:
  ubuntu:
    image: ubuntu
    command:
      - sleep
      - infinity

  centos:
    image: centos
    links:
      - ubuntu:test
    depends_on:
      - ubuntu
version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:



docker-compose 명령어 서브커맨드
up: 컨테이너 생성 및 구동
-d, --detach: 백그라운드 실행
--no-deps: 실행 시 의존관계에 무관하게 실행
--build: 무조건 빌드 수행
--no-build: 빌드 수행하지 않음
--scale: 스케일 조정
ps: docker compose 로 실행된 컨테이너 상태 확인
-a, --all: 중지된 컨테이너도 함께 확인
-q, --quiet: 출력 정보 간소화
--format : 출력형식 (json,pretty)
logs: 컨테이너 로그 출력
-f, --follow: 로그 지속 출력 (중지되지 않음)
--since, --until : 로그 출력 기간 지정
--tail: 최종 n개의 로그 출력
run : 컨테이너에서 명령 실행
start : 컨테이너 시작
stop : 컨테이너 중지
restart : 컨테이너 재시작
pause / unpause : 일시중지/재개
down : 컨테이너 중지 및 삭제
kill : 컨테이너 강제 중지
--signal : 전송할 신호 종류
rm : 컨테이너 삭제
-f, --force : 질문하지 않고 삭제
-s, --stop : 컨테이너 중지 후 삭제
down: 컨테이너 중지 및 삭제
-rmi : 이미지 삭제 정책 지정
all: 모든 이미지 삭제
local: 특정 태그를 지정하지 않은 이미지 삭제
-v, --volume: 사용한 볼륨 삭제

Categories:

Updated:

Leave a comment