Docker - Executando comandos em um contêiner em execução
Neste artigo veremos como podemos executar comandos em contêineres em execução. |
Para este artigo eu estou usando o seguinte ambiente:
Você também pode acompanhar o artigo usando o Docker instalado no Windows 10.
Se você ainda não conhece o Docker veja a série de artigos : Docker uma introdução básica
Neste artigo vamos usar o modo cliente do Docker emitindo os comandos a partir de um terminal que serão executados pelo Docker Daemon.
Vamos lá...
Recursos usados:
Executando comandos em Contêineres em execução
A partir do Docker Engine 1.3 (2014) foi introduzido o comando docker exec que permite executar comandos em um contêiner em execução.
Assim o primeiro requisito para usar este recurso é que o contêiner tem que estar em execução. Dessa forma se o contêiner estiver parado ou pausado o comando docker exec vai falhar.
Vamos iniciar criando um contêiner a partir de uma imagem existente que será obtida a partir do Docker Hub
Vamos usar a imagem oficial do alpine que é uma imagem Docker mínima do Alpine Linux com somente 5 MB de tamanho.
docker container run --name alp1 -it -d alpine /bin/sh
Criamos um contêiner a partir da imagem alpine com o nome alp1 executado sem segundo plano e iniciamos uma sessão bash usando o comando /bin/sh.
A seguir emitimos o comando docker container ps para exibir os contêineres em execução. Vemos que o container alp1 criado esta em execução.
Vamos então executar alguns comandos neste contêiner:
1- Listando as pastas do contêiner
docker container exec alp1 ls -g
2- Criando uma pasta dentro do contêiner
docker container exec alp1 mkdir /tmp/macoratti
Após criar a pasta emitimos o comando ls -g e vemos a pasta tmp criada.
3- Criando um arquivo em uma pasta dentro do contêiner
Vamos criar um arquivo teste.txt dentro da pasta /tmp/macoratti criada
docker container exec alp1 touch /tmp/macoratti/teste.txt
Após criar o arquivo emitimos o comando para listar os arquivos da pasta e vemos que o arquivo teste.txt é exibido.
Podemos inclusive executar mais de um comando. Para isso temos que executar o comando sh (no caso do Apline) com a flag -c e usar o operador && para concatenar os comandos que devem estar entre aspas.
Como exemplo vamos executar os comandos para entrar na pasta /tmp/macoratti e listar o seu conteúdo. Vamos emitir dois comandos:
Para isso emitimos o comando:
docker container exec alp1 sh -c 'cd /tmp/macoratti && ls -g'
Vamos agora pausar o contêiner e tentar executar um comando.
docker container pause alp1
Após pausar o contêiner emitimos um comando docker container ps e vemos o status (Paused).
Ao tentar executar um comando no contêiner obtemos a mensagem que o contêiner esta pausado.
Se você parar o contêiner usando o comando docker container stop alp1 também vai receber uma mensagem que o contêiner não esta em execução.
Para voltar a poder executar comandos no contêiner ele deve ser iniciado : docker container start alp1
Aguarde mais artigos sobre Docker.
Ó Senhor,
Senhor nosso, quão admirável é o teu nome em toda a terra, pois puseste a tua
glória sobre os céus!
Salmos 8:1
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core - Macoratti
https://www.udemy.com/docker-essencial-para-a-plataforma-net/
Docker Essencial para a plataforma .NET - Macoratti.net
Docker - Uma introdução básica - Macoratti
ASP .NET Core - Acesso ao MySQL c/ EF Core usando o Docker
Docker Essencial para a plataforma .NET - YouTube