Como transferir arquivos de e para um contêiner Docker

Use o comando do Docker docker cppara copiar arquivos ou diretórios entre sua máquina local e um contêiner. Ele funciona em ambas as direções, copia diretórios recursivamente e pode ser usado em um contêiner em execução ou parado. Você não precisa abrir um shell no contêiner nem criar um arquivo tar para uma cópia comum.

A sintaxe básica é docker cp SOURCE DESTINATION. Coloque o nome ou ID do contêiner antes de dois pontos para o caminho do contêiner: docker cp LOCAL_PATH CONTAINER:CONTAINER_PATHcopia para dentro de um contêiner, enquanto docker cp CONTAINER:CONTAINER_PATH LOCAL_PATHcopia para fora. A documentação do Docker sobre o comando `docker cp` detalha as regras de caminho e diretório.

1. Encontre o nome ou o ID do contêiner.

Execute este comando a partir de um terminal onde os comandos do Docker possam alcançar o Docker Engine:

docker ps -a

docker psLista os contêineres em execução; adicionar -atambém mostra os contêineres parados. Use o valor na NAMEScoluna ou um ID de contêiner nos comandos abaixo. Um nome como webé fácil de reutilizar; um ID é um identificador exato quando você precisa distinguir contêineres. Você pode verificar os campos exibidos por `docker ps` / `docker container ls` .

Saída do terminal do comando `docker ps -a` mostrando um contêiner em execução chamado web e seu ID curto de contêiner.
Use o nome ou ID do contêiner exibido por docker ps -a.

2. Copie um arquivo do seu computador para o contêiner.

Execute o comando docker cpna máquina cujos arquivos você deseja copiar. Por exemplo, a partir de uma pasta de projeto contendo o arquivo report.csv, copie-o para /tmpdentro do contêiner chamado web:

docker cp ./report.csv web:/tmp/report.csv

Substitua `<caminho_do_arquivo_local> ./report.csv` pelo caminho do arquivo local, ` web<nome_do_contêiner>` pelo nome ou ID do seu contêiner e ` /tmp/report.csv<caminho_de_destino>` pelo caminho de destino dentro do contêiner. Os caminhos do contêiner são interpretados a partir do diretório raiz do contêiner, portanto, a barra inicial é opcional. Se o destino nomear um diretório existente, o Docker colocará o arquivo nele usando o nome do arquivo de origem.

Comando de terminal que copia o arquivo report.csv local para o contêiner web em /tmp/report.csv.
Este comando copia um arquivo de host para o contêiner.

O Docker copia diretórios recursivamente. Se /etc/app/já existir, este comando coloca os arquivos configdentro dele:

docker cp ./config web:/etc/app/

Para copiar apenas o conteúdo de configpara /etc/app/, inclua /.no final do caminho de origem:

Comando de terminal que copia o conteúdo do diretório de configuração local para /etc/app dentro do contêiner web.
O /.sufixo significa copiar o conteúdo do diretório, em vez de aninhar o diretório de origem.
docker cp ./config/. web:/etc/app/

O Docker não cria diretórios pai ausentes. Crie primeiro o diretório pai do destino. Para criar uma pasta ausente dentro de um contêiner em execução, execute `docker-compose up` docker exec web mkdir -p /etc/app, e então copie os arquivos. ` docker-compose up` docker execrequer um contêiner em execução; `docker-compose up` docker cpnão.

3. Copie um arquivo do contêiner para o seu computador.

Para recuperar um arquivo, inverta a ordem de origem e destino. Primeiro, crie a pasta de destino local e, em seguida, copie o arquivo de log do contêiner.

mkdir -p ./backup
docker cp web:/var/log/app.log ./backup/
Comando de terminal que recupera o arquivo app.log do diretório /var/log dentro do contêiner web para um diretório de backup local.
A pasta de destino local deve existir antes de copiar os arquivos para ela.

Você pode recuperar um diretório da mesma forma. Adicione /.ao caminho de origem do contêiner para copiar seu conteúdo diretamente para um diretório local existente:

docker cp web:/var/log/app/. ./backup/

O Docker pode copiar arquivos de um contêiner parado, o que é útil para coletar logs ou configurações após o término de um processo.

Usando o Docker Compose

Se o seu projeto usa o Compose, use o nome do serviço docker compose cpem vez de procurar um ID de contêiner. Por exemplo, copie um arquivo local para um serviço chamado web:

docker compose cp ./report.csv web:/tmp/report.csv

Para copiar na direção oposta, inverta os caminhos:

docker compose cp web:/var/log/app.log ./backup/

Consulte a referência oficial do docker compose cp para opções como selecionar uma réplica quando um serviço possui vários contêineres.

Permissões e armazenamento persistente

