Docker Swarm 学习笔记(七): 在 Docker Swarm 集群中部署使用 config 和 secret 的服务(以 Nginx 服务为例)
huty
2023年05月25日 · 阅读 1,140
1、 准备 nginx 的 TLS 证书
- 方式一: 直接使用 CA 的证书
- 方式二: 使用自签名的证书
此处示例的证书名称为 site.crt
,私钥名称为 site.key
2、 创建 Nginx 配置文件
vim site.conf
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /run/secrets/site.crt;
ssl_certificate_key /run/secrets/site.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
3、 创建 Docker 的 secret 和 config 对象
docker secret create secret的名称 secret内容(文件名)
docker config create config的名称 config内容(文件名)
示例:
docker secret create site.key site.key
docker secret create site.crt site.crt
docker config create site.conf site.conf
4、 检查 Docker 的 secret 和 config 对象
docker secret ls
docker config ls
5、 创建 Docker Swarm 服务
docker service create --name 服务名称 --secret secret名称 --config source=config名称,target=容器内文件,mode=模式(权限) 镜像名称:镜像TAG 命令
参数说明:
--name
: 服务名称
--secret
: 需要挂载至容器内部的 secret,挂载后文件在容器内部的 /run/secrets/ 目录,文件名为 secret 的名称
--config
: 需要挂载至容器内部的 config,source 指定 config 的名称、target 指定容器内部的文件、mode 指定容器内部文件的权限
示例:
docker service create --name nginx --secret site.key --secret site.crt --config source=site.conf,target=/etc/nginx/conf.d/site.conf,mode=0440 --publish published=10443,target=443 nginx:1.23.4-alpine3.17 sh -c "exec nginx -g 'daemon off;'"
6、 查看服务及及任务列表
docker service ls
docker service ps nginx
7、 访问 Nginx 服务
curl https://127.0.0.1:10443
使用自签名的证书时,需要添加 --cacert
参数指定根证书
curl --cacert root-ca.crt https://127.0.0.1:10443
8、 更新 Nginx 配置文件
vim site.conf
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /run/secrets/site.crt;
ssl_certificate_key /run/secrets/site.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
}
9、 新增 Docker config 对象
docker config create site-v2.conf site.conf
10、 更新 Docker Swarm 服务
docker service update --config-rm site.conf --config-add source=site-v2.conf,target=/etc/nginx/conf.d/site.conf,mode=0440 nginx
11、 访问更新后的 Nginx 服务
curl https://127.0.0.1:10443
使用自签名的证书时,需要添加 --cacert
参数指定根证书
curl --cacert root-ca.crt https://127.0.0.1:10443
分类:
Docker
DockerSwarm
标签:
Docker
DockerSwarm
评论已关闭