★ 주의사항 - tab키 절대 사용 금지. 들여쓰기의 크기가 반드시 동일 해야 하기때문. 어길시 오류발생.
★ 주의사항 - 콜론(:) 뒤에 단어 붙여쓰기 금지. 인식 불가로 인한 오류발생.
=====Top level 4가지(들여쓰기 금지)=====
version: () - 지원 버전을 확인 services: (docker container) - 컨테이너의 설정을 확인. volumes: (docker volume) - 도커 볼륨에 대한 설명. networks: (docker network) - 도커 네트워크에 대한 설명.
이렇게 크게 4가지를 잡고 도커컴포즈 파일을 생성.
사용할려면 `docker-compose.yml` 상단에 사용할 compose file format의 버전을 명시.
버전별 특징
1. docker-compose up # 서비스와 관련된 컨테이너 생성 그리고 시작 2. docker-compose down # 서비스와 관련된 컨테이너 종료 후 제거 3. docker-compose start/stop/restart # 서비스 관련 컨테이너 시작 / 종료 / 재시작 4. docker-compose kill # 실행 중인 컨테이너에 SIGKH 시그널을 통해서 강제 종료 5. docker-compose pause/ unpause # 컨테이너 정지 /재가동 6. --build # 컨테이너를 생성하기 전에 이미지를 빌드한다.
-d | 백그라운드 실행 |
–no-deps | 링크 서비스 실행하지 않음 |
–build | 이미지 빌드 |
-t | 타임아웃을 지정(기본 10초) |
구분 | 내용 | 명령어 순위 |
version : | 버전 지정 | 최상위 |
services : | 서비스 정의 | 최상위 |
volumes : | 컨테이너에 볼륨 Mount | 최상위 |
build : | 빌드 환경 설정 | service의 하위 |
context : | Dockerfile 이 있는 디렉토리 지정 | build의 하위 |
dockerfile : | Dockerfile의 이름이 다를경우 설정 | build의 하위 |
image : | 이미지 지정 | build의 하위 |
command : | container 에서 작동하는 명령 | service의 하위 |
entrypoint : | container 에서 작동하는 명령 | service의 하위 |
environment : | 컨테이너 안 환경변수 설정 | service의 하위 |
container_name : | 컨테이너 이름 설정 | service의 하위 |
links : | 다른 컨테이너와 연결 | service의 하위 |
ports : | Host 에 컨테이너가 공개하는 포트지정 | service의 하위 |
expose : | 컨테이너끼리 공개하는 포트 지정 | service의 하위 |
1. hgkim@LAPTOP-266L93S4:/usr/bin$ sudo mkdir DockerCompose # Docker가 있는 디렉토리에 DockerCompose디렉토리 생성.
2. hgkim@LAPTOP-266L93S4:/usr/bin/DockerCompose$ sudo vi Dockerfile # DockerCompose디렉토리로 이동후 도커파일 생성 및 작성.
FROM 만들 이미지 파일 (이미지이름:버전) # FROM 필수. 추가적으로 필요한 명령어
3. hgkim@LAPTOP-266L93S4:/usr/bin/DockerCompose$ sudo vi docker-compose.yml # DockerCompose디렉토리에 도커컴포즈 파일 생성 및 작성.
### docker-compose.yml version: "3.9" #버전 services: #컨테이너 설정 apserver: #만들 서비스 이름 build: #변경사항이 많아 Dockerfile을 빌드해야할 경우 이용 context: . #Dockerfile의 위치. '.'은 현재 디렉토리 ports: #Port포워딩할 포드범위 - '22:22' - '7100-7110:7100-7110' - '80:80' - '8080:8080' user: root privileged: true #기본적으로는 Unprivileged모드로 실행되며, 이 모드에서는 시스템 주요 자원에 접근할 수 있는 권한이 부족하여, 특정시스템 자원에 접근하기 위해 모드 변경. container_name: rsa_server #생성될 컨테이너 이름.
4. docker-compose up -d --build # 도커컴포즈 실행시 도커파일을 빌드 후 백그라운드 실행) 5. docker exec -it 컨테이너명 /bin/bash # 컨테이너 실행.