“简单回顾下上一篇docker入门,里面简要的介绍了docker的一些常用的指令,并运用这些指令来构建一个.net core,本篇将会继续来学习下如何使用docker-compose来构建一组服务。”
前言
再次跟着我的脚步来一起学习吧。本篇我们需要学习:
docker-compose 简介
docker-compose.yml 文件
docker-compose 常用命令
01
—
docker-compose 简介
docker-compose是用来定义和运行多容器的应用工具。通过使用yml文件来配置应用程序所需要的所有服务,然后使用对应的命令来创建和运行这些服务。
02
—
docker-compose.yml 文件
先来看一段yml文件:
version: '3.4'services:promotioncenter.adminapi.core:image: ${DOCKER_REGISTRY-harbor.test.com}/promotion/adminapi:${IMAGETAG:-latest}env_file:- .envcontainer_name: promotioncenter.adminapi.coreports:- "8032:8032"build:context: .dockerfile: PromotionCenter.Admin.Api.Core/Dockerfilepromotioncenter.frontapi.core:image: ${DOCKER_REGISTRY-harbor.test.com}/promotion/frontapi:${IMAGETAG:-latest}env_file:- .envcontainer_name: promotioncenter.frontapi.coreports:- "8031:8031"depends_on:- promotioncenter.adminapi.corebuild:context: .dockerfile: PromotionCenter.Front.Api.Core/Dockerfile
接下来让我们一起来看看这个yml文件到底是怎么一回事?多个服务在services节点下体现出来,同时有严格的缩进和空格要求,需要保持对齐。每个services节点又有如下的一些参数可供设置,一起来看下:
| services | 定义一组服务 |
image | 定义镜像名及tag,${IMAGETAG:-latest}表示未传递变量IMAGETAG则使用latest |
env_file | 定义一组环境变量文件,比如可以将.net core 运行时的ASPNETCORE_ENVIRONMENT=develop放置其中 |
container_name | 容器名称 |
ports | 端口映射标签,格式为HOST:CONTAINER, 可支持下面几种方式 - “3000” --宿主机随机映射一个端口 - “8000:8000” - "127.0.0.1:8001:8001" |
depends_on | 定义容器启动依赖关系。例如我们上面的示例中,设置为promotioncenter.frontapi.core的启动必须依赖promotioncenter.adminapi.core |
build | 镜像构建指令 |
context | 构建的上下文路径 |
| 指定镜像的dockerfile路径 |
03
—
docker-compose 常用指令
镜像构建
docker-compose build [OPTIONS] [SERVICE...]以下是OPTIONS参数:
--force-rm:删除构建过程中的临时容器 --no-cache:构建过程中不使用缓存 --pull:始终通过pull获取最新镜像 镜像运行
docker-compose run [OPTIONS] service [COMMAND] [ARGS...]
以下是OPTIONS参数:
| -d:容器后台运行 |
| --name:为容器指定一个名称 |
| --rm:容器停止后自动删除容器,-d模式忽略 |
| -e KEY=VAL:设置环境变量 |
| -p=[]:映射容器端口到本机 |
docker-compose up [OPTIONS] [SERVICE...]
以下是OPTIONS参数:
-d:在后台运行服务容器 |
| --no-deps:不启动服务所链接的容器 |
| --force-recreate:强制重新创建容器,不能与 --no-recreate 同时使用 |
| --no-recreate:如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用 |
| --no-build:不自动构建缺失的服务镜像 |
| -t:停止容器时候的超时(默认为 10 秒) |
镜像运行的命令有run和up,两者啥区别我也不知道,不过感觉更推荐up,因为实际操作过程中run命令并不会完全运用docker-compose.yml文件,这是我测试下来发现的,而up就没有这个问题。
镜像推送
这个指令简直不要太好用,会根据docker-compose.yml文件定义的services节点进行推送,而经过build后的镜像自动打上tag,推送至仓库中也只需要如下命令即可:
docker-compose push
写在最后
本文大致介绍了下docker-compose的一些相关知识,从中我们可以发现通过它我们可以很轻松的build一组服务,不管是运行还是推送,都及其简单,在结合一些辅助脚本,简直不要太爽。接下来我们将会学习下如何对docker做资源限制。

如有收获,点个在看,诚挚感谢




