六. 使用Docker来编排系统(Networks、Compose)

所谓编排是指:当你一个应用被分成几个Container运行时候,这些Container需要协同,这就是所谓的编排功能。Orchestration 需要有个框架完成Container间的通信、容器如何连接的配置、容器创建、监控的调度,还有扩展性问题。市面上有容器编排的平台,比如Mesos和Kubernetes,但是Docker本身也提供了编排功能。

Docker Compose可以定义容器间的关系,它是一个client-side工具;Docker Swarm 则在编排系统中用于管理跨多主机的容器。

1. Docker Networks

在网络级别,Docker creates a bridge network on your host. A bridge network gives every container its own IP address, and it allows communication between containers and also between containers and the host.

图片.png

1.1 创建一个Network

我们创建一个网络并让容器加入它


六. 使用Docker来编排系统(Networks、Compose)_第1张图片
图片.png

我们可以用下面这个命令查看容器被分配的IP地址:

yay@10049605-ThinkPad-T470-W10DG:~$ sudo docker network inspect ch05

访问这个IP地址:
六. 使用Docker来编排系统(Networks、Compose)_第2张图片
图片.png

注意: The bridge is between the container and the host. 如果我们使用Linux,我们就能通过IP地址访问这个容器;但是如果Docker是运行在Mac或者Windows环境下的,Host实际为Linux VM, 此时我们就不能通过这个IP地址访问这个容器。

由于我们还没有publish port 80 on the container, 因此我们不能使用localhost访问Nginx,我们只能使用这个容器的IP地址。

1.2 再建一个容器并加入这个network

六. 使用Docker来编排系统(Networks、Compose)_第3张图片
图片.png

上图命令dig是域信息搜索器的简称(Domain Information Groper),其执行结果含义如下:


六. 使用Docker来编排系统(Networks、Compose)_第4张图片
图片.png
六. 使用Docker来编排系统(Networks、Compose)_第5张图片
图片.png

当然我们也可以通过docker network inspect查看相关信息:


六. 使用Docker来编排系统(Networks、Compose)_第6张图片
图片.png

2. Docker Compose

当业务比较复杂(involved)时,我们需要掌握依赖关系,这样才便于部署,其中一种方法是使用Docker Compose。它是一个独立的client工具,采用YAML文件定义你的解决方案架构, 并通过一个单一命令来管理整个容器集合。

2.1 安装Docker Compose

在UNIX环境下,Docker Compose需要单独安装(Window环境下则是和Docker一起被安装的)

yay@10049605-ThinkPad-T470-W10DG:~$ sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose
测试:
$ docker-compose --version
六. 使用Docker来编排系统(Networks、Compose)_第7张图片
图片.png

2.2 写一个docker-compose.yml

六. 使用Docker来编排系统(Networks、Compose)_第8张图片
图片.png

也支持使用--scale参数生成多个Nginx containers(需要指出在docker-compose.yml中配置的容器名称)


六. 使用Docker来编排系统(Networks、Compose)_第9张图片
图片.png

可以查看生成的网络:


六. 使用Docker来编排系统(Networks、Compose)_第10张图片
图片.png

2.3 使用单个命令管理docker-compose工程里面所有容器

六. 使用Docker来编排系统(Networks、Compose)_第11张图片
图片.png

你可能感兴趣的:(六. 使用Docker来编排系统(Networks、Compose))