6.1 Comando docker config
O Docker oferece mecanismos embutidos pra gerenciar configurações e segredos, o que facilita e torna mais seguro o gerenciamento de arquivos de configuração e dados confidenciais nos containers. Esses mecanismos ajudam a melhorar a segurança e simplificar a administração de configurações em sistemas distribuídos. Nessa aula, vamos ver como usar os comandos docker config
e docker secret
, com exemplos e boas práticas.
Fundamentos do trabalho com configurações
O comando docker config
permite gerenciar arquivos de configuração que podem ser usados pelos serviços no Docker Swarm. As configurações oferecem uma forma prática de passar parâmetros e ajustes pro aplicativo.
Principais comandos do docker config
docker config create
— Criação de uma nova configuraçãodocker config ls
— Lista todas as configuraçõesdocker config inspect
— Obtém informações sobre uma configuraçãodocker config rm
— Remove uma configuração
Exemplo de uso do docker config
Criando uma configuração
Pra criar uma configuração, usa-se o comando docker config create
. Como exemplo, vamos criar um arquivo de configuração pro Nginx.
Crie o arquivo nginx.conf
:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
server {
listen 80;
location / {
return 200 'Olá, Mundo!';
add_header Content-Type text/plain;
}
}
}
Crie a configuração no Docker:
docker config create nginx_config ./nginx.conf
2. Lista de todas as configurações
Pra ver todas as configurações criadas, usa-se o comando docker config ls
:
docker config ls
Saída do comando:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 nginx_config 10 seconds ago 10 seconds ago
3. Usando a configuração no serviço
Crie um serviço usando a configuração criada:
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p 8080:80 nginx
4. Removendo uma configuração
Pra remover uma configuração, usa-se o comando docker config rm
:
docker config rm nginx_config
6.2 Comando docker secret
O comando docker secret
permite gerenciar "segredos", como senhas, chaves API e certificados, que podem ser usados com segurança por serviços no Docker Swarm. Os segredos são armazenados de forma criptografada e estão disponíveis apenas para os serviços que os utilizam.
Principais comandos do docker secret
docker secret create
— Criação de um novo segredodocker secret ls
— Lista de todos os segredosdocker secret inspect
— Obtenção de informações sobre um segredodocker secret rm
— Remoção de um segredo
Exemplo de uso do docker secret
1. Criando um segredo
Para criar um segredo, usamos o comando docker secret create
. Vamos criar um segredo para a senha do banco de dados como exemplo.
Crie um arquivo db_password.txt
:
minhasenhasecreta
Crie o segredo no Docker:
docker secret create db_password ./db_password.txt
2. Lista de todos os segredos
Para ver todos os segredos criados, use o comando docker secret ls
:
docker secret ls
Saída do comando:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 db_password 10 seconds ago 10 seconds ago
3. Usando o segredo em um serviço
Crie um serviço usando o segredo criado:
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
4. Removendo um segredo
Para remover um segredo, use o comando docker secret rm
:
docker secret rm db_password
6.3 Exemplos práticos e melhores práticas
Exemplos práticos e melhores práticas
Exemplo 1: Uso de configurações e segredos em uma aplicação web
Criando um arquivo de configuração e segredo
echo "user www-data;" > ./nginx.conf
echo "worker_processes auto;" >> ./nginx.conf
docker config create nginx_config ./nginx.conf
echo "mysenhaprincipal" > ./db_password.txt
docker secret create db_password ./db_password.txt
Criando serviços que usam configurações e segredos
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
Exemplo 2: Atualizando uma configuração
Atualizando o conteúdo do arquivo de configuração
Edite o arquivo nginx.conf
:
user www-data;
worker_processes 4;
Criando uma nova versão da configuração
docker config create nginx_config_v2 ./nginx.conf
Atualizando o serviço com a nova configuração
docker service update --config-rm nginx_config --config-add
source=nginx_config_v2,target=/etc/nginx/nginx.conf nginx
GO TO FULL VERSION