Skip to content

Instantly share code, notes, and snippets.

@CEOmurky
Last active October 22, 2019 02:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CEOmurky/3318e20bdc42d644b9cb50c15d022c39 to your computer and use it in GitHub Desktop.
Save CEOmurky/3318e20bdc42d644b9cb50c15d022c39 to your computer and use it in GitHub Desktop.
Docker

docker-compose 도커 컴포즈

version

compose에서 각 버전에 따른 차이점을 제공해준다. 공식 홈페이지 대부분의 경우엔 version을 '3'으로 픽스해서 사용(현재 2019년 11월버전 기준)

예제

서비스 단위로 묶어서 docker run을 실행

services:
    ent:
        image: ent/dev:1.0 # 사용할 이미지
        container_name: development-ent # 해당 컨테이너의 이름
        environment:
            TZ: 'Asia/Seoul' # 환경 변수 설정
        ports: # 사용할 포트 -p와 같음
            - '2028:8888'
            - '2023:7022'
            - '2022:22'
        expose: # 위의 포트를 한번더 등록
            - '8888'
            - '7022'
            - '22'
        volumes: # volume을 통해 local에 데이터를 남김
            - develop:/usr/develop
            
          
volumes:
    develop: # 반드시 위에 volues의 : 이전 이름과 맞춰야 함
        driver: local # 로컬에서 사용함
        driver_opts:
            type: none
            o: bind
            device: /Users/moon/Develop/tutorials/docker/ent/data # 위에서 usr/develop의 경로를 나는 이 경로에서 사용

volumes란

데이터를 local에 저장하거나 다른 컨테이너와 공유하기 위해서 사용

  • server (nodeJS, django)
  • DB
services:
  db:
    ...
    volumes:
      - ./docker/data:/var/lib/postgresql/data
      
  django:
    depends_on:
      db:
        condition: service_healthy
    links:
      - db
    volumes:
      - ./:/app/

참고 도커 컴포즈 사용법

도커 기본

도커 이미지, 컨테이너

  • 이미지는 해당 도커를 dockerfile로 만든 이미지를 말함 (공유 가능)
  • 이미지 자체로 운영체제를 공유하는 경우가 있음
  • 이미지를 통해 run을 하고 attach된 상태에서 여러 앱을 깔고 dockerfile로 이미지를 빌드하고 공유할 수 있음

  • 컨테이너는 VM의 단위와는 다른 개념

명령어

  • docker ps: 현재 실행중인 컨테이너 확인
  • docker ps -a: 종료된 컨테이너를 포함하여 전체 컨테이너 확인
  • docker pull: 이미지 다운로드 ex) docker pull ubuntu:12.04
  • docker run {image}: 해당 도커 이미지로 컨테이너 생성 및 실행
  • docker attach {containerID}: 해당 도커 컨테이너에 접속
  • docker exec -it {containerID} bash: bash 상태로 접속
  • docker inspect CONTAINER_ID: 도커 정보 확인
  • docker build -t {name:version} ./
  • docker-compose -f {path ./} up -d

  • run 옵션들
    • -p 호스트 포트:컨테이너포트 ex) 4444:5555 컨테이너의 5555포트를 호스트의 4444로 바
    • rm: 종료시 추가된 파일을 삭제함

버전 관리

  • docker diff {containerID}: 기존에 pull 받아서 바로 실행했던 image와 어떤 것이 차이가 있는지 알 수 있음
  • docker commit {containerID} {만들 태그}: 해당 이름으로 새로운 버전의 image를 만듦
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment