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