Docker 学习8.1 Docker API 8.2初始RemoteAPI 8.3 Docker Remote API 进行认证

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容