DevOps学院

DevOps学院

中国新一代IT在线教育平台
运维知识体系

运维知识体系

运维知识体系总结,持续更新,欢迎转载。
缓存知识体系

缓存知识体系

运维知识体系之缓存,分层多级缓存体系。
速云科技

速云科技

DevOps咨询、企业内训、落地解决方案。

docker中应用访问速度慢

回复

Dockerbyzz1225 发起了问题 • 1 人关注 • 0 个回复 • 381 次浏览 • 2018-07-23 13:04 • 来自相关话题

招兼职Kubernetes培训讲师

Dockernini 发表了文章 • 0 个评论 • 569 次浏览 • 2017-10-20 17:37 • 来自相关话题

企业培训公司面向单位员工培训,长期招Kubernetes兼职老师,一般三天左右的短周期培训,周末为主,有2人左右的小辅导,也有30人左右的培训大班,待遇优,北京,上海,成都,广州,深圳等,如您想挣点外块,积累资源,充实生活,请联系我。 

要求:
相关技术专业,本科及以上学历; 
三年以上实际项目经验; 
认真,热情,耐心,乐于助人,不保守,表达能力较好。具体再议。 

感兴趣的可以联系:QQ 2355811930 ;QQ1489302364,微信15501239699,简历接收邮箱:admin@info-soft.cn 
 
  查看全部

企业培训公司面向单位员工培训,长期招Kubernetes兼职老师,一般三天左右的短周期培训,周末为主,有2人左右的小辅导,也有30人左右的培训大班,待遇优,北京,上海,成都,广州,深圳等,如您想挣点外块,积累资源,充实生活,请联系我。 

要求:
相关技术专业,本科及以上学历; 
三年以上实际项目经验; 
认真,热情,耐心,乐于助人,不保守,表达能力较好。具体再议。 

感兴趣的可以联系:QQ 2355811930 ;QQ1489302364,微信15501239699,简历接收邮箱:admin@info-soft.cn 
 
 

持续交付的Mesos与Docker导入篇

回复

Docker优云敏捷运维 发起了问题 • 2 人关注 • 0 个回复 • 1765 次浏览 • 2016-06-03 16:53 • 来自相关话题

Mesos + marathon + Docker实战

Docker赵班长 发表了文章 • 3 个评论 • 13027 次浏览 • 2016-02-03 15:19 • 来自相关话题

     如果要评价2015年最火的技术,那么非Docker莫属,当你开始使用并部署上Docker之后,那么你会发现想真正用起来,缺少很多组件。比如本文要介绍的分布式集群管理就是其中之一。

    本文为实战分享,所以相关理论较少,需要大家自行Google。

    Mesos:Mesos采用与Linux Kernel相同的机制,只是运行在不同的抽象层次上。Mesos Kernel利用资源管理和调度的API在整个数据中心或云环境中运行和提供引用(例如,Hadoop、Spark、Kafaka、ElasticSearch)。

    ZooKeeper:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

    Marathon:Marathon是一个Mesos框架,能够支持运行长服务,比如Web应用等。它是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如Tomcat、Play等等。它也是一种私有的PaSS,实现服务的发现,为部署提供提供REST API服务,有授权和SSL、配置约束,通过HAProxy实现服务发现和负载平衡。
 好的,架构图看起来像这样。





下面我们就准备开始实战部署了。首先要说明下实验环境:






