Docker compose使用
Docker Compose官方文檔:https://docs.docker.com/compose/
一、Docker Compose安裝
如果安裝使用Docker Desktop 默認就安裝了Docker Compose,
docker Compose 安裝參考:
http://www.rzrgm.cn/morang/p/devops-docker24-composev2-install.html
https://blog.csdn.net/pushiqiang/article/details/78682323
二、YAML入門
docker Compose 的配置文件是使用YAML語言格式的
https://www.runoob.com/w3cnote/yaml-intro.html
https://zhuanlan.zhihu.com/p/145173920
三、Docker Compose 配置文件 .yml 參考
https://www.runoob.com/docker/docker-compose.html
https://zhuanlan.zhihu.com/p/387840381
簡單示例
docker-compose.yml
version: '3.5'
# version 是必須指定的,而且總是位于文件的第一行。它定義了 Compose 文件格式(主要是 API)的版本。注意,version 并非定義 Docker Compose 或 Docker 引擎的版本號。
networks: #networks 用于指引 Docker 創建新的網絡。默認情況下,Docker Compose 會創建bridge網絡。 這是一種單主機網絡,只能夠實現同一主機上容器的連接。當然,也可以使用driver屬性來指定不同的網絡類型。
ehub_frontend: #自定義的網絡
name: ehub_frontend
ehub_storage:
name: ehub_storage
#volumes: #volumes 用于指引 Docker 來創建新的卷。
#data-elasticsearch:
#data-mongo:
#data-gateway-plugins-volume:
#data-gateway-log-volume:
#data-management-api-plugins-volume:
#data-management-api-log-volume:
#data-management-ui-log-volume:
#data-portal-ui-log-volume:
services: #services 用于定義不同的應用服務。工程的服務配置列表。Docker Compose 會將每個服務部署在各自的容器中
#1、構建Gravitee.io 里APIM六個服務
mongodb: #服務名,自定義
#image: mongo:${MONGODB_VERSION:-3.6} 指定啟動容器的鏡像,可以是鏡像倉庫/標簽或者鏡像id(或者id的前一部分)
image: mongo:6 #指定為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會嘗試拉取這個鏡像。
container_name: ehub_gio_apim_mongodb #容器名
restart: always #是否隨docker服務啟動重啟
volumes: #目錄掛載
#- data-mongo:/data/db #data-mongo填寫宿主機的目錄
#- ./logs/apim-mongodb:/var/log/mongodb
#- /f/home/ehub/gravitee/mongodb/data:/data/db
- ./gravitee/mongodb/data:/data/db
networks: #加入指定網絡
- ehub_storage #自定義的網絡名
elasticsearch:
#image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_VERSION:-7.7.0}
image: docker.elastic.co/elasticsearch/elasticsearch:8.8.1
container_name: ehub_gio_apim_elasticsearch
restart: always #是否隨docker服務啟動重啟
volumes:
#- data-elasticsearch:/usr/share/elasticsearch/data #data-elasticsearch填寫成自己宿主機的目錄
#- data-elasticsearch:/var/lib/elasticsearch/data # 命名卷
#- /f/home/ehub/gravitee/elasticsearch/data:/var/lib/elasticsearch/data #指定絕對路徑映射
- ./gravitee/elasticsearch/data:/var/lib/elasticsearch/data
environment: #設置容器的環境變量
- http.host=0.0.0.0
- transport.host=0.0.0.0
- xpack.security.enabled=false
#- xpack.monitoring.enabled=false
- cluster.name=elasticsearch
- bootstrap.memory_lock=true
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
#ulimits: #ulimits指定容器的 ulimits 限制值。例如,指定最大進程數為 65535 nproc: 65535,指定文件句柄數為 20000(軟限制,應用可以隨時修改,不能超過硬限制) 和 40000(系統硬限制,只能 root 用戶提高)。
# memlock:
# soft: -1
# hard: -1
# nofile: 65536
# #nproc: 65535
# #nofile:
# #soft: 20000
# #hard: 40000
networks:
- ehub_storage
gateway:
#image: graviteeio/apim-gateway:${APIM_VERSION:-3}
image: graviteeio/apim-gateway:4.0
container_name: ehub_gio_apim_gateway
restart: always #restart指定容器退出后的重啟策略為始終重啟。該命令對保持服務始終運行十分有效,在生產環境中推薦配置為 always 或者 unless-stopped。
ports: #暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以,端口字符串都使用引號包括起來的字符串格式。
- "38082:8082"
depends_on: #解決容器的依賴、啟動先后的問題, 本服務啟動,依賴于mongodb和elasticsearch,也就是先啟動mongodb和elasticsearch再啟動gateway
- mongodb
- elasticsearch
volumes: #數據卷所掛載路徑設置。可以設置為宿主機路徑(HOST:CONTAINER)或者數據卷名稱(VOLUME:CONTAINER),并且可以設置訪問模式 (HOST:CONTAINER:ro)。
#- ./logs/apim-gateway:/opt/graviteeio-gateway/logs # 相對于當前compose文件的相對路徑
#- data-gateway-plugins-volume:/opt/graviteeio-gateway/plugins-ext # 命名卷
#- data-gateway-log-volume:/opt/graviteeio-gateway/logs # 命名卷
#- /f/home/ehub/gravitee/apim-gateway/plugins:/opt/graviteeio-gateway/plugins-ext
#- /f/home/ehub/gravitee/apim-gateway/logs:/opt/graviteeio-gateway/logs
- ./gravitee/apim-gateway/plugins:/opt/graviteeio-gateway/plugins-ext
- ./gravitee/apim-gateway/logs:/opt/graviteeio-gateway/logs
environment: #設置環境變量。你可以使用數組或字典兩種格式。
#- gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
#- gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
#- gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200
#- gravitee_management_mongodb_uri="mongodb://ehub_gio_apim_mongodb:27017/gravitee-apim?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000"
#- gravitee_ratelimit_mongodb_uri="mongodb://ehub_gio_apim_mongodb:27017/gravitee-apim?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000"
- gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee-apim?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
- gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee-apim?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
- gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200
- gravitee_plugins_path_0=/opt/graviteeio-gateway/plugins
- gravitee_plugins_path_1=/opt/graviteeio-gateway/plugins-ext
networks:
- ehub_storage
- ehub_frontend
management_api:
#image: graviteeio/apim-management-api:${APIM_VERSION:-3}
image: graviteeio/apim-management-api:4.0
container_name: ehub_gio_apim_management_api
restart: always
ports:
- "38083:8083"
links: # 鏈接到另一個服務中的容器。 請指定服務名稱和鏈接別名(SERVICE:ALIAS),或者僅指定服務名稱。 - db/- db:database
- mongodb
- elasticsearch
depends_on:
- mongodb
- elasticsearch
volumes:
#- ./logs/apim-management-api:/opt/graviteeio-management-api/logs
#- data-management-api-plugins-volume:/opt/graviteeio-management-api/plugins-ext # 命名卷
#- data-management-api-log-volume:/opt/graviteeio-management-api/logs # 命名卷
#- /f/home/ehub/gravitee/apim-management-api/plugins:/opt/graviteeio-management-api/plugins-ext
#- /f/home/ehub/gravitee/apim-management-api/logs:/opt/graviteeio-management-api/logs
- ./gravitee/apim-management-api/plugins:/opt/graviteeio-management-api/plugins-ext
- ./gravitee/apim-management-api/logs:/opt/graviteeio-management-api/logs
environment:
#- gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
#- gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200
#- gravitee_management_mongodb_uri="mongodb://ehub_gio_apim_mongodb:27017/gravitee-apim?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000"
- gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee-apim?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
- gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200
- gravitee_plugins_path_0=/opt/graviteeio-management-api/plugins
- gravitee_plugins_path_1=/opt/graviteeio-management-api/plugins-ext
networks:
- ehub_storage
- ehub_frontend
management_ui:
#image: graviteeio/apim-management-ui:${APIM_VERSION:-3}
image: graviteeio/apim-management-ui:4.0
container_name: ehub_gio_apim_management_ui
restart: always
ports:
- "38084:8080"
depends_on:
- management_api
environment:
#- MGMT_API_URL=http://localhost:8083/management/organizations/DEFAULT/environments/DEFAULT/ #localhost改成自己服務器的IP地址
- MGMT_API_URL=http://192.168.1.102:38083/management/organizations/DEFAULT/environments/DEFAULT
volumes:
#- ./logs/apim-management-ui:/var/log/nginx # 相對于當前compose文件的相對路徑
#- data-management-ui-log-volume:/var/log/nginx # 命名卷
#- /f/home/ehub/gravitee/apim-management-ui/logs:/var/log/nginx # 指定絕對路徑映射
- ./gravitee/apim-management-ui/logs:/var/log/nginx
networks:
- ehub_frontend
portal_ui:
#image: graviteeio/apim-portal-ui:${APIM_VERSION:-3}
image: graviteeio/apim-portal-ui:4.0
container_name: ehub_gio_apim_portal_ui
restart: always
ports:
- "38085:8080"
depends_on:
- management_api
environment:
#- PORTAL_API_URL=http://localhost:8083/portal/environments/DEFAULT #localhost改成自己服務器的IP地址
- PORTAL_API_URL=http://192.168.1.102:38083/portal/environments/DEFAULT
volumes:
#- ./logs/apim-portal-ui:/var/log/nginx # 相對于當前compose文件的相對路徑
#- /gravitee/apim-portal-ui/logs:/var/log/nginx # 指定絕對路徑映射
#- data-portal-ui-log-volume:/var/log/nginx # 命名卷
#- /f/home/ehub/gravitee/apim-portal-ui/logs:/var/log/nginx # 指定絕對路徑映射
- ./gravitee/apim-portal-ui/logs:/var/log/nginx
networks:
- ehub_frontend
#2、構建Hop兩個服務
hop_web:
image: apache/hop-web:latest
container_name: ehub_hop_web
restart: always
ports:
- "38086:8080"
volumes:
#- /f/home/ehub/hop-web/config:/config/
#- /f/home/ehub/hop-web/logs:/usr/local/tomcat/logs/
#- /f/home/ehub/hop-web/plugins/databases/mysql/lib:/usr/local/tomcat/plugins/databases/mysql/lib/
#- /f/home/ehub/hop-web/plugins/databases/mssql/lib:/usr/local/tomcat/plugins/databases/mssql/lib/
#- /f/home/ehub/hop-web/plugins/databases/oracle/lib:/usr/local/tomcat/plugins/databases/oracle/lib/
- ./hop-web/config:/config/
- ./hop-web/logs:/usr/local/tomcat/logs/
- ./hop-web/plugins/databases/mysql/lib:/usr/local/tomcat/plugins/databases/mysql/lib/
- ./hop-web/plugins/databases/mssql/lib:/usr/local/tomcat/plugins/databases/mssql/lib/
- ./hop-web/plugins/databases/oracle/lib:/usr/local/tomcat/plugins/databases/oracle/lib/
hop_server:
image: apache/hop:latest # apache/hop:2.5.0 apache/hop:latest
container_name: ehub_hop_server
restart: always
ports:
- "38087:8080"
volumes:
#- /f/home/ehub/hop/hop.err.log:/opt/hop/hop.err.log/
#- /f/home/ehub/hop/files:/files/
- ./hop/hop.err.log:/opt/hop/hop.err.log/
- ./hop/files:/files/
environment:
- HOP_SERVER_PORT=8080
- HOP_SERVER_USER=admin
- HOP_SERVER_PASS=admin
- HOP_PROJECT_FOLDER=/files
- HOP_SERVER_METADATA_FOLDER=/files/metadata
- HOP_SHARED_JDBC_FOLDER=/files/jdbc
- HOP_PROJECT_NAME=demoProject
- HOP_ENVIRONMENT_NAME=Local
- HOP_SERVER_MAX_OBJECT_TIMEOUT=14400000
#3、構建Tresin系統管理服務
tresin_system:
#image: 192.168.1.153:5000/tresinbackendbase:ndri.lic.off
image: 192.168.1.153:5000/tresinbackendbase:2.15beta
container_name: ehub_tresin_system
restart: always
ports:
- "38088:80"
volumes:
#- /f/home/ehub/tresin-system/appsettings.json:/app/appsettings.json
#- /f/home/ehub/tresin-system/Cert/id4svr.pfx:/app/Cert/id4svr.pfx
#- /f/home/ehub/tresin-system/vault/:/home/vault
#- /f/home/ehub/tresin-system/logs/:/app/logs
- ./tresin-system/appsettings.json:/app/appsettings.json
- ./tresin-system/Cert/id4svr.pfx:/app/Cert/id4svr.pfx
- ./tresin-system/vault/:/home/vault
- ./tresin-system/logs/:/app/logs
#4、構建Camunda 7服務
camunda:
image: camunda-plugin-history:7.18
container_name: ehub_camunda_plugin_history
restart: always
ports:
- "38089:8080"
#links:
#mysql:db
volumes:
#- /f/home/ehub/camunda-plugin/default.yml:/camunda/configuration/default.yml
- ./camunda-plugin/default.yml:/camunda/configuration/default.yml
environment:
#- file=/f/home/ehub/camunda-plugin/env.txt
- file=./camunda-plugin/env.txt
#- /f/home/ehub/camunda-plugin/env.txt
#env_file: #相對路徑
#- ./camunda-plugin/env.txt
#5、構建LogerView服務
logerview:
image: 192.168.1.153:5000/tsdhlogviewer:0.4
container_name: ehub_logerview
restart: always
depends_on:
- camunda
ports:
- "38090:80"
volumes:
#- /f/home/ehub/logviewer/appsettings.json:/app/appsettings.json
#- /f/home/ehub/logviewer/logs/:/app/logs
- ./logviewer/appsettings.json:/app/appsettings.json
- ./logviewer/logs/:/app/logs
#6、構建MQ服務
rmqnamesrv:
image: apache/rocketmq:5.1.3
container_name: ehub_rmqnamesrv
restart: always
ports:
- 9876:9876
volumes:
#- /f/home/ehub/rocketmq/rmqnamesrv/logs:/home/rocketmq/logs
- ./rocketmq/rmqnamesrv/logs:/home/rocketmq/logs
environment:
#- "MAX_POSSIBLE_HEAP=100000000"
#- "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m"
JAVA_OPT_EXT: "-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128m"
command: ["sh","mqnamesrv"]
rocketmqbroker:
image: apache/rocketmq:5.1.3
container_name: ehub_rocketmq_broker
restart: always
links:
- rmqnamesrv:namesrv
ports:
#- "10911:10911"
#- "10912:10912"
#- "10909:10909"
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
#- /f/home/ehub/rocketmq/broker/logs:/home/rocketmq/logs
#- /f/home/ehub/rocketmq/broker/store:/home/rocketmq/store
#- /f/home/ehub/rocketmq/broker/broker.conf:/home/rocketmq/rocketmq-5.1.3/conf/broker.conf
- ./rocketmq/broker/logs:/home/rocketmq/logs
- ./rocketmq/broker/store:/home/rocketmq/store
- ./rocketmq/broker/broker.conf:/home/rocketmq/rocketmq-5.1.3/conf/broker.conf
environment:
#- "NAMESRV_ADDR=namesrv:9876"
#- "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m"
#- "MAX_POSSIBLE_HEAP=200000000"
NAMESRV_ADDR: namesrv:9876
JAVA_OPT_EXT: "-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128m"
#command: ["sh","mqbroker","-c","/home/rocketmq/rocketmq-4.9.4/conf/broker.conf"]
command: ["sh","mqbroker","-c","../conf/broker.conf","autoCreateTopicEnable=true"]
rocketmq-dashboard:
#image: styletang/rocketmq-console-ng:latest
image: apacherocketmq/rocketmq-dashboard:latest
container_name: ehub_rocketmq_dashboard # ehub_rocketmq_console_ng
restart: always
links:
- rmqnamesrv:namesrv
depends_on:
- rmqnamesrv
ports:
- "38091:8080"
environment:
#- "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.27.129:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876"
#7、構建Nginx服務
nginx:
image: nginx:latest
container_name: ehub_nginx
restart: always
ports:
- "9001:80"
volumes:
#- /f/home/ehub/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
#- /f/home/ehub/nginx/conf/conf.d:/etc/nginx/conf.d
#- /f/home/ehub/nginx/log:/var/log/nginx
#- /f/home/ehub/nginx/html:/usr/share/nginx/html
- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf/conf.d:/etc/nginx/conf.d
- ./nginx/log:/var/log/nginx
- ./nginx/html:/usr/share/nginx/html
docker-compose.yml
version: '1'
services:
mysql:
container_name: mysql-crane
restart: always
image: mysql
ports:
- "13306:3306"
volumes:
- ./mysql/mydir:/mydir
- ./mysql/datadir:/var/lib/mysql
environment:
- "MYSQL_ROOT_PASSWORD=root"
- "MYSQL_DATABASE=root"
- "TZ=Asia/Shanghai"
gateway:
image: 192.168.1.153:5000/tresinbackendgateway
ports:
- "15000:80"
container_name: crane-gateway
volumes:
- "./gateway/configuration.json:/app/configuration.json"
system:
image: 192.168.1.153:5000/tresinbackendbase:crane
container_name: crane-system
ports:
- "15001:80"
depends_on:
- gateway
- mysql
volumes:
- "./system/appsettings.json:/app/appsettings.json"
- "./system/Cert/id4svr.pfx:/app/Cert/id4svr.pfx"
- "./system/vault/:/home/vault"
- "./system/logs/:/app/logs"
nginx:
container_name: crane-nginx
image: nginx
ports:
- "16001:80"
- "16020:8080"
volumes:
- "./nginx/html:/usr/share/nginx/html"
- "./nginx/conf.d/:/etc/nginx/conf.d/"
crane:
container_name: crane-back
ports:
- "15020:80"
depends_on:
- mysql
image: 192.168.1.153:5000/ndricrane
volumes:
- "./crane/appsettings.json:/app/appsettings.json"
# tdengine:
# container_name: tdengine
# image: tdengine/tdengine:2.4.0.26
# ports:
# - "6030-6049:6030-6049"
# - "6030-6049:6030-6049/udp"
# volumes:
# - ./taos:/etc/taos
四、Docker Compose 常用命令
注意
#舊版使用 docker-compose 前綴
#新版使用 docker compose 前綴
# 運行容器
docker compose up
# 在后臺運行容器docker compose文件名稱是docker-compose.yml
docker compose up -d
# 指定yaml在后臺運行容器
docker compose -f docker-compose.prod.yaml up -d
# 查看日志
docker compose logs -f <service-name>
# 也可以直接使用容器ID查看容器日志
docker logs -f <container-id>
# 進入容器
docker attach <container-id> 不推薦,退出容器時,容器會停止
docker exec -it <container-id> /bin/bash 推薦使用
# 停止容器,并刪除相應的配置,推薦使用,如果使用docker stop并不會刪除容器的network和volume,使用下面的命令可以停止并刪除由docker compose文件定義的容器、網絡和卷
docker compose down
幫助文檔
docker compose --help
docker@default:~$ docker-compose --help
Define and run multi-container applications with Docker.
Usage:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file
(default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name
(default: directory name)
--verbose Show more output
--log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--no-ansi Do not print ANSI control characters
-v, --version Print version and exit
-H, --host HOST Daemon socket to connect to
--tls Use TLS; implied by --tlsverify
--tlscacert CA_PATH Trust certs signed only by this CA
--tlscert CLIENT_CERT_PATH Path to TLS certificate file
--tlskey TLS_KEY_PATH Path to TLS key file
--tlsverify Use TLS and verify the remote
--skip-hostname-check Don't check the daemon's hostname against the
name specified in the client certificate
--project-directory PATH Specify an alternate working directory
(default: the path of the Compose file)
--compatibility If set, Compose will attempt to convert keys
in v3 files to their non-Swarm equivalent
Commands:
build 構建或重建服務
bundle 從compose配置文件中產生一個docker綁定
config 驗證并查看compose配置文件
create 創建服務
down 停止并移除容器、網絡、鏡像和數據卷
events 從容器中接收實時的事件
exec 在一個運行中的容器上執行一個命令
help 獲取命令的幫助信息
images 列出所有鏡像
kill 通過發送SIGKILL信號來停止指定服務的容器
logs 從容器中查看服務日志輸出
pause 暫停服務
port 打印綁定的公共端口
ps 列出所有運行中的容器
pull 拉取并下載指定服務鏡像
push Push service images
restart 重啟YAML文件中定義的服務
rm 刪除指定已經停止服務的容器
run 在一個服務上執行一條命令
scale 設置指定服務運行容器的個數
start 在容器中啟動指定服務
stop 停止已運行的服務
top 顯示各個服務容器內運行的進程
unpause 恢復容器服務
up 創建并啟動容器
version 顯示Docker-Compose版本信息
命令解析
docker-compose
docker-compose [-f <args>...] [options] [COMMAND] [ARGS...]
命令選項[-f <args>...]
-f, --file FILE指定Compose模板文件,默認為docker-compose.yml可多次指定。
$ docker-compose -f docker-compose.yml up -d
-p, --project-name NAME指定項目名稱,默認使用當前所在目錄名稱作為項目名稱。-x-network-driver使用Docker可拔插網絡后端特性,需Docker1.9+版本支持。-x-network-driver DRIVER指定網絡后端驅動,默認為bridge,需Docker1.9+版本支持。-verbose輸出更多調試信息-v, --version打印版本并退出
docker-compose up
啟動所有服務
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
命令選項[options]
-d指定在后臺以守護進程方式運行服務容器-no-color設置不使用顏色來區分不同的服務器的控制輸出-no-deps設置不啟動服務所鏈接的容器-force-recreate設置強制重新創建容器,不能與--no-recreate選項同時使用。--no-create若容器已經存在則不再重新創建,不能與--force-recreate選項同時使用。--no-build設置不自動構建缺失的服務鏡像--build設置在啟動容器前構建服務鏡像--abort-on-container-exit若任何一個容器被停止則停止所有容器,不能與選項-d同時使用。-t, --timeout TIMEOUT設置停止容器時的超時秒數,默認為10秒。--remove-orphans設置刪除服務中沒有在compose文件中定義的容器--scale SERVICE=NUM設置服務運行容器的個數,此選項將會負載在compose中通過scale指定的參數。
docker-compose ps
列出項目中當前的所有容器
docker-compose ps [options] [SERVICE...]
docker@default:~$ docker-compose ps
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml
docker@default:~$ docker-compose ps
Name Command State Ports
------------------------------------------
swoft_swoft_1 /bin/bash Exit 0
docker-compose -h
查看docker-compose幫助
docker-compose down
停止和刪除容器、網絡、卷、鏡像
docker-compose down [options]
命令選項 [options]
-
--rmi type刪除鏡像類型,類型可選:
--rmi all刪除compose文件中定義的所有鏡像--rmi local刪除鏡像名為空的鏡像
-
-v, --volumes刪除已經在compose文件中定義的和匿名的附在容器上的數據卷 -
--remove-orphans刪除服務中沒有在compose中定義的容器
docker-compose logs
查看服務容器的輸出,默認情況下docker-compose將對不同的服務輸出使用不同的顏色來區分。可以通過--no-color來關閉顏色。
docker-compose logs [options] [SERVICE...]
例如:
root@default:/var/www/swoft# docker-compose logs
Attaching to swoft_swoft_1
swoft_1 | root@cd054651dfcb:/var/www/swoft# exit
docker-compose build
構建或重構項目中的服務容器,服務容器一旦構建后將會帶上一個標記名稱,可以隨時在項目目錄下運行docker-compose build來重新構建服務。
docker-compose build [options] [--build-arg key=val...] [SERVICE...]
命令選項[options]
--compress通過gzip壓縮構建上下文環境--force-rm刪除構建過程中的臨時容器--no-cache構建鏡像過程中不使用緩存--pull始終嘗試通過拉取操作來獲取更新版本的鏡像-m, --memory MEM為構建的容器設置內存大小--build-arg key=val為服務設置build-time變量
docker-compose pull
拉取服務依賴的鏡像
docker-compose pull [options] [SERVICE...]
命令選項[options]
--ignore-pull-failures忽略拉取鏡像過程中的錯誤--parallel同時拉取多個鏡像--quiet拉取鏡像過程中不打印進度信息
docker-compose restart
重啟項目中的服務
docker-compose restart [options] [SERVICE...]
命令選項[options]
-t, --timeout TIMEOUT指定重啟前停止容器的超時時長,默認為10秒。
docker-compose rm
刪除所有停止狀態的服務容器,推薦先執行docker-compose stop命令來停止容器。
docker-compose rm [options] [SERVICE...]
命令選項[options]
-f, --force強制直接刪除包含非停止狀態的容器-v刪除容器所掛載的數據卷
docker-compose start
啟動已經存在的服務容器
docker-compose start [SERVICE...]
docker-compose run
在指定服務上執行一條命令
docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
例如:在ubuntu容器上運行ping命令10次
$ docker-compose run ubuntu ping www.baidu.com -c 10
docker-compose scale
設置指定服務運行的容器個數,通過service=num參數設置服務數量。
docker-compose scale
例如:
$ docker-compoose scale web=3 db=2
docker-compose pause
暫停一個服務容器
docker-compose pause [SERVICE...]
docker-compose kill
發送SIGKILL信號來強制停止服務容器,支持通過-s參數來指定發送的信號。
docker-compose kill [options] [SERVICE...]
例如:發送SIGINT信號強制停止服務容器
$ docker-compose kill -s SIGINT
docker-compose config
驗證并查看compose文件配置
docker-compose config [options]
選項參數[options]
--resolve-image-digests將鏡像標簽標記為摘要-q, --quiet只驗證配置不輸出,當配置正確時不輸出任何容器,當配置錯誤時輸出錯誤信息。--services打印服務名稱,一行顯示一個。--volumes打印數據卷名稱,一行顯示一個。
例如:
root@default:/var/www/swoft# docker-compose config
services:
swoft:
entrypoint:
- /bin/bash
image: swoft/swoft:latest
ports:
- 83:83/tcp
privileged: true
stdin_open: true
tty: true
volumes:
- /share/swoft:/var/www/swoft:rw
version: '3.0'
docker-compose create
為服務創建容器
docker-compose create [options] [SERVICE...]
選項說明[options]
--force-recreate重新創建容器,即使配置和鏡像沒有改變,不兼容--no-recreate參數。--no-recreate如果容器已經存在則無需重新創建,不兼容--force-recreate參數。--no-build不創建鏡像即使缺失--build創建容器前生成鏡像
docker-compose exec
docker-compose exec [options] SERVICE COMMAND [ARGS...]
選項參數[options]
-d分離模式,以后臺守護進程運行命令。--privileged獲取特權-T禁用分配TTY,默認docker-compose exec分配TTY。--index=index當一個服務擁有多個容器時可通過該參數登錄到該服務下的任何服務
例如:
$ docker-compose exec --index=1 web /bin/bash
docker-compose port
顯示某個容器端口所映射的公共端口
docker-compose port [options] SERVICE PRIVATE_PORT
選項參數[options]
--protocol=proto指定端口協議,默認為TCP,可選UDP。--index=index若同意服務存在多個容器,指定命令對象容器的索引序號,默認為1。
docker-compose push
推送服務依賴的鏡像
docker-compose push [options] [SERVICE...]
選項參數[options]
--ignore-push-failure忽略推送鏡像過程中的錯誤
docker-compose stop
顯示各個容器運行的進程情況
docker-compose stop [options] [SERVICE...]
docker-compose unpause
恢復處于暫停狀態中的服務
docker-compose unpause [SERVICE...]
docker-compose version
打印Docker Compose版本信息
root@default:/var/www/swoft# docker-compose version
docker-compose version 1.24.0, build 0aa59064
docker-py version: 3.7.2
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j 20 Nov 2018
文檔參考:
https://juejin.cn/post/7051057669896929288
https://www.jianshu.com/p/c51d92a9f91d
http://www.rzrgm.cn/morang/p/17976704/devops-docker-elk-install-nginx-config
浙公網安備 33010602011771號