Docker如何使用端口2375和4243?

Ter*_*ekC 11 port docker

我看到端口2375和4243的各种实例在搜索互联网时用于看似相同的事情.此外,我的本地机器要求我使用2375连接,而当我将它推送到CI服务器时,它需要设置为4243.

Docker使用这些端口的原因是什么?它们有何不同?

BMi*_*tch 16

可以使用该dockerd -H选项在任何端口上配置docker socket .我看到的常见docker端口包括:

  • 2375:未加密的docker socket,远程root无密码访问主机
  • 2376:tls加密套接字,很可能这是您的CI服务器4243端口作为https 443端口的修改
  • 2377:群集模式套接字,用于群集管理器,不适用于docker客户端
  • 5000:docker注册服务
  • 4789和7946:覆盖网络

只有前两个设置dockerd -H,swarm模式可以配置为docker swarm init --listen-addr或的一部分docker swarm join --listen-addr.

我强烈建议禁用2375端口并固定docker socket.远程利用此端口获取完全root访问权限而无需远程密码,这是微不足道的.执行此操作的命令非常简单:

docker -H $your_ip:2375 run -it --rm \
  --privileged -v /:/rootfs --net host --pid host busybox
Run Code Online (Sandbox Code Playgroud)

这可以在任何具有docker客户端的计算机上运行,​​以便在主机上为某人提供root shell,其中/ rootfs下提供完整的文件系统,您的网络可见ip a,并且每个进程都可见ps -ef.

要在docker socket上设置TLS安全性,请参阅这些说明.https://docs.docker.com/engine/security/https/