Docker扩展Docker Swarm、Docker Machine、Docker Compose介绍

以下为你介绍的Docker扩展都可用在Linux系统上:Docker Swarm(Dockerized化的分布式应用程序的本地集群)、Docker Machine(简化Docker安装的命令行工具)、Docker Compose(Docker 编排服务)。

1、Docker Swarm(Dockerized化的分布式应用程序的本地集群)

Docker扩展Docker Swarm、Docker Machine、Docker Compose介绍

Docker Swarm是一个Dockerized化的分布式应用程序的本地集群,它是在Machine所提供的功能的基础上优化主机资源的利用率和容错服务。具体来说,Docker Swarm支持用户创建可运行Docker Daemon的主机资源池,然后在资源池中运行Docker容器。Docker Swarm可以管理工作负载并维护集群状态。

除了资源优化,Docker Swarm可以保证应用的高可用性和容错性。Docker Swarm会不断的检查Docker Daemon所在主机的健康状态。当某个主机不可用时,Swarm就会将容器迁移到新的主机上。

Docker Swarm的亮点之一是它可以在应用的生命周期内扩展,也就是说当应用从一个主机扩展到2个、20个或者200个的时候,用户可以保证接口的一致性。

同样,和Machine一样,Swarm的架构是可插拔的,系统已经包含一个默认的调度器。其它的厂商可以实现自己的调度器。

使用示例:

# create a cluster

$ docker run --rm swarm create

6856663cdefdec325839a4b7e1de38e8 # <- this is your unique <cluster_id>

# on each of your nodes, start the swarm agent

#  <node_ip> doesn't have to be public (eg. 192.168.0.X),

#  as long as the swarm manager can access it.

$ docker run -d swarm join --addr=<node_ip:2375> token://<cluster_id>

# start the manager on any machine or your laptop

$ docker run -d -p <swarm_port>:2375 swarm manage token://<cluster_id>

# use the regular docker cli

$ docker -H tcp://<swarm_ip:swarm_port> info

$ docker -H tcp://<swarm_ip:swarm_port> run ...

$ docker -H tcp://<swarm_ip:swarm_port> ps

$ docker -H tcp://<swarm_ip:swarm_port> logs ...

...

# list nodes in your cluster

$ docker run --rm swarm list token://<cluster_id>

<node_ip:2375>

下载地址:https://github.com/docker/swarm/

2、Docker Machine(简化Docker安装的命令行工具)

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、Digital Ocean、Microsoft Azure。

使用过程:

$ docker-machine create -d virtualbox dev

INFO[0000] Creating SSH key...

INFO[0000] Creating VirtualBox VM...

INFO[0007] Starting VirtualBox VM...

INFO[0007] Waiting for VM to start...

INFO[0041] "dev" has been created and is now the active machine.

INFO[0041] To point your Docker client at it, run this in your shell: $(docker-machine env dev)

$ docker-machine ls

Docker扩展Docker Swarm、Docker Machine、Docker Compose介绍

$ $(docker-machine env dev)

$ docker run busybox echo hello world

Unable to find image 'busybox:latest' locally

511136ea3c5a: Pull complete

df7546f9f060: Pull complete

ea13149945cb: Pull complete

4986bf8c1536: Pull complete

hello world

$ docker-machine create -d digitalocean --digitalocean-access-token=secret staging

INFO[0000] Creating SSH key...

INFO[0001] Creating Digital Ocean droplet...

INFO[0002] Waiting for SSH...

INFO[0070] Configuring Machine...

INFO[0109] "staging" has been created and is now the active machine.

INFO[0109] To point your Docker client at it, run this in your shell: $(docker-machine env staging)

$ docker-machine ls

Docker扩展Docker Swarm、Docker Machine、Docker Compose介绍

下载地址:https://github.com/docker/machine

3、Docker Compose(Docker 编排服务)

Docker扩展Docker Swarm、Docker Machine、Docker Compose介绍

Docker Compose 是 Docker 编排服务的一部分,Machine 可以让用户在其它平台快速安装Docker,Swarm 可以让 Docker 容器在集群中高效运转,而 Compose 可以让用户在集群中部署分布式应用。简单的说,Docker Compose 属于一个“应用层”的服务,用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。

使用Compose的第一步是使用YAML文件来定义容器应用的状态:

containers:

web:

build: .

command: python app.py

ports:

- "5000:5000"

volumes:

- .:/code

links:

- redis

environment:

- PYTHONUNBUFFERED=1

redis:

image: redis:latest

command: redis-server --appendonly yes

上面的YAML文件定义了两个容器应用,第一个容器运行Python应用,并通过当前目录的Dockerfile文件构建。第二个容器是从Docker Hub注册中心的Redis官方仓库中构建。links指令用来定义依赖,意思是Python应用依赖于Redis应用。

定义完成后,通过下面的命令来启动应用:

% docker up

简单吧?通过YAML文件定义的容器应用已经成功启动起来,启动过程会按照YAML的配置严格运行。Python容器通过Dockerfile自动构建,同时从注册中心拉取Redis容器构建。links指令关注的是Python和Redis容器之间的依赖关系,Redis容器是最先开始构建,紧随其后的是Python容器。

下载地址:https://github.com/docker/compose

注明

以上就是Docker扩展Docker Swarm、Docker Machine、Docker Compose的介绍内容,这些Docker扩展都能使用在Linux操作系统中。

栏目相关文章