【问题标题】:Run Docker in daemon mode以守护程序模式运行 Docker
【发布时间】:2016-03-13 11:34:56
【问题描述】:

我发出了这个命令

sudo docker daemon -H unix:///var/run/docker.sock -H tcp://xxxx:8400 -H tcp://yyyyy:2375 &

它工作正常。但它没有返回到我的控制台客户端。它没有完成命令。

WARN[0000] /!\ DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING /!\ 
WARN[0000] /!\ DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING /!\ 
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Graph migration to content-addressability took 0.00 seconds 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   
.
INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=20f81dd execdriver=native-0.2 graphdriver=aufs version=1.10.3
INFO[0000] API listen on 172.31.16.21:2375              
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] API listen on 172.31.16.21:8400 

这次我可以从外部客户端访问它。但如果杀死那个控制台。我无法从外部客户端访问它。

对此有任何解决方案吗?

不知道为什么 docker 对于初学者来说变得如此复杂:)

【问题讨论】:

  • 尝试在命令中添加-d
  • 请注意它不仅仅是 docker ,它是 docker daemon 。如果尝试,它会给出 -> 提供但未定义的标志:-d

标签: docker daemon docker-registry


【解决方案1】:

在我说别的之前,我需要警告你不要像这样运行 Docker 守护进程,监听 TCP 连接而不是 Unix 文件套接字连接。您可能不会听我的,但是当您有时间时,您应该阅读我即将链接的文档中的警告,因为它很危险。所以,无论如何...当您应该更改 docker 的初始化选项时,您正在运行 docker 守护进程。 The documentation 为您详细说明应该编辑哪个文件以更改 Docker 守护程序的配置。 请注意,运行命令和配置文件中的重复选项将意味着守护程序将无法启动。因此,如果您更改 daemon.json 文件并尝试使用这些命令行运行守护程序选项,您的服务器将忽略它们。要编辑的文件是/etc/docker/daemon.json,您应该在其中设置这些选项,如下所示:

{
  hosts: [
    'unix:///var/run/docker.sock',
    'tcp://xxxx:8400',
    'tcp://yyyyy:2375'
  ]
}

编辑完该文件后,您现在应该重新启动 docker 守护进程:

sudo service docker restart

或者,如果您使用的是 systemd:

sudo systemctl restart docker.service

您遇到的核心问题也与在终端内运行守护进程有关。将来,请查看 nohup 命令在终端内运行进程并在关闭终端后使其保持活动状态。你可以在man nohup阅读更多内容。

【讨论】:

  • 谢谢,我会试试这个。我是 docker 的初学者 :) 所以不知道正确的方法是什么。我现在会关注这个。
  • 不起作用,添加此文件后,我的守护程序无法启动。知道如何解决吗?
最近更新 更多