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

Docker配置带证书的远程访问监听

一、生成证书和密钥

1、准备证书目录和生成CA证书

# 创建证书目录

mkdir -p /etc/docker/tls
cd /etc/docker/tls

# 生成CA密钥和证书

openssl req -x509 -newkey rsa:4096 -keyout ca-key.pem \
-out ca-cert.pem -days 365 -nodes -subj "/CN=Docker CA"

2、为Docker守护进程(server)配置TLS证书

# 生成服务器密钥和证书签名请求(CSR)

openssl req -newkey rsa:4096 -keyout server-key.pem \
-out server-csr.pem -nodes -subj "/CN=192.168.XX.230"

# 创建一个配置文件

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no[req_distinguished_name]
CN = 192.168.XX.230[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]
IP.1 = 192.168.XX.230
IP.2 = 127.0.0.1
DNS.1 = localhost

# 使用CA证书对服务器CSR进行签名

openssl x509 -req -in server-csr.pem -CA ca-cert.pem \
-CAkey ca-key.pem -CAcreateserial -out server-cert.pem \
-days 365 -extensions v3_req -extfile openssl.cnf

2、为Docker命令(client)配置TLS证书

# 生成客户端密钥和证书签名请求(CSR)

openssl req -newkey rsa:4096 -keyout client-key.pem \
-out client-csr.pem -nodes -subj "/CN=client"

# 生成客户端密钥和证书签名请求(CSR)

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

二、配置Docker守护进程

编辑Docker守护进程的配置文件(通常是/etc/docker/daemon.json),添加以下内容

{"tlsverify": true,"tlscacert": "/etc/docker/tls/ca-cert.pem","tlscert": "/etc/docker/tls/server-cert.pem","tlskey": "/etc/docker/tls/server-key.pem","hosts": ["tcp://0.0.0.0:2376"]
}

编辑Docker服务文件

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd 

systemctl daemon-reload

重启Docker守护进程

sudo systemctl restart docker

三、配置Docker客户端

将生成的客户端证书和密钥放置在客户端机器上的一个目录中,例如~/.docker/tls:

mkdir -p ~/.docker/tls
cp client-cert.pem ~/.docker/tls/
cp client-key.pem ~/.docker/tls/
cp ca-cert.pem ~/.docker/tls/

在运行docker命令时,指定客户端证书和密钥:

docker --tlsverify \--tlscacert ~/.docker/tls/ca-cert.pem \--tlscert ~/.docker/tls/client-cert.pem \--tlskey ~/.docker/tls/client-key.pem \-H tcp://192.168.XX.230:2376 \
images

为了方便,可以设置环境变量以避免每次命令都指定证书路径:

export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker/tls
export DOCKER_HOST=tcp://192.168.XX.230:2376

环境变量场景,ca证书需要命名为ca.pem,否则找不到ca文件:Failed to initialize: unable to resolve docker endpoint: open /home/user1/.docker/tls/ca.pem: no such file or directory

好像也要指定,否则会报错:error during connect: Get "https://192.168.XX.230:2376/v1.45/containers/json?all=1": remote error: tls: certificate required

docker --tlscert ~/.docker/tls/client-cert.pem \--tlskey ~/.docker/tls/client-key.pem \ps -a

相关文章:

  • 身份证实名认证:通往数字安全与便捷生活的钥匙
  • 璞华ChatBI闪耀2025数博会:对话式数据分析引领数智化转型新范式
  • Jmeter中同步定时器使用注意点
  • 元素滚动和内容垂直居中同时存在,完美的 html 元素垂直居中的方法flex + margin: auto
  • IP地址与子网掩码
  • IDEA add gitlab account 提示
  • Windows 同步技术-一次性初始化
  • 一文读懂https
  • 系统分析师第八、九章
  • 管理100个小程序-很难吗
  • 【源码分析】Linux内核ov13850.c
  • 异构迁移学习(无创脑机接口中的跨脑电帽迁移学习)
  • 开源 RAG 引擎:文档理解精准、检索高效、可视化干预灵活,一站式搞定
  • 钧瓷产业原始创新的许昌共识:技术破壁·产业再造·生态重构(一)
  • Redis-cli常用参数及功能的详细说明
  • (20)VTK C++开发示例 --- 读取 DEM(高程地图)文件
  • 通过Quartus II实现Nios II编程
  • 影刀RPA怎么制作文生图,把网站上图片获取到本地文件夹工作流
  • 【已解决】Chrome开发工具栏无法看到React Developer Tools
  • 伺服器用什么语言开发呢?做什么用什么?
  • 停止水资源共享、驱逐武官,印度对巴基斯坦宣布多项反制措施
  • 看正背面月壤、听火星上的声音,记者探营“中国航天日”科普展
  • 对话地铁读书人|中学教师董女士:借来的书更好看
  • A股三大股指集体高开,黄金股大幅回调
  • 美学术界发起集体抗议,百余高校联署声明抵制政府干预
  • 新童谣童诗征稿活动在沪开启:设三个创作主题,面向全国征集