docker-comopse up # 정의 파일에 기재된 내용대로 container를 생성 및 실행
docker-compose down # container와 network 정지 및 삭제
docker-compose stop # container와 network 정지
Docker compose와 Dockerfile의 차이
Docker compose : 여러 개의 docker run 명령어를 묶어 놓은 것
Docker file : image를 만들기 위한 것으로 network나 volume 생성 불가
sudo apt install -y python3 python3-pip
sudo pip3 install docker-compose
version: "3"
services:
apa000ex2:
image: httpd
ports:
- 8080:80
restart: always
docker run --name apa000ex2 -d -p 8080:80 httpd
version: "3"
services:
wordpress000ex12:
depends_on:
- mysql000ex11
image: wordpress
networks:
- wordpress000net1
ports:
- 8085:80
restart: always
environment:
WORDPRESS_DB_HOST=mysql000ex11
WORDPRESS_DB_NAME=wordpress000db
WORDPRESS_DB_USER=wordpress000kun
WORDPRESS_DB_PASSWORD=wkunpass
docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex12 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress
항목 | docker run command의 해당 옵션, 인자 | 내용 |
---|---|---|
image | image 인자 | 사용할 image 지정 |
networks | --net | 접속할 network 지정 |
volumes | -v, --mount | storage mount를 지정 |
ports | -p | port 설정 |
environment | -e | 환경변수 설정 |
depends_on | 없음 | 다른 service에 대한 의존관계 정의 |
restart | 없음 | container 종료 시 재시작 여부 설정 |
command | command 인자 | container 시작 시 기존 command override |
container_name | --name | 실행할 container의 이름을 명시적으로 지정 |
dns | --dns | DNS server를 명시적으로 지정 |
env_file | 없음 | 환경설정 정보를 기재한 파일을 로드 |
entrypoint | --entrypoint | container 시작 시 ENTRYPOINT 설정을 override |
external_links | --link | 외부 link를 지정 |
extra_hosts | --add-host | 외부 host의 IP주소를 명시적으로 지정 |
logging | --log-driver | log 출력 대상을 지정 |
network_mode | --network | network 모드를 지정 |
version: "3"
services:
mysql000ex11:
image: mysql:5.7
networks:
- wordpress000net1
volumes:
- mysql000vol1:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: wordpress000db
MYSQL_USER: wordpress000kun
MYSQL_PASSWORD: wkunpass
wordpress000ex12:
depends_on:
- mysql000ex11
image: wordpress
networks:
- wordpress000net1
volumes:
- wordpress000vol2:/var/www/html
ports:
- 8080:80
restart: always
environment:
WORDPRESS_DB_HOST: mysql000ex11
WORDPRESS_DB_NAME: wordpress000db
WORDPRESS_DB_USER: wordpress000kun
WORDPRESS_DB_PASSWORD: wkunpass
networks:
wordpress000net1:
volumes:
mysql000vol1:
wordpress000vol2:
docker-compose -f <composefile.yml 경로> up <option>
옵션 | 내용 |
---|---|
-d | back ground로 실행 |
--no-color | 화면 출력 내용을 흑백으로 함 |
--no-deps | 링크된 service를 실행하지 않음 |
--force-recreate | 설정 또는 image가 변경되지 않더라도 container를 재생성 |
--no-create | container가 이미 존재할 경우 생성하지 않음 |
--no-build | image가 없어도 image를 build하지 않음 |
--build | container를 실행하기 전에 image를 build |
--abort-on-container-exit | container가 하나라도 종료되면 모든 container를 종료 |
-t, --timeout | container를 종료할 때의 time out 설정, default는 10초 |
--remove-orphans | compose 파일에 정의되지 않은 service의 container 삭제 |
--scale | container 수를 변경 |
docker-compose -f <composefile.yml 경로> down <option>
옵션 | 내용 |
---|---|
--rmi 종류 | 삭제 시에 image도 삭제. 종류를 all로 지정하면 사용했던 모든 image를 삭제. local로 지정하면 custom tag가 없는 image만 삭제 |
-v, --volumes | volumes 항목에 기재된 volume을 삭제. 단, external로 지정된 volume은 삭제되지 않음 |
--remove-orphans | compose 파일에 정의되지 않은 service의 container도 삭제 |
docker-compose -f <composefile.yml 경로> stop <option>
좋은 글이네요. 공유해주셔서 감사합니다.