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