Docker cp

Docker cp
“Não há dúvida de que o Docker revolucionou o ambiente moderno do desenvolvedor. A capacidade de empacotar seus aplicativos em um único pacote e enviá -los para qualquer plataforma é nada menos que revolucionário.

Mas o suficiente elogia sobre o Docker. Neste artigo, discutiremos como copiar arquivos de e para um contêiner para o sistema host e vice -versa.”

Vamos começar

Docker cp

Docker CP é um utilitário de linha de comando que permite copiar arquivos e diretórios entre sistemas. O comando assume uma sintaxe muito simples que permite um fluxo de trabalho fácil.

A sintaxe do comando:

Docker CP [Opções] Container: SRC_PATH DEST_PATH |-

O utilitário CP copiará os arquivos especificados do SRC_PATH para o dest_Path. Isso permite que você copie do contêiner para o sistema host e vice -versa.

O contêiner pode estar em execução ou estado parado, e o comando executará a operação de cópia com sucesso.

Se um diretório for especificado, o comando copiará os arquivos recursivamente para o destino especificado.

Para copiar arquivos do sistema host para um contêiner, você pode usar a sintaxe:

$ docker cp host_path container_id: caminho

A mesma sintaxe de comando se aplica quando você deseja copiar arquivos do contêiner para o sistema host:

$ docker cp container_id: src_path host_path

Vamos ver como podemos fazer isso com exemplos práticos.

Faça contêineres em execução

O primeiro passo é obter os nomes e IDs dos contêineres em execução. Podemos fazer isso com o comando PS Docker.

$ docker ps

Depois de obter o contêiner e o nome ou id, podemos prosseguir. Você pode obter o ID no ID do contêiner e as colunas de nomes.

Copie arquivos do sistema host para contêiner

Suponha que tenhamos um arquivo chamado backups.alcatrão na área de trabalho do sistema host e deseja copiá -lo para o contêiner Debian11.

Podemos executar o comando:

docker cp ~/desktop/backups.Tar Debian11:/Home

O comando acima copiará os backups.Arquivo TAR no diretório inicial do contêiner especificado.

Podemos verificar se o arquivo existe executando o comando:

$ Docker Exec -ti Debian11 /bin /Bash

O comando acima deve permitir que você faça login no recipiente e gerar uma casca de festa.

Agora você pode listar os arquivos e diretórios no contêiner como:

root@f657ea827600: /# ls -la /home
Total 7188
drwxr-xr-x 1 raiz raiz 4096 7 de junho 02:09 .
drwxr-xr-x 1 raiz raiz 4096 7 de junho 02: 09…
-RW-R-R-- 1 raiz da raiz 7348816 7 de junho 02:08 Backups.alcatrão

Podemos ver que o arquivo foi copiado com sucesso no contêiner.

Se você deseja usar o ID do contêiner, pode executar o comando:

docker cp ~/desktop/backups.Tar F657ea827600:/Home

NOTA: Se existir um arquivo com um nome semelhante como o caminho de destino especificado, o comando o substituirá sem o prompt.

Arquivo de cópia do Docker de contêiner para host

Também podemos usar o comando para copiar arquivos do contêiner para o sistema host. Por exemplo, suponha que queremos copiar os logs do diretório do contêiner para o logs na pasta de desktop do host.

Podemos executar o comando:

$ sudo docker cp debian11:/var/log/~/desktop/logs

No comando acima, dizemos ao comando Docker CP para copiar os arquivos do diretório /var /log no Debian11 para o diretório LOGS no sistema host.

Podemos verificar isso executando o comando:

$ ls -ls ~/desktop/logs
Total 72
0 DRWXR-XR-X 3 Equipe de raiz 96 27 de maio 03:00 APT
0 -RW-RW ---- 1 Pessoal raiz 0 27 de maio 03:00 BTMP
8 -RW-R-R-- 1 Funcionário da raiz 3232 27 de maio 03:00 Faillog
64 -RW-RW-R-- 1 Funcionário da raiz 29896 27 de maio 03:00 LastLog
0 -RW-RW-R-- 1 Pessoal raiz 0 27 de maio 03:00 WTMP

Docker CP Reserve Atributos

Você notará que uma vez que copiarmos um arquivo para e para o sistema host, o Docker não preserva os atributos como permissões, UIDs, etc.

Podemos resolver isso anexando a bandeira -a no comando Docker CP.

$ Docker cp -a host_path contêiner: caminho
$ docker cp -a contêiner: caminho host_path

Um exemplo é como mostrado:

sudo docker cp -a debian11:/var/log/~/desktop/logs

Podemos ver que as permissões são semelhantes a um dos arquivos copiados no contêiner.

Conclusão

Neste tutorial, você aprendeu a usar o comando Docker CP para copiar arquivos de e para um contêiner do docker para o sistema host e vice -versa.

Obrigado pela leitura!!