[docker] 도커 컴포즈 실행 By starseat 2023-01-30 14:36:02 server/oss Post Tags # 도커 컴포즈 커맨드 - `docker-compose` 명령 사용 - `up`, `down` 두 가지를 주로 사용하고 `stop` 도 가끔 사용함. ## docker-compose up - 컨테이너와 주변 환경 생성 - 컴포즈 파일의 내용을 따라 컨테이너와 볼륨, 네트워크를 생성하고 실행 - 컴포즈 파읠의 경로는 `-f` 옵션을 사용해 지정 ```text // docker-compose -f {정의 파일 경로} up {옵션} docker compose -f /home/tester/docker/docker-compose.yml up -d ``` - 옵션 정보 | 옵션 | 내용 | | -- | -- | | -d | 백그라운드 실행 | | --no-color | 화면 출력 내용을 흑백으로 지정 | | --no-deps | 링크된 서비스를 실행하지 않음 | | --force-recreate | 설정 또는 이미지가 변경되지 않도록 컨테이너를 재생성 | | --no-create | 컨테이너가 이미 존재할 경우 다시 생성하지 않음 | | --no_build | 이미지가 없어도 이미지를 빌드하지 않음 | | --build | 컨테이너를 실행하기 전에 이미지 빌드 | | --abort_on_container_exit | 컨테이너가 하나라도 종료되면 모든 컨테이너를 종료 | | -t, --timeout | 컨테이너를 종료할 때의 타임아웃 설정 (default: 10 초) | | --remove_orphans | 컴포즈 파일에 정의되지 않은 서비스의 컨테이너 삭제 | | --sacle | 컨테이너 수 변경 | ### 현재 작업 디렉터리를 컴포즈용 디렉터리로 지정 - 먼저 작업 디렉터리로 이동 ```text cd /home/tester/docker ``` - 컴포즈용 디렉터리로 지정 ```text docker-compose up -d ``` ## docker-compose down - 컨테이너와 네트워크 종료 및 삭제 - 볼륨과 이미지는 삭제되지 않음. - `up` 과 마찬가지로 컴포즈 파일의 경로는 `-f` 옵션으로 지정 ```text docker-compose -f {정의 파일 경로} down {옵션} ``` - 옵션 | 옵션 | 내용 | | -- | -- | | --rmi 종류 | 삭제 시 이미지도 삭제종류를 all로 지정하면 사용했던 모든 이미지가 삭제 됨.`local`로 지정하면 커스텀 태그가 없는 이미지만 삭제 | | -v, --volumes | volumes 항목에 기재된 볼륨 삭제단, external로 지정된 볼륨은 삭제되지 않음 | | --remove-orphans | 컴포즈 파일에 정의되지 않은 서비스의 컨테이너도 삭제 | ## docker-compose stop - 컨테이너 종료 - `up` 과 마찬가지로 컴포즈 파일의 경로는 `-f` 옵션으로 지정 ```text docker-compose -f {정의 파일 경로} stop {옵션} ``` ## 주요 커맨드 목록 | 커맨드 | 내용 | | -- | -- | | **up** | 컨테이너를 생성하고 실행 | | **down** | 컨테이너와 네트워크를 종료하고 삭제 | | ps | 컨테이너 목록 출력 | | config | 컴포즈 파일을 확인하고 내용 출력 | | port | 포트 설정 내용 출력 | | logs | 컨테이너가 출력한 로그 내용을 화면에 출력 | | start | 컨테이너 시작 | | **stop** | 컨테이너 종료 | | kill | 컨테이너 강제 종료 | | exec | 명령어 실행 | | run | 컨테이너 실행 | | create | 컨테이너 생성 | | restart | 컨테이너 재실행 | | pause | 컨테이너 일시 정지 | | unpause | 컨테이너 일시 정지 해제 | | rm | 종료된 컨테이너 삭제 | | build | 컨테이너에 사용되는 이미지를 빌드 혹은 재빌드 | | pull | 컨테이너에 사용되는 이미지를 내려받음 | | scale | 컨테이너 수 지정 | | events | 컨테이너로부터 실시간 이벤트 수신 | | help | 도움말 화면 출력 | # 도커 컴포즈로 실행한 컨테이너의 이름과 스케일링 ## 컨테이너 이름 - 도커 컴포즈로 실행한 컨테이너도 도커 엔진을 통해 관리 가능 - 도커 컴포즈로 실행하였을 경우 **컨테이너의 이름은 임의로 결정** 됨. - `com_folder` 디렉터리에 둔 컴포즈 파일을 사용해 `penguin` 이름의 컨테이너를 생성하면 - `com_folder_penguin_1` 과 같이 디렉터리 이름과 번호가 붙음 - `ps` 커맨드를 사용해 컨테이너의 실제 이름 확인 해야함. ## 스케일링 - com_folder_penguin_1, com_folder_penguin_2, com_folder_penguin_3 같이 3개의 컨테이너 실행 예 ```text docker-compose -f /home/tester/docker/com_folder/docker-compose.yml up --scale peguin=3 ``` # 실습 - 네트워크 생성 > MySQL 컨테이너 생성 > 워드프레스 컨테이너 생성 > 확인 > 삭제 ## 생성 - [[docker] 도커 컴포즈 실습](https://starseat.net/blog/view/127) 에서 작성한 `docker-compose.yml` 사용 ```text docker-compose -f /home/tester/docker/docker-compose.yml up -d ``` ## 확인 - 명령어로는 `docker-compose ps` 로 확인 - 웹 브라우저에서 `http://localhost:8085` 에 접근해 워드프레스 초기 화면 확인 ## 삭제 ```text docker-compose -f /home/tester/docker/docker-compose.yml down ``` # 출처 - [그림과 실습으로 배우는 도커 & 쿠버네티스](https://wikibook.co.kr/dkkb/) Previous Post [docker] 도커 컴포즈 실습 Next Post [docker] 쿠버네티스 간단 정리