Docker ASP.NET Core (5):Docker Compose

第一篇:把代码连接到容器 

第二篇:定制Docker镜像

第三篇:发布镜像

第四篇:容器间的连接

 

Docker Compose简介

Compose是一个用来定义和运行多容器Docker应用的工具。使用Compose的时候,你可以使用一个YAML文件来配置你应用的服务。然后根据配置,使用一个命令即可创建并运行所有的服务。

使用Compose的时候通常分三步:

使用Dockerfile定义你的环境

在docker-compose.yml文件里定义你的服务,这样就可以让他们在隔离的环境中一起运行了。

运行docker-compose up 命令,来启动和运行整个应用。

 

Docker Compose的特点

Docker Compose可以做很多事情,但是如果只考虑在开发环境里,它可以做下面这些事情:

管理整个应用的生命周期:启动、停止、重构建服务,而服务呢,其实就是运行的容器而已。

查看在运行的服务的状态,包括输出日志。

可以在单个容器上运行一次性命令。

 

为什么要使用Docker Compose

通常来说,如果你的应用稍微有点规模,例如你的Web应用需要使用Web服务器,缓存服务器,数据库服务器。。。如果你手动管理这样的docker应用,就很繁琐,也很容易出错。

而如果使用Docker Compose的话,它可以定义一个docker-compose.yml文件,在这个文件里,你可以定义所有的这些服务,以及它们之间的关系。

 

docker-compose.yml文件

docker-compose.yml文件就是用来配置服务的,这里有一个官网给出的例子:

Docker ASP.NET Core (5):Docker Compose

 

这个文件写好之后,就可以开始Docker Compose的构建过程了。

这个构建的过程实际上会生成镜像,然后使用这些镜像就可以创建容器了。

Docker ASP.NET Core (5):Docker Compose

然后再使用一个简单的命令,就可以让这些服务启动并运行了。

 

下面简单讲一下这个docker-compose.yml文件:

Docker ASP.NET Core (5):Docker Compose

第一行是版本。

下面services,就是服务。

在services里,可以定义当构建docker-compose.yml文件时想要运行的服务,然后把这些镜像以容器运行。这里可以定义ASP.NET Core,node,数据库,缓存等等。

看一下服务里的东西:

build,里面可以定义构建的上下文,例如在哪个文件见来进行构建;还可以指定使用的dockerfile。

在这里也可以定义环境变量。

image,定义镜像。

networks,可以把服务和定义好的网络联系起来。

ports,定义端口。

volumes,定义卷。

也可以在里面定义networks等等。

 

Docker Compose的命令

docker-compose build 把服务构建成镜像。

docker-compose up,一旦镜像准备好了,那就就执行该命令,启动那些镜像,使之成为容器运行。

docker-compose down,可以使用该命令停止、删除由up命令建立的一切东西。

此外还有这些常用形式的命令:

docker-compose logs

docker-compose ps

docker-compose stop

docker-compose start

docker-compose rm

 

docker-compose build

这个命令会构建/重新构建定义在docker-compose.yml文件里的所有的服务,使用这一个命令就会一次性把所有服务需要的镜像都创建好。

 

此外还可以构建单独的服务,例如: docker-compose build mongo。有时候你不想把所有的东西都重新构建一遍,你只想构建其中的一个服务。

 

docker-compose up

一切都构建好之后,就可以启动并运行了。这时就会使用docker-compose up这个命令。

它会自动创建容器,并运行这些容器。

 

该命令还可以加一些参数,例如 docker-compose up --no-deps node,它表示重新构建node镜像,停止、销毁重新创建node,但不重新创建node所依赖的服务。

 

docker-compose down

该命令会停止所有的容器,然后删除它们。

如果只想停止容器,并不删除,那么应该使用docker-compose stop。

 

此外如果你还想同时删除所有的镜像和volumes,你可以:

docker-compose down --rmi all --volumes

 

Docker Compose 实例

前面文章里,我通过手动输入命令实现了一套ASP.NET Core 和 PostgreSQL的docker 应用。尽管该应用很简单,只有两部分组成,但当时还是输入了不少命令,也遇到了几次错误,相对还是繁琐一些。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzjfz.html