当前位置: 首页 > article >正文

【docker远程响应】

一、实验目的:

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

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

二、实验内容:

需求:

使用centos完成docekr的远程响应

完成

1、docker加速器配置

2、修改默认存储配置

3、docker远程响应

三、实验结果

添加加速器

vi /etc/docker/daemon.json

添加以下内容

{

        "registry-mirrors": [

                                "https://docker.registry.cyou",

                                "https://docker-cf.registry.cyou",

                                "https://dockercf.jsdelivr.fyi",

                                "https://docker.jsdelivr.fyi",

                                "https://dockertest.jsdelivr.fyi",

                                "https://mirror.aliyuncs.com",

                                "https://dockerproxy.com",

                                "https://mirror.baidubce.com",

                                "https://docker.m.daocloud.io",

                                "https://docker.nju.edu.cn",

                                "https://docker.mirrors.sjtug.sjtu.edu.cn",

                                "https://docker.mirrors.ustc.edu.cn",

                                "https://mirror.iscas.ac.cn",

                                "https://docker.rainbond.cc"

        ]

}

重置配置和docker服务

systemctl daemon-reload 更新源

systemctl docker

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

journalctl -u docker.service -f

修改默认存储位置

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

docker info

这是系统默认位置

配置docker远程响应

编辑 /etc/docker/daemon.json

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

重启

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

docker -H tcp://10.1.1.123:2375 info

生成 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 

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

# 签发服务端证书

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

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

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

1.4 设置证书的权限

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

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

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"]   #注意:加密和不加密用的端口不一样

}

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

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

远程客户端测试连接

传输证书到客户端

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

scp ca.pem client-cert.pem client-key.pem root@10.1.1.123:~/.docker/

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

然后这里出现了错误

从日志中可以看到,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


http://www.kler.cn/a/577545.html

相关文章:

  • 解决电脑问题(8)——网络问题
  • 【竞技宝】LOL:Kanavi备战全球先锋赛苦练新打野?
  • 【音视频】RTP封包H265信息
  • VS2022安装Framework 4.0和.NET Framework 4.5
  • XMall商城listSearch存在SQL注入漏洞(DVB-2025-8924)
  • 启动/关闭jar服务shell脚本【Linux】
  • 系统架构设计师—系统架构设计篇—架构设计与生命周期
  • 配置 Thunderbird 以使用 QQ 邮箱
  • 打造智能聊天体验:前端集成 DeepSeek AI 助你快速上手
  • android13打基础: 保存用户免得下次重新登录逻辑
  • 【GPT入门】第7课 LTM介绍
  • 旋转编码器原理与应用详解:从结构到实战 | 零基础入门STM32第四十七步
  • 单链表基本操作的实现与解析(补充)
  • 笔记:在Git中.gitmodules文件的功能和作用和如何使用
  • 模型微调-基于LLaMA-Factory进行微调的一个简单案例
  • 纷享销客vs销售易:制造行业CRM选型深度解析
  • 《基于锂离子电池放电时间常数的自动化电量评估系统设计》k开题报告
  • 算法系列之广度优先搜索解决妖怪和尚过河问题
  • java调用c++
  • 深入剖析淘宝商品详情 API 接口 item_get