如何将本地 docker 客户端连接到网络上的远程 docker 主机?
我在本地网络上有一个 ubuntu 服务器,我打算在上面设置容器。但是,此时我必须从开发机手动通过 SSH 进入该服务器,然后运行容器。
我尝试在开发箱上设置$DOCKER_HOST
环境变量,并确保在 docker 主机箱上打开了 2376 端口。但是当我尝试运行 docker 命令时,我不断收到以下消息:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
PS 有没有办法配置我的docker主机以将docker服务器绑定到不同的主机名和端口?
答案1
sudo docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -d &
这应该能满足您的要求。在主机上运行它,允许它监听任何 IP 并将其绑定到套接字。
答案2
Docker 在此处列出了使用相互 TLS 加密配置套接字远程访问的步骤. 仔细按照步骤操作,确保服务器验证客户端证书的 CA。由于信任 CA 签名的证书,因此在这种情况下您需要拥有自签名 CA。
所涉及的步骤包括:
- 创建您自己的 CA 密钥
- 创建服务器密钥并使用服务器主机名进行签名
- 创建客户端密钥并使用特殊客户端扩展字段进行签名
- 在 docker 主机上加载服务器密钥和 CA,配置其监听 2376,并验证客户端的 TLS
- 在远程客户端上加载客户端密钥和 CA,将 Docker 主机配置到远程服务器,并验证服务器的 TLS
跳过任何这些步骤都可能导致服务器允许在没有密码或加密的情况下通过众所周知的协议进行根级别访问,而这种协议在互联网上被积极扫描和利用。