CodeGym /课程 /Docker SELF /配置和秘密的处理

配置和秘密的处理

Docker SELF
第 20 级 , 课程 0
可用

6.1 命令 docker config

Docker 提供了内置的机制来管理配置和机密,这使得在容器中安全且方便地管理配置文件和敏感数据变得容易。这些机制有助于提高安全性并简化分布式系统中的配置管理。在本次讲座中,我们将学习如何使用 docker configdocker secret 命令,同时会提供示例和最佳实践。

配置操作基础

命令 docker config 允许管理配置文件,这些文件可以被 Docker Swarm 的服务使用。配置提供了一种传递应用程序设置和参数的便捷方式。

docker config 的主要命令

  1. docker config create — 创建新的配置
  2. docker config ls — 查看所有配置列表
  3. docker config inspect — 获取配置信息
  4. docker config rm — 删除配置

docker config 的使用示例

创建配置

创建配置使用命令 docker config create。以下是为 Nginx 创建一个配置文件的示例。

创建文件 nginx.conf

nginx

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 中创建配置:

Terminal

docker config create nginx_config ./nginx.conf

2. 查看所有配置列表

查看所有已创建的配置使用命令 docker config ls

Terminal

docker config ls

命令输出:

Terminal

ID                                                                                       NAME           CREATED             UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8   nginx_config    10秒前             10秒前

3. 在服务中使用配置

使用创建的配置创建服务:

Terminal

docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p 8080:80 nginx

4. 删除配置

删除配置使用命令 docker config rm

Terminal

docker config rm nginx_config

6.2 命令 docker secret

命令 docker secret 用于管理“秘密”,比如密码、API密钥和证书,这些东西可以通过 Docker Swarm 的服务安全使用。秘密是加密存储的,只有使用这些秘密的服务才能访问。

docker secret 的主要命令

  1. docker secret create — 创建新秘密
  2. docker secret ls — 列出所有秘密
  3. docker secret inspect — 获取秘密的详细信息
  4. docker secret rm — 删除秘密

使用 docker secret 的例子

1. 创建秘密

使用命令 docker secret create 创建秘密。以下是创建数据库密码秘密的例子。

创建文件 db_password.txt:

Text

我的秘密密码

在 Docker 中创建秘密:

Terminal

docker secret create db_password ./db_password.txt

2. 查看所有秘密

使用命令 docker secret ls 查看所有已创建的秘密:

Terminal

docker secret ls

命令输出:

Terminal

ID                                                                                    NAME           CREATED             UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8   db_password    10 秒前            10 秒前

3. 在服务中使用秘密

创建一个使用秘密的服务:

Terminal

docker service create --name postgres --secret db_password -e 
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres

4. 删除秘密

使用命令 docker secret rm 删除秘密:

Terminal

docker secret rm db_password

6.3 实践示例和最佳实践

实践示例和最佳实践

示例 1: 在 Web 应用中使用配置和秘密

创建配置文件和秘密

Terminal

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

创建使用配置和秘密的服务

Terminal

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

nginx

user www-data;
worker_processes 4;

创建新版本的配置

Terminal

docker config create nginx_config_v2 ./nginx.conf

用新配置更新服务

Terminal

docker service update --config-rm nginx_config --config-add 
source=nginx_config_v2,target=/etc/nginx/nginx.conf nginx
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION