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 [bard] docker로 실행한 container에 터미널로 접속   황제낙엽 2024.02.01 0
234 [2023. 11. 6.] 데이터베이스, GUI 클라이언트 환경의 Docker Compose 모음 https://blog.pages.kr/2819  황제낙엽 2024.01.29 5
» Docker Compose 문법 정리   황제낙엽 2024.01.29 4
232 Docker Compose 명령어(실행,중지,삭제) https://docs.docker.com/compose/reference/  황제낙엽 2024.01.28 0
231 Docker Compose 에 대한 이해와 사용법에 대한 포스팅 모음 https://docs.docker.com/compose/gettingstarted/  황제낙엽 2024.01.26 1
230 Kubernetes 와 Docker 의 관계   황제낙엽 2024.01.26 0
229 docker 를 windows 에서 실행하는 방법 3가지 정리   황제낙엽 2024.01.23 3
228 windows + docker 설치에 대한 포스팅 모음   황제낙엽 2024.01.22 2
227 윈도우 10 실행키 입력 명령어 목록 (Windows + R) https://haenny.tistory.com/217  황제낙엽 2023.07.12 48
226 윈도우 10 "원격 데스크톱"의 "컴퓨터 목록" 정보 저장 위치 (from Bing)   황제낙엽 2023.07.11 3
225 compress this drive to save disk space (이 드라이브를 압축하여 디스크 공간 절약)   황제낙엽 2023.05.09 26
224 명령어 모음   황제낙엽 2023.05.06 0
223 윈두우키 단축 기능 몇가지   황제낙엽 2023.04.01 1
222 NtLmSsp 로그온 프로세스의 감사 실패 대응 file https://cafe.naver.com/peopleofit/61283?...qkVZQqshzw  황제낙엽 2022.11.19 4
221 robocopy 몇가지 옵션   황제낙엽 2022.09.25 3
220 (Windows 10) 프로그램 제거 또는 변경   황제낙엽 2022.09.15 6
219 최대 절전에서 자꾸 활성화되는 윈도우   황제낙엽 2022.08.16 6
218 자격 증명 관리자 (Credential Manager, 資格情報) file https://support.microsoft.com/ko-kr/wind...16e8165ac0  황제낙엽 2022.04.15 20
217 [RDP Wrapper Library v1.6.2] Windows 10 Pro 20H2에서 not supported issue file https://reevid.github.io/rdpwrapper/rdp-wrapper-issue/  황제낙엽 2022.04.08 122
216 이더넷 사용 안하도록 설정하는 명령어 (How to Disable a Network Adapter in Windows 10) file https://winaero.com/disable-network-adapter-windows-10  황제낙엽 2022.03.23 37