Por padrão, os arquivos copiados para um contêiner pertencem ao usuário root e ao grupo primário; os arquivos copiados para o seu computador pertencem ao usuário que executa o Docker. As permissões são preservadas sempre que possível. Use `--preserve` -apara preservar o UID e o GID de origem. Se um aplicativo não conseguir ler um arquivo, verifique o destino e a propriedade do arquivo em vez de conceder privilégios ao contêiner.

Os arquivos na camada gravável de um contêiner são removidos com o contêiner. Para dados que precisam persistir, use um volume Docker ou um bind mount. Volumes são adequados para dados persistentes em contêineres; bind mounts permitem que o host e o contêiner acessem os mesmos arquivos. Se você copiar para um caminho coberto por um bind mount, você altera os dados montados. Verifique o destino primeiro. Consulte as orientações do Docker sobre volumes e bind mounts .

Solução rápida de problemas

  • “Contêiner inexistente”: execute o comando docker ps -ae verifique o nome ou o ID do contêiner.
  • “Arquivo ou diretório inexistente”: verifique o caminho de origem e certifique-se de que o diretório pai de destino exista. Os caminhos dos contêineres começam em /.
  • A pasta foi parar um nível abaixo do esperado: use o parâmetro `--out` /.para copiar apenas o conteúdo do diretório.
  • Permissão negada: verifique se sua conta pode usar o Docker e se o usuário do aplicativo tem permissão de leitura e gravação no destino. No Linux, use sudosomente se a política de acesso ao Docker do seu sistema exigir.
  • Os arquivos desaparecem após a limpeza: salve dados importantes em um volume ou ponto de montagem vinculado, e não apenas na camada gravável do contêiner.

Deixar um comentário

Como recuperar partições perdidas e dados do disco rígido com segurança

Como recuperar partições perdidas e dados do disco rígido com segurança

Aprenda como recuperar partições e arquivos perdidos com o TestDisk e o PhotoRec. Proteja a unidade de origem, faça a verificação com segurança e salve os dados recuperados em outro disco.

Como ler códigos QR em um computador Linux

Como ler códigos QR em um computador Linux

Escaneie códigos QR no Linux com o CoBang usando uma webcam ou um arquivo de imagem. Veja as opções de instalação, etapas de configuração e correções para acesso à câmera via Flatpak.

Como alterar as configurações da webcam no Linux com o Cameractrls

Como alterar as configurações da webcam no Linux com o Cameractrls

Altere as configurações da webcam no Linux com o Cameractrls: ajuste a exposição, a cor, a redução de cintilação e outros controles compatíveis e, em seguida, verifique os modos de vídeo compatíveis.

Como instalar o PhpStorm no Linux: Toolbox, Tar.gz, Snap e AUR

Como instalar o PhpStorm no Linux: Toolbox, Tar.gz, Snap e AUR

Instale o PhpStorm no Linux com o JetBrains Toolbox ou o arquivo tar.gz independente, além das opções Snap e Arch AUR. O Java já está incluído.

Como configurar dois painéis no XFCE 4

Como configurar dois painéis no XFCE 4

Crie um painel XFCE 4 separado para cada tela, atribua o segundo painel à saída correta, posicione-o e dimensione-o e adicione os atalhos e itens de status necessários.

Como instalar o Cisco Packet Tracer no Linux

Como instalar o Cisco Packet Tracer no Linux

Baixe o Cisco Packet Tracer 9.0.1 para Ubuntu 64 bits, instale o pacote DEB com o APT, aceite a licença no Terminal e faça login para iniciar um laboratório.

Como recortar uma imagem no Linux com o GIMP

Como recortar uma imagem no Linux com o GIMP

Remova o fundo de uma foto no Linux com o GIMP: trace o contorno do objeto, exclua o fundo selecionado, mantenha a transparência e exporte um PNG reutilizável.

Como fazer backup de um CD-ROM como um arquivo ISO no Linux

Como fazer backup de um CD-ROM como um arquivo ISO no Linux

Crie uma imagem ISO de CD-ROM no Linux com o GNOME Disks ou o comando dd. Identifique a unidade óptica, monitore a cópia, verifique a imagem e saiba quando um disco danificado ou de áudio precisa de outra ferramenta.

Baixe o FlightGear gratuitamente: Guia de Instalação Oficial

Baixe o FlightGear gratuitamente: Guia de Instalação Oficial

Baixe o FlightGear gratuitamente no site oficial. Compare os pacotes para Windows, macOS e Linux, instale os arquivos de dados e inicie seu primeiro voo.

Aplicativo Google Tasks para desktop: como usá-lo no computador

Aplicativo Google Tasks para desktop: como usá-lo no computador

Abra o Google Tasks em um navegador, adicione um atalho do Chrome ou inicie o aplicativo automaticamente e gerencie suas tarefas agendadas pelo Agenda e pelo Gmail.