Docker Docker Compose 문법 정리

황제낙엽 2024.01.29 07:20 조회 수 : 4

sitelink1  
sitelink2  
sitelink3  
extra_vars6  

공식 문서로 서비스, 컨테이너, 이미지와 설정 키워드들의 의미를 찾아보려했는데 시스템에 대한 너무나 방대한 내용들로 인해 포기했다.

국내 유저들중 설정 키워드를 요약한 사람들의 포스팅들을 참고해서 나만의 사전으로 요약해보았다.

 

Dockerfile 이란

이미지 설정 파일이다.

dockerfile을 이용하여 컨테이너를 빌드한다.

컨테이너 이미지를 생성 할 수 있는 고유의 지시어를 가지며, 주로 가독성을 위해 대문자를 사용한다.

 

Docker Compose 란

컨테이너의 수가 많아질 경우, 모든 명령을 CLI로 하는 것은 복잡하고 어려워지기 때문에, 

yaml 파일을 이용하여 컨테이너들의 실행 순서등을 자동화하여 관리할 수 있는 프로그램이다.

dockerfile 이 이미지 빌드(이미지 설계도)라면 docker-compose 는 container 구동에 대한 정보와 Image 들의 연결 정보를 구성하여 하나의 서비스로 관리한다. 

 

YAML의 기본 문법

    1. # : 라인의 첫문자로 지정하면 해당 라인을 주석 처리한다.

    2. --- : 문서의 시작을 의미한다. (option)

    3. ... : 문서의 끝을 의미한다. (option)

    4. key : 딕셔너리 자료형의 키와 동일한 개념

    5. value : 딕셔너리 자료형의 벨류와 동일한 개념

 

Docker-Compose 설정 키워드 정리

    version : docker compose 의 파일 포맷 버전 명시 ( 버전에 따라 지원하는 문법이 달라진다 )

    services : 서비스할 컨테이너 목록 명시 (한개 또는 여러개)

        container : 컨테이너의 식별 아이디

            image : 컨테이너 이미지 경로

              > docker hub 의 이미지를 지정 할 수 있다

            restart : 컨테이너가 다운되었을때 재시작하는 설정

              > unless-stopped : 명시적으로 중지되거나, Docker 자체가 중지되는 경우 재시작한다

            command : 컨테이너에서 실행될 명령어를 지정        

            container_name

              > 컨테이너 이름

              > docker-compose.yml 파일로 docker container를 만들 때, 해당 컨테이너 이름을 설정할 수 있다.

              > ex. container_name : appcontainer

            environment

              > 컨테이너에 적용할 환경 변수

              > dockerfie의 ENV 옵션과 동일하다

              > 패스워드 등의 보안을 위한 방법으로 env_file 옵션을 지정하면 환경변수 값이 들어있는 파일을 읽을 수도 있다.

            networks

              > 해당 컨테이너가 사용할 네트워크

              > docker container 간의 네트워크 분리를 위해 추가로 설정을 한다. (옵션) 

            port

              > 해당 컨테이너가 사용할 포트

              > docker run 명령의 -p 옵션과 동일

            links

              > docker run 명령의 -link 옵션과 유사한 기능

              > 컨테이너간 연결- 컨테이너명

              > ex. - "db:mysqldb" (app 컨테이너가 db 컨테이너로 접속할 때 'mysqldb' 라는 이름을 사용하겠다는 의미)

              > 특정 docker container 내부에서 다른 docker container에 접속하고 싶을 때 사용한다.

            expose : 링크로 연계된 컨테이너에게만 공개할 포트

            volumes : 볼륨 마운트

            build

              > docker image를 Dockerfile 기반으로 작성 시 사용한다.

              > context는 Dockerfile이 있는 디렉토리를 의미하며 dockerfile은 Dockerfile의 파일명을 의미한다.

            depends_on

              > depend_on을 사용하여 컨테이너가 실행되는 순서를 제어할 수 있다.

              > 여러 개의 docker container를  Docker Compose로 실행할 경우, 

                 각 컨테이너가 실행되는 시점이 다르기 때문에 특정  컨테이너가 시작하자마자 

                 바로 다른 컨테이너에 접속하면 경우에 따라서는 접속할 수 없는 상황이 발생한다.

                 (ex. 다른 컨테이너가 아직 실행되지 않은 경우)

                 이때 사용하는 옵션이다.

              > depend_on도 컨테이너가 실행되는 순서만 제어할 뿐 해당 컨테이너들이 완전히 실행되기까지의 준비상태가 되는 것은 제어할 수 없다.

    volumes :  볼륨 명세

    networks : 네트워크 명세

 

 

