我看到端口2375和4243的各种实例在搜索互联网时用于看似相同的事情.此外,我的本地机器要求我使用2375连接,而当我将它推送到CI服务器时,它需要设置为4243.
Docker使用这些端口的原因是什么?它们有何不同?
最佳答案
@H_404_8@可以使用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
这可以在任何具有docker客户端的计算机上运行,以便在主机上为某人提供root shell,并在/ rootfs下提供完整的文件系统,在ip a下显示您的网络,并在ps -ef下显示每个进程.
要在docker socket上设置TLS安全性,请参阅这些说明. https://docs.docker.com/engine/security/https/