![Docker 通过 upstart 进行管理,请尝试使用 service docker](https://linux22.com/image/876708/Docker%20%E9%80%9A%E8%BF%87%20upstart%20%E8%BF%9B%E8%A1%8C%E7%AE%A1%E7%90%86%EF%BC%8C%E8%AF%B7%E5%B0%9D%E8%AF%95%E4%BD%BF%E7%94%A8%20service%20docker.png)
我正在使用以下系统:
root@alexus:~# cat /etc/issue.net
Ubuntu 14.04.3 LTS
root@alexus:~# uname -a
Linux alexus 3.13.0-57-generic #95-Ubuntu SMP Fri Jun 19 09:28:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
root@alexus:~#
我安排了cron job
检查docker service
是正在运行,如果没有,请启动:
root@alexus:~# crontab -l | grep 'service docker'
*/5 * * * * service docker status | grep -q 'docker\ start\/running\,\ process\ .*' ; if [ $? != 0 ] ; then service docker start ; fi
root@alexus:~#
但我收到的消息cron
如下:
- Docker 通过 upstart 进行管理,请尝试使用 service docker
并且如果我直接在 shell 中运行它,我不会得到任何输出:
root@alexus:~# service docker status | grep -q 'docker\ start\/running\,\ process\ .*' ; if [ $? != 0 ] ; then service docker start ; fi
root@alexus:~#
为什么我通过 cron 收到该消息,但每当我直接在 shell 上运行它时却什么都没有收到?我做错了吗?正确的方法是什么?
答案1
由于目前Docker 1.9.1 + Linux 内核错误 18180它深埋在与 AUFS 相关的 Linux 内核错误中,我希望将 Ubuntu 14.04 安装的 Docker 1.9.1 移至 Docker 1.8.3,但也让它在启动时自动启动,就像 apt 安装程序一样……
因此,我从 中提取了 Docker 1.8.3 二进制文件https://get.docker.com/builds/Linux/x86_64/docker-1.8.3
,然后将其移动到/usr/bin/docker
,并授予其sudo chmod +x /usr/bin/docker
可执行权限。
然后,我抓起生的sysvinit-debian/docker
脚本,还注释掉了主体check_init()
(它给我带来了不必要的麻烦),并用 simply 替换它"echo 'Skipping check_init()"
,然后将其放入/etc/init.d
。然后我将该脚本设置为在启动时以 root 身份运行ln -s /etc/init.d/docker /etc/rc2.d/S99docker
,并运行sudo reboot
。之后,我又从原始二进制安装在启动时运行 Docker(1.8.3)服务:
$ service docker status
* Docker is running
这里看起来一切都很好 - 我$ docker run -it hello-world
现在也可以正确运行,并且一直运行直到 18180 修复。