我是docker的新手,想要以守护进程模式启动它,听取特定的IP地址和端口。在documentation中,据说这可以通过编写sudo /usr/bin/docker daemon -H 0.0.0.0:5555
来完成。然后它说我可以使用此命令docker ps
列出正在运行的容器。如果我尝试这个,我收到以下消息:
获取http:///var/run/docker.sock/v1.20/containers/json?all=1:拨打unix /var/run/docker.sock:没有这样的文件或目录。
- 您是否尝试连接到没有TLS的启用TLS的守护程序?
- 您的docker守护程序是否正常运行?
我无法与之互动。我找了一个解决方案,但没有运气。有什么建议吗?
P.S。如何在后台运行此守护程序?我试着追加一个&但我一直停留在输出上,直到按下ctrl + c。
提前致谢
答案 0 :(得分:7)
在带有docker-ce(17.03.1~ce-0~ubuntu-xenial
)的Ubuntu(16.04 LTS)上执行以下操作,使docker侦听TCP端口而不是套接字。
添加包含以下内容的文件/etc/systemd/system/docker.service.d/override.conf
:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
使用以下内容添加文件/etc/docker/daemon.json
{
"hosts": [
"tcp://127.0.0.1:2375"
]
}
重新加载(systemctl daemon-reload
)并重新启动(systemctl restart docker.service
)泊坞广告。
供参考:https://github.com/moby/moby/issues/25471
修改强>
小心,所以恶魔只会听取忽略本地请求的网络端口。 要使docker同时监听远程和本地,请编辑daemon.json但保留标准的unix socket
{
"hosts" : [
"unix:///var/run/docker.sock",
"tcp://<docker-host-ip-or-localhost>:2375"
]
}
Docker守护程序连接选项docs
答案 1 :(得分:4)
在 Mac OSX 上,您运行Docker Quickstart终端应用程序以查看:
Machine default already exists in VirtualBox.
Starting machine default...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
Setting environment variables for machine default...
...
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
现在
docker ps
应该有效
在 Linux 上,例如Ubuntu prepending sudo可能是必要的。 例如。
docker ps
将导致:
Get http:///var/run/docker.sock/v1.20/containers/json: dial unix /var/run/docker.sock: permission denied.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?
但是
sudo docker ps
会奏效。
请参阅 https://docs.docker.com/articles/basics/
要检查您的泊坞窗服务是否正在运行,您可以致电
sudo service --status-all 2>&1 | grep docker
它应该显示:
[ - ] docker
有时您的码头工作人员可能已损坏 见:Docker daemon does not start or restart
答案 2 :(得分:4)
我找到了解决问题的方法。我指定在IP x和端口y上运行的docker,但docker只监听该套接字。我不得不在unix套接字上添加另一个-H标志,以便收听本地请求:
<div ng-controller="myCtrl">
<select
ng-model="myOption"
ng-options="value.id as value.label group by value.group for value in myOptions" ng-change="selectedValue()">
<option>--</option>
</select>
<div>
ng-model value: {{myOptionnew}}
</div>
</div>
var app = angular.module('myExample', []);
function myCtrl($scope) {
$scope.myOptions = [{
"id": 106,
"group": "Group 1",
"label": "Item 1"
},{
"id": 107,
"group": "Group 1",
"label": "Item 2"
},{
"id": 110,
"group": "Group 2",
"label": "Item 3"
}];
$scope.selectedValue = function()
{
alog($scope.myOption);
$scope.myOptionnew = $scope.myOption;
}
};
答案 3 :(得分:1)
这个主题非常有用,所以我想通过docker 14.04.1 LTS
(可能与docker-ce一起工作)为Ubuntu 1.12.6-cs13
提供帮助。版本也一样)。对于这个Ubuntu版本,systemd
方法(也/etc/sysconfig/docker
)是不可能的,截至本文撰写时,官方docker文档没有使用upstart
在网络上监听docker守护程序的安装后指南对于Ubuntu 14.04.1 LTS
。我发现下面的方法效果很好:
创建/etc/default/docker
带内容的文件
DOCKER_OPTS = "-H tcp://MACHINE-IP:2375 -H unix:///var/run/docker.sock"
重新启动docker service sudo service docker restart
。执行此操作后,docker守护程序开始在网络上侦听,守护程序日志看起来很干净。如果有更好的方法,也许更有经验的码头用户可以加入。
答案 4 :(得分:0)
出于某种原因,凤凰城的解决方案给了我错误。所以我找到了另一种方式 -
我编辑了 / etc / sysconfig / docker 并更改了OPTIONS参数
OPTIONS='--selinux-enabled -H=unix:///var/run/docker.sock -H=0.0.0.0:2375'
然后我重新启动了docker守护程序
systemctl restart docker
并且有效。