Docker为C/S架构,服务端为docker daemon,客户端为docker.service,支持本地unix socket域套接字通信远程socket通信

默认为本地unix socket通信,要支持远程客户端访问需要做如下设置(不安全,仅用于测试),

1、UNIX域套接字

默认就是这种方式,会生成一个/var/run/docker.sock文件,UNIX域套接字用于本地进程之间的通讯, 这种方式相比于网络套接字效率更高,但局限性就是只能被本地的客户端访问。

2、TCP端口监听

服务端开启端口监听dockerd  -H | --host  IP:PORT , 客户端通过指定IP和端口访问服务端 docker -H IP:PORT

通过这种方式,任何人只要知道暴露的ip和端口就能随意访问docker服务(因为docker的权限很高,一旦被突破就能够取得服务端宿主机的最高权限),因此这种方式一定要使用TLS加密通信

3、启动docker守护进程时可以同时监听多个socket

Docker 客户端要和 Docker daemon 通过 REST API 通信,那就让我们看看它们可以采用的方法有哪些:

  1. Unix socket (-H unix:///var/run/docker.sock)
  2. Systemd socket activation (-H fd://)
  3. Tcp (-H tcp://127.0.0.1:2376)

1和2可理解成一种方式,就是同一台主机上的进程间通信。

dockerd  -H unix:///var/run/docker.sock  -H tcp://127.0.0.1:2376  -H tcp://127.0.0.1:2377

-H fd://方式不能与-H tcp://方式同时使用,若同时使用仅前者生效

若要socket和tcp方式同时使用,则使用unix:///和tcp://

05-27 23:32