目录

docker远程响应

【docker远程响应】

一、实验目的:

1、熟练掌握docker的安装和使用

2、熟练掌握docker的文件配置

二、实验内容:

需求:

使用centos完成docekr的远程响应

完成

1、docker加速器配置

2、修改默认存储配置

3、docker远程响应

三、实验结果

添加加速器

vi /etc/docker/daemon.json

添加以下内容

{

“registry-mirrors”: [

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”

]

}

https://i-blog.csdnimg.cn/direct/157862723a284183bb481a3e79a60e65.png

重置配置和docker服务

systemctl daemon-reload 更新源

systemctl docker

如果启动有错误可以去日志查看

journalctl -u docker.service -f

https://i-blog.csdnimg.cn/direct/0b593b6acaf64c8c837e7d1ceca33d25.png

修改默认存储位置

安装docker之后,默认的镜像及容器存储路径为/var/lib/docker,可以使用命令docker info查看。

docker info

https://i-blog.csdnimg.cn/direct/d17ae37227ec40b2a87366df4cde7259.png

这是系统默认位置

https://i-blog.csdnimg.cn/direct/7f6bec44cc214c11b7b59b115d08980c.png

配置 docker 远程响应

编辑 /etc/docker/daemon.json

添加hosts参数以启用 TCP 监听,同时保留本地 UNIX 套接字:

https://i-blog.csdnimg.cn/direct/55381e40d62e4e669b33cad4d589b32e.png

重启

systemctl daemon-reload

systemctl restart docker

处理 systemd 冲突

若系统使用systemd(如 Rocky Linux/CentOS),需创建覆盖文件

mkdir -p /etc/systemd/system/docker.service.

vim /etc/systemd/system/docker.service.d/override.conf

[Service]

ExecStart=

ExecStart=/usr/bin/dockerd

重启服务:

systemctl daemon-reload && systemctl restart docker

https://i-blog.csdnimg.cn/direct/abb413f88f724d7f8b377c7912fb1b93.png

docker -H tcp://10.1.1.123:2375 info

https://i-blog.csdnimg.cn/direct/f25cea5ffa1c4338ae5090d893968d10.png

生成 TLS 证书

mkdir -p /etc/docker/certs && cd /etc/docker/certs

生成 CA 根证书

生成加密的 CA 私钥(4096位,AES-256加密)

openssl genrsa -aes256 -out ca-key.pem  4096   #注意需要输入至少4个字符,不然报错

生成 CA 根证书(有效期10年)

openssl req -new -x509 -days 3650 -key ca-key.pem  -sha256 -out ca.pem

https://i-blog.csdnimg.cn/direct/78d867425c3746e6b4c6086e292d8d4f.png

1.2 生成服务端证书

生成服务端私钥(不加密,便于自动加载)

openssl genrsa -out server-key.pem  4096

创建证书签名请求(CSR)

openssl req -subj “/CN=10.1.1.123” -sha256 -new -key server-key.pem  -out server.csr

设置扩展属性(仅用于服务端认证)

echo subjectAltName = IP:10.1.1.123 > extfile.cnf

https://i-blog.csdnimg.cn/direct/10a0e698c94647ee8eafdef2209ffc06.png

签发服务端证书

openssl x509 -req -days 365 -sha256 -in server.csr  -CA ca.pem  -CAkey ca-key.pem  \

-CAcreateserial -out server-cert.pem  -extfile extfile.cnf

https://i-blog.csdnimg.cn/direct/26aa0e7cf8c049fdacd4000c7e5dc1d4.png

1.3 生成客户端证书

生成客户端私钥

openssl genrsa -out client-key.pem  4096

创建客户端 CSR

openssl req -subj “/CN=client” -new -key client-key.pem  -out client.csr

设置扩展属性(客户端认证)

echo extendedKeyUsage = clientAuth > extfile-client.cnf

签发客户端证书

openssl x509 -req -days 365 -sha256 -in client.csr  -CA ca.pem  -CAkey ca-key.pem  \

-CAcreateserial -out client-cert.pem  -extfile extfile-client.cnf

https://i-blog.csdnimg.cn/direct/7aedd9ffd1ad4649be0bbf22a321d89e.png

1.4 设置证书的权限

chmod 0400 ca-key.pem  server-key.pem  client-key.pem

chmod 0444 ca.pem  server-cert.pem  client-cert.pem

https://i-blog.csdnimg.cn/direct/85b0cfe620a04382aa851784da844471.png

docker服务端配置 TLS 监听

修改 daemon.json :

{

“tls”: true,

“tlscacert”: “/path/to/ca.pem”,

“tlscert”: “/path/to/server-cert.pem”,

“tlskey”: “/path/to/server-key.pem”,

“hosts”: [“unix:///var/run/docker.sock”,  “tcp://0.0.0.0:2376”]   #注意:加密和不加密用的端口不一样

}

https://i-blog.csdnimg.cn/direct/a72ac1216ef24890939acf58e1bbb737.png

3.3、防火墙配置

开放 TCP 端口根据是否加密选择):若防火墙未开,省掉该步

非加密端口(仅限内网)

firewall-cmd –permanent –add-port=2375/tcp

加密端口(推荐公网)

firewall-cmd –permanent –add-port=2376/tcp

firewall-cmd –reload

重启 Docker 服务

systemctl restart docker

journalctl -u docker.service  -f

https://i-blog.csdnimg.cn/direct/5a028a9c598f481684c2eb9856c47fdc.png

发现前面的文件写错了(前面图片是已经更正完的)

远程客户端测试连接

传输证书到客户端

将 ca.pem 、client-cert.pem 、client-key.pem 复制到客户端 ~/.docker/ 目录。

scp ca.pem client-cert.pem client-key.pem

https://i-blog.csdnimg.cn/direct/3f8e756e184e4a39a6bb08c56609d889.png

docker -H tcp://10.1.1.123:2376 –tlsverify ps

然后这里出现了错误

https://i-blog.csdnimg.cn/direct/9ad61eed3f874b0ea9a65c2c6b89b00d.png

从日志中可以看到,Docker 服务已经成功启动,并且监听在 /var/run/docker.sock 和 [::]:2376 端口。然而,客户端尝试连接时有错误,这表明客户端在尝试通过 TLS 连接到 Docker 守护进程时,未能提供有效的客户端证书。

docker -H tcp://10.1.1.123:2376 –tlsverify –tlscacert=ca.pem  –tlscert=client-cert.pem  –tlskey=client-key.pem  info

https://i-blog.csdnimg.cn/direct/9f8de2ddb685447bb568d8f1b117771f.png