Docker如何使用端口2375和4243?

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

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

dockerd -H套接字可以使用dockerd -H选项在任何端口上configuration。 我看到的通用docker端口包括:

  • 2375:未encryption的docker socket,远程root无密码访问主机
  • 2376:tlsencryption套接字,很可能这是你的CI服务器4243端口作为https 443端口的修改
  • 2377:swarm模式套接字,适用于swarmpipe理器,不适用于docker客户端
  • 5000:dockerregistry服务
  • 4789和7946:覆盖networking

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

我强烈build议禁用2375端口并保护您的dockersockets。 远程利用此端口以获得完全的根访问权限而不需要远程密码是微不足道的。 命令如此简单:

 docker -H $your_ip:2375 run -it --rm \ --privileged -v /:/rootfs --net host --pid host busybox 

这可以在任何一台使用docker客户端的机器上运行,让你的主机上有一个root shell,在/ rootfs下有完整的文件系统,你的networking在ip a下可见,每个进程在ps -ef下都可见。

要在Docker套接字上设置TLS安全性,请参阅这些指示信息。 https://docs.docker.com/engine/security/https/