天天看点

Docker容器开机自动启动(在宿主机重启后或者Docker服务重启后)

一、环境介绍

系统版本:CentOS6.7 X64

内核版本:2.6.32-573.18.1.el6.x86_64

二、测试过程

使用在Docker run的时候使用--restart参数来设置。

no - container:不重启

on-failure - container:退出状态非0时重启

always:始终重启

<code>[root@docker ~]</code><code># docker run -i -t -d --name centos_aways --restart=always centos</code>

<code>e278cabec91e36f5582d92ba3ddb95ac17a0c2c59d8cdcc60791a28075e8abce</code>

<code>[root@docker ~]</code><code># docker ps -l</code>

<code>CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES</code>

<code>e278cabec91e        centos              </code><code>"/bin/bash"</code>         <code>5 seconds ago       Up 4 seconds   </code>

<code>[root@docker ~]</code><code># init 6</code>

<code>e278cabec91e        centos              </code><code>"/bin/bash"</code>         <code>3 minutes ago       Up About a minute</code>

<code>Docker服务重启后,查看添加了“--restart=always”参数的容器能否自动启动</code>

<code>[root@docker ~]</code><code># /etc/init.d/docker stop</code>

<code>Stopping docker:                                           [  OK  ]</code>

<code>[root@docker ~]</code><code># /etc/init.d/docker start</code>

<code>Starting docker:                                      [  OK  ]</code>

<code>[root@docker ~]</code><code># docker ps</code>

<code>CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES</code>

<code>14caa9ab03a9        dockerui</code><code>/dockerui</code>   <code>"/dockerui"</code>         <code>11 minutes ago      Up 3 seconds        0.0.0.0:9000-&gt;9000</code><code>/tcp</code>   <code>dockerui_qinwen     </code>

<code>e278cabec91e        centos              </code><code>"/bin/bash"</code>         <code>About an hour ago   Up 3 seconds                                 centos_aways</code>

三、注意事项:

1.用docker自带的--link把多个容器链接在一起,有重启或升级的问题,比如很多容器都依赖于 db 这个容器,然后db容器重启了,重启时docker分配的ip会变,导致其他依赖于db的容器都要重启。

2.--link 链接的容器还有启动顺序的问题, 需要先启动db容器再启动其他依赖于db的容器, 这样导致 --link和--restart=always 不能一起用, 如果一起用会发现宿主机重启了, docker容器并没有全部重启,

3.因为这时候docker容器是同时被启动的,并不知道启动顺序。 最后决定不用 --link 链接容器了。

本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1743902,如需转载请自行联系原作者