6.1 命令 docker config
Docker 提供了内置的机制来管理配置和机密,这使得在容器中安全且方便地管理配置文件和敏感数据变得容易。这些机制有助于提高安全性并简化分布式系统中的配置管理。在本次讲座中,我们将学习如何使用 docker config 和 docker secret 命令,同时会提供示例和最佳实践。
配置操作基础
命令 docker config 允许管理配置文件,这些文件可以被 Docker Swarm 的服务使用。配置提供了一种传递应用程序设置和参数的便捷方式。
docker config 的主要命令
docker config create— 创建新的配置docker config ls— 查看所有配置列表docker config inspect— 获取配置信息docker config rm— 删除配置
docker config 的使用示例
创建配置
创建配置使用命令 docker config create。以下是为 Nginx 创建一个配置文件的示例。
创建文件 nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
server {
listen 80;
location / {
return 200 '你好,世界!';
add_header Content-Type text/plain;
}
}
}
在 Docker 中创建配置:
docker config create nginx_config ./nginx.conf
2. 查看所有配置列表
查看所有已创建的配置使用命令 docker config ls:
docker config ls
命令输出:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 nginx_config 10秒前 10秒前
3. 在服务中使用配置
使用创建的配置创建服务:
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p 8080:80 nginx
4. 删除配置
删除配置使用命令 docker config rm:
docker config rm nginx_config
6.2 命令 docker secret
命令 docker secret 用于管理“秘密”,比如密码、API密钥和证书,这些东西可以通过 Docker Swarm 的服务安全使用。秘密是加密存储的,只有使用这些秘密的服务才能访问。
docker secret 的主要命令
docker secret create— 创建新秘密docker secret ls— 列出所有秘密docker secret inspect— 获取秘密的详细信息docker secret rm— 删除秘密
使用 docker secret 的例子
1. 创建秘密
使用命令 docker secret create 创建秘密。以下是创建数据库密码秘密的例子。
创建文件 db_password.txt:
我的秘密密码
在 Docker 中创建秘密:
docker secret create db_password ./db_password.txt
2. 查看所有秘密
使用命令 docker secret ls 查看所有已创建的秘密:
docker secret ls
命令输出:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 db_password 10 秒前 10 秒前
3. 在服务中使用秘密
创建一个使用秘密的服务:
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
4. 删除秘密
使用命令 docker secret rm 删除秘密:
docker secret rm db_password
6.3 实践示例和最佳实践
实践示例和最佳实践
示例 1: 在 Web 应用中使用配置和秘密
创建配置文件和秘密
echo "user www-data;" > ./nginx.conf
echo "worker_processes auto;" >> ./nginx.conf
docker config create nginx_config ./nginx.conf
echo "mysecretpassword" > ./db_password.txt
docker secret create db_password ./db_password.txt
创建使用配置和秘密的服务
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p
8080:80 nginx
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
示例 2: 更新配置
更新配置文件内容
修改文件 nginx.conf:
user www-data;
worker_processes 4;
创建新版本的配置
docker config create nginx_config_v2 ./nginx.conf
用新配置更新服务
docker service update --config-rm nginx_config --config-add
source=nginx_config_v2,target=/etc/nginx/nginx.conf nginx
GO TO FULL VERSION