Docker 通过 upstart 进行管理,请尝试使用 service docker

Docker 通过 upstart 进行管理,请尝试使用 service docker

我正在使用以下系统:

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 修复。

相关内容