此处示例的证书名称为 site.crt
,私钥名称为 site.key
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;
}
}
docker config create config的名称 config内容(文件名)
docker secret create secret的名称 secret内容(文件名)
示例:
docker config create site.conf site.conf
docker secret create site.key site.key
docker secret create site.crt site.crt
docker config ls
docker secret ls
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;'"
docker service update --config-rm config名称 --config-add source=config名称,target=容器内文件,mode=权限 --secret-rm secret名称 --secret-add secret名称 --config source=secret名称,target=容器内文件,mode=容器内权限 服务名称
参数说明:
--config-rm
: 需要移除的 Config--config-add
: 需要新增的 Config--secret-rm
: 需要移除的 Secret--secret-add
: 需要新增的 Secret示例:
docker service update --config-rm site.conf --config-add source=site-v2.conf,target=/etc/nginx/conf.d/site.conf,mode=0440 nginx
docker service ls
docker service ps nginx
curl https://127.0.0.1:10443
使用自签名的证书时,需要添加 --cacert
参数指定根证书或使用 --insecure
参数忽略 SSL 证书
curl --cacert root-ca.crt https://127.0.0.1:10443
curl --insecure https://127.0.0.1:10443