Linux (以 Ubuntu 为例)
1. 修改 Docker 配置文件
- 打开 Docker 的配置文件
/etc/docker/daemon.json
。如果该文件不存在,则可以创建一个新的。
bash
sudo nano /etc/docker/daemon.json
- 在配置文件中添加以下内容:
json
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375", "tcp://0.0.0.0:2376"]
}
- 这里,
"unix:///var/run/docker.sock"
表示使用 Unix 套接字,"tcp://0.0.0.0:2375"
和"tcp://0.0.0.0:2376"
表示让 Docker daemon 监听 2375 和 2376 端口,并允许来自任何 IP 地址(0.0.0.0
)的连接。
2. 重启 Docker 服务
- 保存配置文件后,需要重启 Docker 服务以使配置生效:
bash
sudo systemctl restart docker
3. 检查端口是否开放
- 你可以使用
netstat
命令检查 Docker daemon 是否正在监听这些端口:
bash
sudo netstat -tuln | grep 2375
sudo netstat -tuln | grep 2376
Windows
1. 打开 Docker Desktop 设置
- 右键点击 Docker Desktop 图标,选择
Settings
。
2. 进入 Docker Engine 配置
- 在左侧导航栏中,点击
Docker Engine
。
3. 配置监听端口
- 在配置文件中添加或修改以下内容:
json
{
"hosts": ["npipe://", "tcp://0.0.0.0:2375", "tcp://0.0.0.0:2376"]
}
- 确保使用双引号将配置项括起来,并且每个配置项之间使用逗号分隔。
4. 应用并重启 Docker
- 点击
Apply & Restart
按钮,让 Docker 应用新的配置并重启。
安全考虑
- 2375 端口:该端口通常用于未加密的 Docker 远程 API 访问。开放该端口可能会带来安全风险,因为它允许未加密的连接,攻击者可能会在网络上窃取信息或执行未经授权的操作。
- 2376 端口:这个端口通常用于安全的 Docker 远程 API 访问,需要配置 TLS 证书以确保安全通信。如果要使用 2376 端口,你需要生成并使用 TLS 证书,以下是基本步骤:
- 生成证书和密钥:
bash
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=localhost" -sha256 -new -key server-key.pem -out server.csr
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
- 将生成的证书和密钥添加到
/etc/docker/daemon.json
中:
json
{
"hosts": ["tcp://0.0.0.0:2376"],
"tlsverify": true,
"tlscacert": "/path/to/ca.pem",
"tlscert": "/path/to/server-cert.pem",
"tlskey": "/path/to/server-key.pem"
}
- 重启 Docker 服务。
注意事项:
- 对于生产环境,强烈建议使用 2376 端口并配置 TLS 证书,以确保 Docker 远程 API 的安全性。
- 开放这些端口可能会将 Docker 守护进程暴露在网络上,要确保你的网络环境是安全的,或者使用防火墙规则来限制对这些端口的访问。
通过上述步骤,你可以在不同操作系统上配置 Docker daemon 监听 2375 和 2376 端口,并根据需要进行安全加固。
扩展阅读:
【容器技术系列】探索篇: 探索多方式创建容器的神奇之旅