目錄
1. 概要
2. 常用的docker-compose命令
2.1、image
2.2、build
2.3、command
2.4、links
2.5、external_links
2.6、ports
1.7、expose
1.8、volumes
1.9、volumes_from
1.10、environment
1.11、networks
1. 概要
默認的模板文件是 docker-compose.yml
,其中定義的每個服務可以通過 image
指令指定鏡像或 build
指令(需要 Dockerfile)來自動構建。
注意如果使用 build
指令,在 Dockerfile
中設置的選項(例如:CMD
, EXPOSE
, VOLUME
, ENV
等) 將會自動被獲取,無需在 docker-compose.yml
中再次設置。如果設置了會被YML覆蓋
2. 常用的docker-compose命令
命令 | 描述 |
---|---|
docker-compose up -d | 構建建啟動容器 |
docker-compose exec bash | 登錄到容器中 |
docker-compose down | 刪除所有容器,鏡像 |
docker-compose ps | 顯示所有容器 |
docker-compose restart | 重新啟動容器 |
docker-compose run --no-deps --rm php-fpm php -v | 在php-fpm中不啟動關聯容器,并容器執行php -v 執行完成后刪除容器 |
docker-compose build | 構建鏡像 |
docker-compose build --no-cache | 不帶緩存的構建 |
docker-compose logs | 查看的日志 |
docker-compose logs -f | 驗證(docker-compose.yml)文件配置,當配置正確時,不輸出任何內容,當文件配置錯誤,輸出錯誤信息 |
docker-compose pause | 暫停容器 |
docker-compose unpause | 恢復容器 |
docker-compose rm | 刪除容器(刪除前必須關閉容器) |
docker-compose stop | 停止容器 |
docker-compose start | 啟動容器 |
2.1、image
說明
指定為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose
將會嘗試拉去這個鏡像。
栗子
image: ubuntu image: mysql:5.7.22
2.2、build
說明
指定 Dockerfile
所在文件夾的路徑。 Compose
將會利用它自動構建這個鏡像,然后使用這個鏡像。
栗子
build: ./ build: ./web/
2.3、command
說明
覆蓋容器啟動后默認執行的命令。
栗子
command:--default-authentication-plugin=mysql_native_password--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1
2.4、links
說明
鏈接到其它服務中的容器。使用服務名稱(同時作為別名)或服務名稱:服務別名 (SERVICE:ALIAS)
格式都可以。
栗子
links:- mysql- db:database- redis
使用的別名將會自動在服務容器中的 /etc/hosts
里創建。例如:
172.17.2.111 db 172.17.2.112 database 172.17.2.113 redis
2.5、external_links
說明
鏈接到 docker-compose.yml 外部的容器,甚至 并非 Compose
管理的容器。參數格式跟 links
類似。
栗子
external_links:- redis- web_db_mysql:mysql- web_db_oracle:oracle- web_db_oracle:postgre
2.6、ports
說明
暴露端口信息。使用宿主:容器 (HOST:CONTAINER)
格式或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。
栗子
ports:- "6379"- "8000:8000"- "46200:22"- "127.0.0.1:8080:8080"
注:當使用 HOST:CONTAINER 格式來映射端口時,如果你使用的容器端口小于 60 你可能會得到錯誤得結果,因為 YAML 將會解析 xx:yy 這種數字格式為 60 進制。所以建議采用字符串格式。
1.7、expose
說明
暴露端口,但不映射到宿主機,只被連接的服務訪問。可以指定內部端口為參數
栗子
expose:- "3307"- "6380"
1.8、volumes
說明
卷掛載路徑設置。可以設置宿主機路徑 (HOST:CONTAINER
) 或加上訪問模式 (HOST:CONTAINER:ro 或者rw
)。
volumes:- ./mysql/data:/var/lib/mysql - ./configs:/etc/configs/:ro
1.9、volumes_from
說明
從另一個服務或容器掛載它的所有卷。
栗子
volumes_from:- service_name- container_name
1.10、environment
說明
設置環境變量。只給定名稱的變量會自動獲取它在 Compose 主機上的值,可以用來防止泄露不必要的數據。
栗子
environment:MYSQL_ROOT_PASSWORD: rootTZ: Asia/Shanghai
1.11、networks
說明
用于設置指定網絡,子標簽aliases用于設置服務別名,相同的別名可以在不同的網絡中擁有不同的識別別名。
可以在service中使用,也可以在頂級標簽中使用
栗子
services:some-service:networks:some-network:aliases:- alias1- alias3other-network:aliases:- alias2 # 定義網絡 ? ? ? ? networks:default:external:name: app