References

  • https://blog.naver.com/chumk93/223090105011
  • https://blog.naver.com/sjc02183/222929461853
  • https://unpasoadelante.tistory.com/197
  • https://nirsa.tistory.com/80

 

 

 

 

번호 제목 sitelink1 글쓴이 날짜 조회 수
20 [bard] docker로 실행한 container에 터미널로 접속   황제낙엽 2024.02.01 0
19 [2023. 11. 6.] 데이터베이스, GUI 클라이언트 환경의 Docker Compose 모음 https://blog.pages.kr/2819  황제낙엽 2024.01.29 6
» Docker Compose 문법 정리   황제낙엽 2024.01.29 4
17 Docker Compose 명령어(실행,중지,삭제) https://docs.docker.com/compose/reference/  황제낙엽 2024.01.28 0
16 Docker Compose 에 대한 이해와 사용법에 대한 포스팅 모음 https://docs.docker.com/compose/gettingstarted/  황제낙엽 2024.01.26 1
15 Kubernetes 와 Docker 의 관계   황제낙엽 2024.01.26 0
14 docker 를 windows 에서 실행하는 방법 3가지 정리   황제낙엽 2024.01.23 3
13 windows + docker 설치에 대한 포스팅 모음   황제낙엽 2024.01.22 2
12 도커(Docker)란 무엇이고, 왜 사용하나요? https://blog.naver.com/wishket/222372539613  황제낙엽 2021.07.03 14
11 [Raspberry pi 3] docker-compose.yml 파일을 활용해 docker container 관리 효율성 높이기 file https://cafe.naver.com/stsmarthome/16737  황제낙엽 2020.08.26 54
10 [Docker] docker private registry on raspberry pi (https private registry, letsencrypt standalone auth) secret https://bloodguy.tistory.com/entry/Docke...spberry-pi  황제낙엽 2020.07.17 0
9 [Docker] private registry 설치/운용, OpenSSL, S3 저장소 이용, Authentification 추가 secret https://novemberde.github.io/2017/04/09/...try_0.html  황제낙엽 2020.07.17 0
8 [Docker] 도커 레지스트리: 프라이빗 도커 이미지 저장소(설치부터 S3 연동까지) secret https://www.44bits.io/ko/post/running-do...s3-storage  황제낙엽 2020.07.17 0
7 [Docker] docker private registry(도커 사설 레지스트리)에 대하여 https://www.44bits.io/ko/post/running-do...s3-storage  황제낙엽 2020.07.17 19
6 [Docker] Portainer for local Docker environments on Windows 10 file https://lemariva.com/blog/2018/05/tutori...windows-10  황제낙엽 2020.07.14 25686
5 Virtualbox : VT-x is not available 오류 조치 방법 file http://blog.naver.com/PostView.nhn?blogI...1315290857  황제낙엽 2020.07.14 13
4 Ubuntu+Docker+Node.js (Hello World) file   황제낙엽 2020.07.12 90
3 [Docker기초] 명령어 리스트 https://blog.naver.com/pjt3591oo/221350092204  황제낙엽 2020.07.11 200
2 cURL, Docker, Portainer 설치 file https://docs.docker.com  황제낙엽 2020.07.11 16
1 [Docker] Docker, Portainer 입문용 블로그 링크 http://blog.naver.com/kidninja  황제낙엽 2020.07.07 17