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 글쓴이 날짜 조회 수
235 Step by step on how to Configure multiple concurrent RDP clients to run SambaPOS (IPHONE ,IPAD, Galaxy tablet) file http://forum.sambapos.com/t/step-by-step...tablet/769  황제낙엽 2016.01.01 43378
234 [Docker] Portainer for local Docker environments on Windows 10 file https://lemariva.com/blog/2018/05/tutori...windows-10  황제낙엽 2020.07.14 25686
233 우분투(Ubuntu)에서 root로 전환후 비밀번호 변경 file   황제낙엽 2020.07.12 17255
232 [윈도우 원격데스크톱] 사용자 계정에 원격 로그인 권한이 없기 때문에 연결이 거부되었습니다 file http://zetawiki.com/wiki/%EC%82%AC%EC%9A...8%EB%8B%A4  황제낙엽 2016.07.23 9740
231 [RDP Wrapper1.6]윈도우10 에서 멀티 세션으로 원격 접속하기 secret https://github.com/stascorp/rdpwrap/releases  황제낙엽 2015.11.25 8395
230 C:\Temp\AUtempR 폴더의 정체   황제낙엽 2017.04.17 6193
229 윈도우10 업데이트 끄기 설정하는 방법 file http://cafe.naver.com/wese1245/496  황제낙엽 2017.12.11 3702
228 BAT 파일에 접근 권한 부여하기 (cacls) file http://cecildesk.tistory.com/entry/Windo...0%EB%95%8C  황제낙엽 2017.11.07 2033
227 원격 데스크톱 (RDP) 연결시 알 수 없는 인증 오류 file   황제낙엽 2017.04.19 1986
226 작업 스케줄러 실행 오류 (2147943712) file   황제낙엽 2017.11.27 1704
225 remote 원격 접속시 인증 오류 (CredSSP 암호화 Oracle 수정 때문일 수 있습니다) file https://support.microsoft.com/ko-kr/help...ch-13-2018  황제낙엽 2018.05.31 1439
224 VirtualBox 에서 게스트들끼리 내부 네트워크 연결 file http://frontjang.info/645  황제낙엽 2016.06.13 1265
223 네트워드라이브로 파일질라(FileZilla Server)로 구성한 FTP서버 접속시 디렉토리 목록 조회 실패가 된다면 file   황제낙엽 2016.01.01 1067
222 64bit x86 PC Window {우분투 리눅스 (QEMU로 arm64 커널을 에뮬레이션)} file http://jake.dothome.co.kr/qemu/  황제낙엽 2018.11.27 994
221 윈도우 계정 관리 명령어 NET USER http://www.atmarkit.co.jp/ait/articles/0609/02/news014.html  황제낙엽 2016.12.09 989
220 ttyname failed 오류 처리방법 file http://bemeal2.tistory.com/119  황제낙엽 2018.06.13 941
219 [윈도우10] '이 항목을 찾을 수 없습니다'라고 뜨면서 폴더삭제가 안 돼요 https://kin.naver.com/qna/detail.nhn?d1i...jemg%3D%3D  황제낙엽 2018.08.07 906
218 defaultuser0 <- 수상한 계정 file https://answers.microsoft.com/en-us/wind...9cd?auth=1  황제낙엽 2019.07.22 877
217 암호가 암호 정책 요구 사항에 맞지 않습니다 file   황제낙엽 2016.07.23 862
216 Windows server 2012 MSCS 구축하기_ 1.AD서버 만들기 file http://opendatabase.tistory.com/entry/Wi...4%EA%B8%B0  황제낙엽 2016.05.24 745