在Ubuntu上启动Docker作为守护进程

时间:2014-10-01 09:08:31

标签: ubuntu docker

已成功使用Docker几周但今天当我按照一组说明建议将以下两行添加到/etc/init/docker.conf的docker配置文件时:

limit memlock unlimited unlimited
limit nofile 262144

然后建议使用sudo /etc/init.d/docker restart重新启动Docker。当我在Ubuntu 14.04下做到这一点时,它报告说:

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

我尝试了sudo service docker restart报告的内容:

  

停止:未知作业:docker

     

开始:未知作业:docker

现在我被Docker守护进程无法运行了!我尝试重新启动但它仍然没有运行,当运行像sudo docker version这样简单的事情我得到:

Client version: 1.2.0
Client API version: 1.14
Go version (client): go1.3.1
Git commit (client): fa7b24f
OS/Arch (client): linux/amd64
2014/10/01 09:57:45 Get http:///var/run/docker.sock/v1.14/version: dial unix /var/run/docker.sock: no such file or directory

要解决问题,我尝试在命令行上启动docker守护程序:

sudo docker -d

在另一个终端窗口中,我现在可以正常运行Docker。这很好,但是如何让它再次正常启动呢?另外我注意到我有两个docker配置文件:

/etc/init/docker.conf
/etc/init/docker.io.conf

他们看起来像DUP。他们多余了吗?我应该看哪一个?我需要两者吗?

我还注意到,当我运行sudo service --status-all |grep docker时会出现这种漏报,我将dockerdocker.io作为列出的服务。生长。

6 个答案:

答案 0 :(得分:32)

有多个流行的存储库为Ubuntu提供docker软件包。包docker.io(很可能)来自Ubuntu存储库。另一个流行的是http://get.docker.io/ubuntu,它提供了一个包lxc-docker(我正在运行后者,因为它可以更快地发布更新)。确保只安装了一个包。是否正确清除包装并不十分确定。如果sudo service docker restart仍然不起作用,您可能需要在/ etc /.

中手动清理

答案 1 :(得分:14)

我在14.04上遇到了与docker 1.9.1相同的问题。

当我使用sudo时,upstart服务命令确实有效,即使我是root用户:

$ whoami
root
$ service docker status
status: Unbekannter Auftrag: docker

$ sudo service docker status
docker start/running, process 7394

这似乎取决于环境变量。

service docker status在使用su -成为root用户时有效,但在仅使用su时则无效:

$ su
Password:
$ service docker status
status: unknown job: docker
$ exit
$ su -
Password:
$ service docker status
docker start/running, process 2342

答案 2 :(得分:8)

这个问题花了我几个小时。

我的系统是Ubuntu 14.04,我通过sudo apt-get install docker安装了docker,并输入了导致问题的其他一些命令。

  1. 我谷歌“未知工作:docker.io”,答案没有生效。

  2. 我在/etc/init.d/找了“未知工作”的原因,找不到合适的答案。

  3. 我在/etc/init.d/找了调试脚本的方法,找不到合适的答案。

  4. 然后,我干净了:

    1. sudo apt-get remove docker.io
    2. rm find / -name "*docker*"之前的所有可疑文件,例如/etc/init/docker.io.conf/etc/init.d/docker.io
  5. 按照最新的官方文件https://docs.docker.com/installation/,有很多过时的文件可能会产生误导。

  6. 最后,它解决了这个问题。

    注意:如果您在中国,由于GFW,您可能需要设置https_proxy以从https://get.docker.com/安装docker。

答案 3 :(得分:3)

我知道这些问题已得到解答,但是发生这种情况的原因可能是因为您没有将用户名添加到泊坞组。

以下是执行此操作的步骤:

添加泊坞组(如果它尚不存在):

sudo groupadd docker

将已关联的用户${USER}添加到泊坞窗组。更改用户名以匹配您的首选用户:

sudo gpasswd -a ${USER} docker

重启Docker守护程序:

sudo service docker restart

如果您使用的是Ubuntu 14.04-15.10 *请改用docker.io:

sudo service docker.io restart

(如果您使用的是Ubuntu 16.04,则该服务简称为“docker”)

执行newgrp泊坞窗或注销/以激活对群组的更改。

答案 4 :(得分:0)

如果出现错误,守护程序未运行且以更多输出启动,例如

sudo docker daemon -D

并且输出是超时,这可以在Ubuntu下修复,执行如下:

$ ps axf | grep docker | grep -v grep | awk '{print "kill -9 " $1}' | sudo sh

(资料来源:https://github.com/moby/moby/issues/22507#issuecomment-219601289

答案 5 :(得分:0)

我遇到了同样的问题,这是由于未安全注册表中的行造成的: 的/ etc /默认/搬运工