카테고리 없음

docker-compose 자주 사용되는 명령 (이전 완료)

ㅈ현 2022. 6. 20. 16:01

docker-compose는 여러개의 컨테이너를 한번에 다루기 위한 서비스로써, yml파일을 통해 설정한다.

example

 

version: '3'

services:
  db:
    image: jhkimdocker/jhmaria:v1_onlypw
    ports:
      - "13306:3306"

  app:
    build: 
      context: ./
      dockerfile: ./Dockerfile_flask
    depends_on:
      - db
    ports:
      - "5010:5000"
    environment:
      - SOME_ENV1=1
      - SOME_ENV2=2
      - SOME_ENV3=3
    command: python hello_world.py

 

version 

버전을 명시한다.
위처럼 ‘3’만 적게되면, 3.x버전을 사용하겠다는 의미다.

service 

compose에서의 컨테이너 단위이다.
컨테이너 대신 서비스라는 명칭을 사용함. 위의 예시에서는 db라는 서비스와, app이라는 서비스가 있다.

image 

베이스 이미지를 지정한다.
db서비스는 jhkimdocker/jhmaria:v1_onlypw 이미지를 사용한다.

build 

  • context : 컨텍스트(Dockerfile이 포함된 디렉토리의 경로)에 대한 경로 지정
  • dockerfile : 빌드에 사용할 대체 dockerfile 지정
  • args : ARG값전달 인수 전달
    • boolean값은 (“true”, “false”, “yes”, “no”, “on”, “off” ) 의 형태로 사용한다.

command 

컨테이너가 실행될때 실행할 명령 app 서비스는 hello_world.py를 실행한다.

container_name 

컨테이너가 생성될때 사용자 지정 컨테이너 이름을 지정한다.

depends_on 

서비스간 종속성을 표현한다.

services:
  flask:
    ...
    depends_on:
      - mariadb
  mariadb:
    ...
 

예시로 flask와 mariadb 두개의 컨테이너를 사용하는 프로그램이 있다고 가정하자
이 프로그램은 mariadb가 설정된 후 flask가 실행되어야 하므로

depends_on을 다음과 같이 사용하여 시작, 종료될때 의존관계를 맞춰줄 수 있다.

entrypoint 

기존 entrypoint를 재정의한다.

env_file 

파일에서 환경 변수파일를 추가한다.

environment 

환경 변수를 추가한다

expose 

내부 포트를 지정한다. 외부와의 연결이 아니라 호스트OS에 알리지 않는다.
컨테이너 - 컨테이너 통신이 필요한 경우에 사용한다.
이 포트로는 호스트에서 접근이 불가능하다

compose 내부 컨테이너가 아니라 compose 외부 서비스와 연결을 위해 쓰인다

external_links:
  - 외부 컨테이너

ports 

노출할 포트를 지정한다.

ports:
  - "5900:900"
==========================
ports:
  - target: 90
    published: 9090
    protocol: udp
    mode: host

두가지 방법이 있다.
default는 tcp이다.

volumes 

호스트와 마운트할 경로를 지정한다

volumes:
  - "/var/lib:/tmp"   
  # 호스트의 /var/lib 과 컨테이너의 /tmp를 마운트 시킨다

  - "our-vol:/var/lib/mysql" 
  # our-vol이란 볼륨과, 컨테이너의 /var/lib/mysql을 마운트 시킨다

======================================================
volumes:
  - type: volume 		# 볼륨과 마운트 한다
    source: our-vol 	# 볼륨 이름은 our-vol
    target: /var/lib/mysql		# /var/lib/mysql 디렉토리와 마운트

  - type: bind			# 바인드 방식을 사용
    source: /var/lib	# 호스트의 디렉토리
    target: /tmp		# 컨테이너의 디렉토리
  • type: 마운트 타입 volume, bind, tmpfs, npipe
  • source: 마운트 소스 (호스트 소스)
  • target: 마운트될 컨테이너 경로

docker-compose 명령어

docker-compose up 

docker-compose up [OPTIONS]

docker-compose up [OPTIONS]


docker-compose.yml 파일의 내용에 따라 빌드, 실행한다.
[OPTIONS]

  • -d : detatch 모드로 실행한다
  • –force-recreate : 컨테이너를 지우고 새로 만든다
  • –build : 이미지를 새로 만든다

docker-compose ps 

docker-compose ps


서비스의 상태를 보여준다 

두개의 컨테이너가 실행되고 있는 상태

docker-compose start/stop 

서비스를 멈추거나, 멈춰있는 서비스를 실행시킨다.

docker-compose down 

서비스를 내린다(지운다).

docker-compose exec 

docker-compose exec [service] [comamnd]

실행중인 컨테이너에서 명령을 실행한다.