$ docker -H :2376 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
624ff5de9240 nginx:latest "nginx -g 'daemon of 2 minutes ago Up 2 minutes 80/tcp, 443/tcp trusting_pasteur
到这里,我们就可以在本地容器上访问web服务器。
$ glance image-list
+--------------------------------------+---------------------------------+-------------+------------------+-----------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+--------------------------------------+---------------------------------+-------------+------------------+-----------+--------+
| 17239070-5aef-4bab-85df-1f9f72b6370b | cirros-0.3.1-x86_64-uec | ami | ami | 25165824 | active |
| ea6eb351-7268-4b2e-91cd-806a67c4e9fe | fedora-software-config | qcow2 | bare | 610140160 | active |
+--------------------------------------+---------------------------------+-------------+------------------+-----------+--------+
接下来,我使用下面的脚本,创建ssh需要的密钥,并设置合适的安全组。
# Create key and upload
ssh-keygen
nova keypair-add --pub-key ~/.ssh/id_rsa.pub key1
# Permit ICMP (ping):
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
# Permit secure shell (SSH) access:
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
# Permit 2375 port access (Docker endpoint):
nova secgroup-add-rule default tcp 2375 2375 0.0.0.0/0
现在,我们使用Nova创建Fedora VM。
$ nova list
+--------------------------------------+------------+--------+------------+-------------+------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+------------+--------+------------+-------------+------------------+
| ab701808-98fb-4cba-907f-663fd762cf2a | fedoratest | ACTIVE | - | Running | private=10.0.0.2 |
+--------------------------------------+------------+--------+------------+-------------+------------------+
为了登录Fedora VM,我们需要使用密钥,这个密钥是创建VM时使用的。
[fedora@fedoratest ~]$ docker -H :2375 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
18a7ed8f5b00 nginx:latest "nginx -g 'daemon of About a minute ago Up About a minute 80/tcp, 443/tcp tender_morse
这里有一份Heat模板,这个模板文件可以创建VM,抓取Apache和Mysql容器,并连接它们。下面是另外一份优秀的 wiki,这份wiki为Docker容器详细地解释了Heat模板,并列出了一个优秀的例子。不幸的是,在我的Devstack环境下,这些脚本无法正常工作。实例催生了,但容器创建失败。我花了许多时间,但仍无法解决。
OpenStack Magnum
OpenStack Heat插件解决了许多问题,这些问题是Nova
Docker插件无法解决的。但是,它仍然无法解决动态编排和调度。Magnum是一个通用的容器管理解决方案,和其他容器技术一样,OpenStack开发的这个方案是可以用来管理Docker的。目前,Magnum支持Kubernetes和Docker。无论是在Kubernetes,还是
Docker上,主机集群都可以被创建,并且在使用特殊的聚类算法和容器情况下,容器可以列入集群。Magnum仍然处在早期阶段,第一版本已经在几个月前和OpenStack kilo一起发行。
下面是Magnum的wiki上提及的Magnum架构示意图