8.1Docker API
docker生态有3种RESTful风格的API:
Register API:提供了与来存储Docker镜像的Docker Register集成功能。
Docker Hub API:提供了与Docker Hub集成的API。自建镜像仓如Harbor,使用自己的API。
Docker Remote API:提供了与Docker守护进程进行集成的功能。
8.2初始Remote API
在本地查询Docker api
echo -e "GET /info HTTP/1.0\r\n" | sudo nc -U /var/run/docker.sock
对于Ubuntu和Debian,通过编辑/etc/default/docker文件,将docker的守护进程绑定到指定网络接口。
配置方法:
https://blog.csdn.net/weixin_43730279/article/details/103479693
测试方法:
使用Info API接入点
curl http://0.0.0.0:2375/info
使用POSTMAN测试
Docker Remote API 官方文档
https://docs.docker.com/engine/api/v1.40/#section/Authentication
8.3Docker Remote API 进行认证
8.3.1 建立证书授权中心
使用PKI密钥认证体系
检查是否安装openssl
创建CA目录
mkdir /etc/docker
生成私钥
echo 01 | sudo tee ca.srl
openssl genrsa -des3 -out ca-key.pem
密码123123
创建CA证书
openssl req -new -x509 -days 365 -key ca-key.pem -out ca.pem
输入上述密码,其他默认为空回车
8.3.2 创建服务器的 证书签名请求CSR 和密钥
创建服务器密钥
openssl genrsa -des3 -out server-key.pem
密钥123123
创建服务器CSR
openssl req -new -key server-key.pem -out server.csr
注:Common Name 不能为空,为docker服务器域名,或者 * 为任何服务器都可以使用该证书
对CSR进行签名
openssl x509 -req -days 365 -in server.csr -CA ca.pem \
-CAkey ca-key.pem -out server-cert.pem
输入CA密钥文件密码123123
移除服务端密钥密码 ----不想在启动docker守护进程时启动时候在输入一遍密码
openssl rsa -in server-key.pem -out server-key.pem
设置docker服务器端密钥和证书的安全属性
chmod 0600 /etc/docker/server-key.pem /etc/docker/server-cert.pem \
/etc/docker/ca-key.pem /etc/docker/ca.pem
8.3.3配置Docker守护进程
Ubuntu在 /lib/systemd/system/docker.service
ExecStart
-H tcp tcp://0.0.0.0:2376 --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem
重新加载docker守护进程
systemctl --system daemon-reload
8.3.4创建客户端证书和密钥
openssl genrsa -des3 -out client-key.pem
密码123123
创建客户端CSR
openssl req -new -key client-key.pem -out client.csr
添加客户端认证属性
echo extendedKeyUsage = clientAuth > extfile.cnf
对客户端CSR进行签名
openssl x509 -req -days 365 -in client.csr -CA ca.pem \
-CAkey ca-key.pem -out client-cert.pem -extfile extfile.cnf
移除客户端密码的密钥
openssl rsa -in client-key.pem -out client-key.pem
8.3.5 配置docker客户端开启认证功能
mkdir -p ~/.docker/
cp ca.pem ~/.docker/ca.pem
cp client-key.pem ~/.docker/key.pem
cp client-cert.pem ~/.docker/cert.pem
chmod 0600 ~/.docker/key.pem ~/.docker/cert.pem
测试TLS认证过程连接
docker -H=0.0.0.0:2376 --tlsverify info
TLS的连接方式会 docker会在我们~/.docker/目录下查找刚刚配置的文件
上述方法不行
https://www.cnblogs.com/zooqkl/p/10345083.html