Modificando arquivos em um contêiner em execução
Nesta etapa, aprenderemos como modificar arquivos dentro de um contêiner em execução. Isso pode ser útil para fins de depuração, como alterar arquivos de configuração ou adicionar scripts temporários a um contêiner que já está em execução.
Começaremos executando um contêiner simples baseado na imagem ubuntu, que é mais rica em recursos do que alpine e inclui um shell e utilitários comuns.
docker run -d --name my-ubuntu ubuntu sleep 3600
Este comando executa um contêiner Ubuntu em modo detached (-d) e o mantém em execução por uma hora usando o comando sleep 3600. Nomeamos o contêiner my-ubuntu para facilitar a referência.
Agora, vamos usar docker exec para obter um shell dentro do contêiner em execução.
docker exec -it my-ubuntu /bin/bash
Você deve estar agora dentro do shell bash do contêiner my-ubuntu. O prompt mudará para refletir que você está dentro do contêiner.
Dentro do contêiner, vamos criar um novo arquivo no diretório /tmp.
echo "This is a test file." > /tmp/test_file.txt
Agora, vamos verificar se o arquivo foi criado e contém o conteúdo correto.
cat /tmp/test_file.txt
Você deve ver a saída This is a test file.. Isso confirma que fomos capazes de criar e escrever em um arquivo dentro do contêiner em execução.
Para sair do shell do contêiner, basta digitar exit.
exit
Você está agora de volta ao seu terminal da VM LabEx.
Também podemos copiar arquivos para dentro e para fora de um contêiner em execução usando o comando docker cp. Vamos criar um arquivo em nossa VM LabEx e copiá-lo para o contêiner.
Primeiro, crie um arquivo chamado local_file.txt em seu diretório ~/project.
echo "This file is from the host." > ~/project/local_file.txt
Agora, copie este arquivo para o diretório /tmp do contêiner my-ubuntu.
docker cp ~/project/local_file.txt my-ubuntu:/tmp/
O formato para docker cp é docker cp <source_path> <container_name>:<destination_path> ou docker cp <container_name>:<source_path> <destination_path>.
Vamos verificar se o arquivo foi copiado para o contêiner. Volte para o shell do contêiner.
docker exec -it my-ubuntu /bin/bash
Dentro do contêiner, verifique a presença de local_file.txt em /tmp.
ls /tmp/
Você deve ver local_file.txt listado junto com test_file.txt.
Agora, vamos visualizar o conteúdo de local_file.txt dentro do contêiner.
cat /tmp/local_file.txt
Você deve ver a saída This file is from the host..
Saia do shell do contêiner novamente.
exit
Finalmente, vamos limpar o contêiner.
docker stop my-ubuntu
docker rm my-ubuntu
Esta etapa demonstrou como modificar arquivos dentro de um contêiner em execução usando docker exec para obter um shell e comandos Linux padrão, e como copiar arquivos entre o host e o contêiner usando docker cp.