Docker daemon可以通过3种类型的Socket监听Docker Engine API请求,分别是:unix、tcp、fd

默认,unix domain docker(或者IPC socket)在/var/run/docker.socket 创建,需要root权限或docker group。

如果,需要远程访问Docker daemon,需要使用tcp Socket。

首先需要知道的是,默认的构建是提供“未加密”与“未认证”的访问方式,因此,如果要安全访问,可以使用HTTPS加密的socket,或者是在docker daemon之前添加安全的web代理。

可以在所有IP接口访问2375端口

-H tcp://0.0.0.0:2375

或者在某个网络接口访问

-H tcp://192.168.59.103:2375

通常,使用2375作为未加密的端口,而使用2376作为加密端口。

当使用HTTPS加密的socket,需要注意的是只有TLS1.0+才能支持。SSLv3协议由于安全原因不再支持。

在基于systemd的系统中,可以通过systemd socket与daemon通信,只需要

dockerd -H fd://

也可以指定单独的socket

dockerd -H fd://3

如果,设定的socket activated files没有找到,docker会自动退出。

可以为Docker daemon设置多个监听的socket

# listen using the default unix socket, and on 2 specific IP addresses on this host.

$ sudo dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2

环境变量

Docker client会将DOCKER_HOST 环境变量转为-H选项

$ docker -H tcp://0.0.0.0:2375 ps
$ export DOCKER_HOST="tcp://0.0.0.0:2375"

$ docker ps

设置DOCKER_TLS_VERIFY环境变量等同于--tlsverify 选项

$ docker --tlsverify ps
# or
$ export DOCKER_TLS_VERIFY=1
$ docker ps

Docker client还可以设置HTTP_PROXYHTTPS_PROXYNO_PROXY环境变量。

基本用法

运行Docker在daemon模式

$ sudo <path to>/dockerd -H 0.0.0.0:5555 &

下载ubuntu镜像

docker -H :5555 pull ubuntu

设置多个socket

# Run docker in daemon mode
$ sudo <path to>/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock &
# Download an ubuntu image, use default Unix socket
$ docker pull ubuntu
# OR use the TCP port
$ docker -H tcp://127.0.0.1:2375 pull ubuntu

常见问题

如果出现错误

[root@localhost ~]# docker -H tcp://192.168.73.149:2375 ps
An error occurred trying to connect: Get http://192.168.73.149:2375/v1.24/containers/json: dial tcp 192.168.73.149:2375: getsockopt: no route to host

可查看是否关闭防火墙。

【参考】

1。docker官网:https://docs.docker.com/engine/reference/commandline/dockerd/\#daemon-socket-option

2。简书:https://www.jianshu.com/p/2ad009ae95ad

results matching ""

    No results matching ""