docker-compose命令 作者:马育民 • 2020-07-25 17:32 • 阅读:10088 # 查看所有命令 执行下面命令,查看所有命令 ``` docker-compose ``` 执行结果如下: ``` Define and run multi-container applications with Docker. Usage: docker-compose [-f ...] [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) -c, --context NAME Specify a context 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 --env-file PATH Specify an alternate environment file Commands: build Build or rebuild services config Validate and view the Compose file create Create services down Stop and remove containers, networks, images, and volumes events Receive real time events from containers exec Execute a command in a running container help Get help on a command images List images kill Kill containers logs View output from containers pause Pause services port Print the public port for a port binding ps List containers pull Pull service images push Push service images restart Restart services rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services top Display the running processes unpause Unpause services up Create and start containers version Show the Docker-Compose version information ``` # 更多命令参见 https://www.jianshu.com/p/658911a8cff3 # 创建并启动containers 创建并启动`docker-compose.yml`或`docker-compose.yaml`文件中的service ``` docker-compose up # 不推荐 ``` 执行结果如下: [![](https://www.malaoshi.top/upload/pic/nginx/QQ20200727-101351.png)](https://www.malaoshi.top/upload/pic/nginx/QQ20200727-101351.png) **注意:** 打印详细日志,执行`ctrl+c`**退出时容器会停止**,一般用于 **调试** # 创建网络 由上图可见,通过`docker-compose`创建容器时,也会 **创建网络** ### 查看docker网络: ``` docker network ls ``` 执行结果如下: [![](https://www.malaoshi.top/upload/pic/docker/QQ20200727-101833.png)](https://www.malaoshi.top/upload/pic/docker/QQ20200727-101833.png) 创建一个新的docker网络,是bridge网络模式 ### 查看网络详细信息 ``` docker network inspect docker_tomcat_default ``` 执行结果如下: ``` [ { "Name": "docker_tomcat_default", "Id": "0d5e26732eb3ad42304de4ff115ecf244e5c62d7cc9343d61b5f09db51feaf71", "Created": "2020-07-27T10:12:09.684302068+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.30.0.0/16", "Gateway": "172.30.0.1" } ] }, "Internal": false, "Attachable": true, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": {}, "Options": {}, "Labels": { "com.docker.compose.network": "default", "com.docker.compose.project": "docker_tomcat", "com.docker.compose.version": "1.26.2" } } ] ``` ip网段是`172.30.0.0/16` ### 查看linux系统网络 ``` ip a ``` 执行结果如下: [![](https://www.malaoshi.top/upload/pic/docker/QQ20200727-102106.png)](https://www.malaoshi.top/upload/pic/docker/QQ20200727-102106.png) 虚拟网卡 红框 部分`0d5e26732eb3`,与 docker网络`0d5e26732eb3`, 是一致的 ### 注意网段 `docker-compose` 创建容器时,也会创建网络,该网络ip网段 与 `默认bridge网络`的ip网段,一般不同 `docker run`创建容器时,使用 `默认bridge网络` 2个容器的网段不一样,无法网络通信 ##### 解决方法 创建自定义bridge网络,在 docker-compose.yml文件中指定该网络,然后启动 通过`docker run`创建容器时,也指定该网络,见: https://www.malaoshi.top/show_1EF5xlsxdwTZ.html # 后台启动 正常启动,不会打印详细日志 ``` docker-compose up -d ``` # 指定文件启动 要执行 `xxx.yml`文件时,按照下面格式指定: ``` docker-compose -f abc.yml up -d ``` # 列出 containers 列出`docker-compose.yml`或`docker-compose.yaml`文件中的 containers ``` docker-compose ps ``` # 停止service 停止`docker-compose.yml`或`docker-compose.yaml`文件中的service ``` docker-compose stop ``` # 停止service并删除 停止`docker-compose.yml`或`docker-compose.yaml`文件中的service,并删除containers, networks, images, and volumes ``` docker-compose down ``` # 启动service 启动`docker-compose.yml`或`docker-compose.yaml`文件中的service ``` docker-compose start ``` # 相当于docker exec ``` docker-compose exec 名字 bash ``` 其中 `名字` 是在`docker-compose.yml`定义的名字 原文出处:http://malaoshi.top/show_1EF5xCV2BIyn.html