Zookeeper伪集群部署
在部署mesos集群之前,我们必须先部署一个可用的zookeeper集群,后面mesos会连接到zookeeper上。[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget http://mirrors.cnnic.cn/apache ... ar.gz
[root@linux-node1 src]# tar zxf zookeeper-3.4.6.tar.gz
[root@linux-node1 src]# mv zookeeper-3.4.6 /usr/local/zookeeper
[root@linux-node1 src]# ln -s /usr/local/zookeeper-3.4.6/ /usr/local/zookeeper
[root@linux-node1 ~]# cd /usr/local/zookeeper/conf/
[root@linux-node1 conf]# mv zoo_sample.cfg zoo.cfg


zookeeper配置文件详解

下面就是zoo.cfg配置文件的修改了。那么我们首先要熟悉下zookeeper配置文件。

[root@linux-node1 ~]# cat/usr/local/zookeeper/conf/zoo.cfg

dataDir:数据目录
dataLogDir:日志目录
clientPort:客户端连接端口
tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
initLimit:Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
syncLimit:表示 Leader 与 Follower 之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是 2*2000=4 秒。
server.A=B:C:D:
A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 ip 地址;
C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

Zookeeper配置文件修改
    如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。[root@linux-node1 conf]# grep '^[a-z]' zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk1
clientPort=2181
server.1=192.168.56.11:3181:4181
server.2=192.168.56.11:3182:4182
server.3=192.168.56.11:3183:4183创建三个目录用来存放zookeeper数据[root@linux-node1 ~]# mkdir -p /data/zk1 /data/zk2/data/zk3
[root@linux-node1 ~]# echo "1" >/data/zk1/myid
[root@linux-node1 ~]# echo "2" >/data/zk2/myid
[root@linux-node1 ~]# echo "3" >/data/zk3/myid生成三份zookeeper配置文件[root@linux-node1 conf]# cp zoo.cfg zk1.cfg
[root@linux-node1 conf]# cp zoo.cfg zk2.cfg
[root@linux-node1 conf]# cp zoo.cfg zk3.cfg修改zk2和zk3的配置,使用对应的数据目录和端口。[root@linux-node1 conf]# sed -i 's/zk1/zk2/g'zk2.cfg
[root@linux-node1 conf]# sed -i 's/2181/2182/g'zk2.cfg
[root@linux-node1 conf]# sed -i 's/zk1/zk3/g'zk3.cfg
[root@linux-node1 conf]# sed -i 's/2181/2183/g'zk3.cfg启动Zookeeper/usr/local/zookeeper/bin/zkServer.sh start/usr/local/zookeeper/conf/zk1.cfg
/usr/local/zookeeper/bin/zkServer.sh start/usr/local/zookeeper/conf/zk2.cfg
/usr/local/zookeeper/bin/zkServer.sh start/usr/local/zookeeper/conf/zk3.cfg查看Zookeeper角色[root@linux-node1 ~]#/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk1.cfg
JMX enabled by default
Using config: /usr/local/zookeeper/conf/zk1.cfg
Mode: follower

[root@linux-node1 ~]#/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk2.cfg
JMX enabled by default
Using config: /usr/local/zookeeper/conf/zk2.cfg
Mode: follower

[root@linux-node1 ~]#/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk3.cfg
JMX enabled by default
Using config: /usr/local/zookeeper/conf/zk3.cfg
Mode: leader





连接Zookeeper[root@linux-node1 ~]# /usr/local/zookeeper/bin/zkCli.sh -server192.168.56.11:2181通过上面的例子可以看到,目前zk3是leader,其它两个节点是follower。本文由于实验环境局限使用的是伪分布式,注意生产环境不建议使用。

Mesos 集群部署
Mesos集群有MesosMaster和Mesos Slave两个角色。

安装mesosphere仓库
需要在Mesos Master和MesosSlave节点均安装:# rpm -Uvh http://repos.mesosphere.com/el ... h.rpm
Mesos Master部署
[root@linux-node1 ~]# yum -y install mesos marathon
安装完毕后,增加zookeeper配置[root@linux-node1 ~]# vim /etc/mesos/zk
zk://192.168.56.11:2181,192.168.56.11:2182,192.168.56.11:2183/mesos
[root@linux-node1 ~]# systemctl start mesos-master mesos-slave
[root@linux-node1 ~]# systemctl start marathon
Mesos Slave部署[root@linux-node2 ~]# yum -y install mesos marathon
[root@linux-node2 ~]# systemctl start mesos-slave

Mesos的Web管理界面
  Mesos安装完毕后,Mesos Master会启动一个Web服务,监听在5050端口。
http://${HOST_IP}:5050
这时候你将得到一个像这样的页面但可能在‘Tasks’表格没有任何的条目。






下面我们来运行第一mesos任务,注意刷新查看Mesos的Web界面,你会在Active Tasks看到我们测试的任务。[root@linux-node1~]# MASTER=$(mesos-resolve `cat /etc/mesos/zk`)
[root@linux-node1~]# mesos-execute --master=$MASTER --name="cluster-test"--command="sleep 60"





使用Marathon调用Mesos 运行Docker容器

    配置Mesos运行Docker容器

[root@linux-node1 ~]# yum install -y docker
[root@linux-node1 ~]# systemctl start docker

首先先测试下,保证手动创建Docker容器没问题。

[root@linux-node1 ~]# docker pull nginx

再所有mesos-slave上增加配置参数,并重启linux-node1:
[root@linux-node1 ~]# echo 'docker,mesos' | tee/etc/mesos-slave/containerizers
docker,mesos
[root@linux-node1 ~]# systemctl restart mesos-slave

linux-node2:
[root@linux-node2 ~]# echo 'docker,mesos' | tee/etc/mesos-slave/containerizers
docker,mesos
[root@linux-node2 ~]# systemctl restart mesos-slave
  接下来,我们要使用我们marathon来创建一个nginx的Docker容器,通过Mesos进行调度。   我们上面安装mesos-master的时候,已经安装了marathon。默认监听在8080端口,通过使用http://{HOST}:8080/来打开marathon。如下图所示:





我相信读者会有疑问,我们并没有对marathon做任何的配置,它是怎么知道Mesos在哪里的呢?答案是通过zookeeper,marathon启动的时候会读取/etc/mesos/zk配置文件,通过Zookeeper来找到Mesos Master。marathon有自己的REST API,我们通过API的方式来创建一个nginx的docker容器:

首先创建如下的配置文件nginx.json:[root@linux-node1 ~]# cat nginx.json
{
"id":"nginx",
"cpus":0.2,
"mem":20.0,
"instances": 1,
"constraints": [["hostname", "UNIQUE",""]],
"container": {
"type":"DOCKER",
"docker": {
"image": "nginx",
"network": "BRIDGE",
"portMappings": [
{"containerPort": 80, "hostPort": 0,"servicePort": 0, "protocol": "tcp" }
]
}
}
}然后调用# curl -X POST http://192.168.56.11:8080/v2/apps-d @nginx.json \
-H "Content-type: application/json"





现在你就可以通过31984来访问到nginx了。当然了,你也可以在mesos-slave上来寻找一下这个容器:[root@linux-node1 ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

58df0c7f15f9 nginx "nginx -g 'daemonoff" 7 minutes ago Up 7 minutes 443/tcp, 0.0.0.0:31984->80/tcp mesos-0dc69732-fd81-4190-8d7e-f389f80b1f50-S1.56436b54-0fed-4951-ae94-e52889948d67



  如果你想创建同样的容器,可以点击上图中德Scale Application来体验一下。同样的,你也可以通过marathon的Web界面来进行容器的创建、扩展和销毁。






欢迎大家关注《运维社区》微信,经常会有干货发出哦。





赶紧常按识别上面二维码,关注我们吧! 查看全部
     如果要评价2015年最火的技术,那么非Docker莫属,当你开始使用并部署上Docker之后,那么你会发现想真正用起来,缺少很多组件。比如本文要介绍的分布式集群管理就是其中之一。

    本文为实战分享,所以相关理论较少,需要大家自行Google。

    Mesos:Mesos采用与Linux Kernel相同的机制,只是运行在不同的抽象层次上。Mesos Kernel利用资源管理和调度的API在整个数据中心或云环境中运行和提供引用(例如,Hadoop、Spark、Kafaka、ElasticSearch)。

    ZooKeeper:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

    Marathon:Marathon是一个Mesos框架,能够支持运行长服务,比如Web应用等。它是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如Tomcat、Play等等。它也是一种私有的PaSS,实现服务的发现,为部署提供提供REST API服务,有授权和SSL、配置约束,通过HAProxy实现服务发现和负载平衡。
 好的,架构图看起来像这样。
无标题1.png


下面我们就准备开始实战部署了。首先要说明下实验环境:

index.png


Zookeeper伪集群部署
在部署mesos集群之前,我们必须先部署一个可用的zookeeper集群,后面mesos会连接到zookeeper上。
[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget http://mirrors.cnnic.cn/apache ... ar.gz
[root@linux-node1 src]# tar zxf zookeeper-3.4.6.tar.gz
[root@linux-node1 src]# mv zookeeper-3.4.6 /usr/local/zookeeper
[root@linux-node1 src]# ln -s /usr/local/zookeeper-3.4.6/ /usr/local/zookeeper
[root@linux-node1 ~]# cd /usr/local/zookeeper/conf/
[root@linux-node1 conf]# mv zoo_sample.cfg zoo.cfg


zookeeper配置文件详解

下面就是zoo.cfg配置文件的修改了。那么我们首先要熟悉下zookeeper配置文件。

[root@linux-node1 ~]# cat/usr/local/zookeeper/conf/zoo.cfg

dataDir:数据目录
dataLogDir:日志目录
clientPort:客户端连接端口
tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
initLimit:Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
syncLimit:表示 Leader 与 Follower 之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是 2*2000=4 秒。
server.A=B:C:D:
A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 ip 地址;
C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

Zookeeper配置文件修改
    如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
[root@linux-node1 conf]# grep '^[a-z]' zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk1
clientPort=2181
server.1=192.168.56.11:3181:4181
server.2=192.168.56.11:3182:4182
server.3=192.168.56.11:3183:4183
创建三个目录用来存放zookeeper数据
[root@linux-node1 ~]# mkdir -p /data/zk1 /data/zk2/data/zk3
[root@linux-node1 ~]# echo "1" >/data/zk1/myid
[root@linux-node1 ~]# echo "2" >/data/zk2/myid
[root@linux-node1 ~]# echo "3" >/data/zk3/myid
生成三份zookeeper配置文件
[root@linux-node1 conf]# cp zoo.cfg zk1.cfg
[root@linux-node1 conf]# cp zoo.cfg zk2.cfg
[root@linux-node1 conf]# cp zoo.cfg zk3.cfg
修改zk2和zk3的配置,使用对应的数据目录和端口。
[root@linux-node1 conf]# sed -i 's/zk1/zk2/g'zk2.cfg
[root@linux-node1 conf]# sed -i 's/2181/2182/g'zk2.cfg
[root@linux-node1 conf]# sed -i 's/zk1/zk3/g'zk3.cfg
[root@linux-node1 conf]# sed -i 's/2181/2183/g'zk3.cfg
启动Zookeeper
/usr/local/zookeeper/bin/zkServer.sh start/usr/local/zookeeper/conf/zk1.cfg
/usr/local/zookeeper/bin/zkServer.sh start/usr/local/zookeeper/conf/zk2.cfg
/usr/local/zookeeper/bin/zkServer.sh start/usr/local/zookeeper/conf/zk3.cfg
查看Zookeeper角色
[root@linux-node1 ~]#/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk1.cfg
JMX enabled by default
Using config: /usr/local/zookeeper/conf/zk1.cfg
Mode: follower

[root@linux-node1 ~]#/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk2.cfg
JMX enabled by default
Using config: /usr/local/zookeeper/conf/zk2.cfg
Mode: follower

[root@linux-node1 ~]#/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk3.cfg
JMX enabled by default
Using config: /usr/local/zookeeper/conf/zk3.cfg
Mode: leader





连接Zookeeper
[root@linux-node1 ~]#  /usr/local/zookeeper/bin/zkCli.sh -server192.168.56.11:2181
通过上面的例子可以看到,目前zk3是leader,其它两个节点是follower。本文由于实验环境局限使用的是伪分布式,注意生产环境不建议使用。

Mesos 集群部署
Mesos集群有MesosMaster和Mesos Slave两个角色。

安装mesosphere仓库
需要在Mesos Master和MesosSlave节点均安装:
# rpm -Uvh http://repos.mesosphere.com/el ... h.rpm

Mesos Master部署
[root@linux-node1 ~]# yum -y install mesos marathon
安装完毕后,增加zookeeper配置
[root@linux-node1 ~]# vim /etc/mesos/zk
zk://192.168.56.11:2181,192.168.56.11:2182,192.168.56.11:2183/mesos
[root@linux-node1 ~]# systemctl start mesos-master mesos-slave
[root@linux-node1 ~]# systemctl start marathon

Mesos Slave部署
[root@linux-node2 ~]# yum -y install mesos marathon
[root@linux-node2 ~]# systemctl start mesos-slave


Mesos的Web管理界面
  Mesos安装完毕后,Mesos Master会启动一个Web服务,监听在5050端口。
http://${HOST_IP}:5050
这时候你将得到一个像这样的页面但可能在‘Tasks’表格没有任何的条目。

无标题2.png


下面我们来运行第一mesos任务,注意刷新查看Mesos的Web界面,你会在Active Tasks看到我们测试的任务。
[root@linux-node1~]# MASTER=$(mesos-resolve `cat /etc/mesos/zk`)
[root@linux-node1~]# mesos-execute --master=$MASTER --name="cluster-test"--command="sleep 60"

无标题3.png


使用Marathon调用Mesos 运行Docker容器

    配置Mesos运行Docker容器

[root@linux-node1 ~]# yum install -y docker
[root@linux-node1 ~]# systemctl start docker

首先先测试下,保证手动创建Docker容器没问题。

[root@linux-node1 ~]# docker pull nginx

再所有mesos-slave上增加配置参数,并重启
linux-node1:
[root@linux-node1 ~]# echo 'docker,mesos' | tee/etc/mesos-slave/containerizers
docker,mesos
[root@linux-node1 ~]# systemctl restart mesos-slave

linux-node2:
[root@linux-node2 ~]# echo 'docker,mesos' | tee/etc/mesos-slave/containerizers
docker,mesos
[root@linux-node2 ~]# systemctl restart mesos-slave

  接下来,我们要使用我们marathon来创建一个nginx的Docker容器,通过Mesos进行调度。   我们上面安装mesos-master的时候,已经安装了marathon。默认监听在8080端口,通过使用http://{HOST}:8080/来打开marathon。如下图所示:
无标题4.png


我相信读者会有疑问,我们并没有对marathon做任何的配置,它是怎么知道Mesos在哪里的呢?答案是通过zookeeper,marathon启动的时候会读取/etc/mesos/zk配置文件,通过Zookeeper来找到Mesos Master。marathon有自己的REST API,我们通过API的方式来创建一个nginx的docker容器:

首先创建如下的配置文件nginx.json:
[root@linux-node1 ~]# cat nginx.json
{
"id":"nginx",
"cpus":0.2,
"mem":20.0,
"instances": 1,
"constraints": [["hostname", "UNIQUE",""]],
"container": {
"type":"DOCKER",
"docker": {
"image": "nginx",
"network": "BRIDGE",
"portMappings": [
{"containerPort": 80, "hostPort": 0,"servicePort": 0, "protocol": "tcp" }
]
}
}
}
然后调用
# curl -X POST http://192.168.56.11:8080/v2/apps-d @nginx.json \
-H "Content-type: application/json"

无标题4.png


现在你就可以通过31984来访问到nginx了。当然了,你也可以在mesos-slave上来寻找一下这个容器:
[root@linux-node1 ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

58df0c7f15f9 nginx "nginx -g 'daemonoff" 7 minutes ago Up 7 minutes 443/tcp, 0.0.0.0:31984->80/tcp mesos-0dc69732-fd81-4190-8d7e-f389f80b1f50-S1.56436b54-0fed-4951-ae94-e52889948d67



  如果你想创建同样的容器,可以点击上图中德Scale Application来体验一下。同样的,你也可以通过marathon的Web界面来进行容器的创建、扩展和销毁。

无标题5.png


欢迎大家关注《运维社区》微信,经常会有干货发出哦。
qrcode_for_gh_3bddb9781003_430.jpg


赶紧常按识别上面二维码,关注我们吧!

Docker Machine、Swarm、Compose、Registry、Kitematic、Toolbox介绍

Docker赵班长 发表了文章 • 0 个评论 • 2881 次浏览 • 2015-08-12 20:11 • 来自相关话题

        Docker Machine为本地机器、私有数据中心以及云服务商提供Docker引擎,并可以配置一个本地的Docker客户端来安全(通过TLS)地与已经部署的引擎交互。Machine对部署平台进行了抽象,用户在对Docker零了解且不熟悉目标环境的情况下,可以通过一个简单的命令部署Docker引擎。Docker Machine解决了操作系统异构安装Docker困难的问题。
 
        Docker Swarm为Docker容器提供了原生的集群,它将几个Docker引擎聚集在一起,然后对外暴露为一个单一的虚拟Docker引擎。Swarm提供了标准的Docker API,因此Docker客户端或者其它的第三方工具可以轻松扩展到多台主机,比如Dokku、Shipyard等。
 
       Docker Compose是一个编排工具,它可以定义并运行基于Docker的分布式应用。Compose基于Fig,Fig是一个已经存在的工具,它可以运行Docker的开发环境,并通过一个简单的文件来定义应用组件,这些组件包括容器、容器配置、连接以及卷。
 
       Docker Registry大家都比较熟悉,是用来构建Docker仓库的服务,目前来说功能不够完善。
 
       Docker Kitematic是GUI客户端。
 
       Docker Toolbox是一个工具箱,可以让用户简单快速的安装和设置Docker环境。它包含以下内容:
 
Docker ClientDocker MachineDocker Compose (Mac only)Docker KitematicVirtualBox 查看全部
        Docker Machine为本地机器、私有数据中心以及云服务商提供Docker引擎,并可以配置一个本地的Docker客户端来安全(通过TLS)地与已经部署的引擎交互。Machine对部署平台进行了抽象,用户在对Docker零了解且不熟悉目标环境的情况下,可以通过一个简单的命令部署Docker引擎。Docker Machine解决了操作系统异构安装Docker困难的问题。
 
        Docker Swarm为Docker容器提供了原生的集群,它将几个Docker引擎聚集在一起,然后对外暴露为一个单一的虚拟Docker引擎。Swarm提供了标准的Docker API,因此Docker客户端或者其它的第三方工具可以轻松扩展到多台主机,比如Dokku、Shipyard等。
 
       Docker Compose是一个编排工具,它可以定义并运行基于Docker的分布式应用。Compose基于Fig,Fig是一个已经存在的工具,它可以运行Docker的开发环境,并通过一个简单的文件来定义应用组件,这些组件包括容器、容器配置、连接以及卷。
 
       Docker Registry大家都比较熟悉,是用来构建Docker仓库的服务,目前来说功能不够完善。
 
       Docker Kitematic是GUI客户端。
 
       Docker Toolbox是一个工具箱,可以让用户简单快速的安装和设置Docker环境。它包含以下内容:
 
  1. Docker Client
  2. Docker Machine
  3. Docker Compose (Mac only)
  4. Docker Kitematic
  5. VirtualBox