# docker container cp

#### Comando `docker container cp`

O comando `docker container cp` é utilizado para copiar arquivos ou diretórios entre o sistema host e um container Docker. Ele é extremamente útil quando você precisa mover dados ou código para dentro de um container em execução ou quando precisa extrair dados de um container para o sistema host.

**Sintaxe Básica**

```bash
docker container cp [opções] <origem> <destino>
```

* `<origem>`: Pode ser um caminho no host ou no container.
* `<destino>`: Pode ser um caminho no host ou no container.

**Exemplo:**

```bash
docker container cp /path/to/file_or_dir container_id:/path/inside/container
```

ou

```bash
docker container cp container_id:/path/inside/container /path/to/destination_on_host
```

**Explicação dos Componentes**

1. **`origem`**:
   * Pode ser um caminho absoluto ou relativo no sistema host ou no container.
   * Se for uma pasta, o conteúdo da pasta será copiado para o destino.
   * Se for um arquivo, o arquivo será copiado para o destino.
2. **`destino`**:
   * Especifica onde os arquivos ou diretórios serão copiados.
   * Se o destino for um diretório, o conteúdo será copiado para dentro desse diretório.
   * Se o destino for um caminho que não existe, ele será criado.

**Exemplos de Uso**

1. **Copiar um arquivo do host para o container**:

   ```bash
   docker container cp ./minha_aplicacao.py 4a7b24d0fc57:/app/minha_aplicacao.py
   ```

   Isso copia o arquivo `minha_aplicacao.py` do diretório atual no host para o diretório `/app` dentro do container `4a7b24d0fc57`.
2. **Copiar um diretório do host para o container**:

   ```bash
   docker container cp ./meu_diretorio 4a7b24d0fc57:/app
   ```

   Isso copia o conteúdo de `./meu_diretorio` para o diretório `/app` dentro do container. Se `/app/meu_diretorio` não existir, ele será criado.
3. **Copiar um arquivo do container para o host**:

   ```bash
   docker container cp 4a7b24d0fc57:/app/meu_arquivo.log ./meu_arquivo.log
   ```

   Isso copia o arquivo `meu_arquivo.log` do container para o diretório atual no host.
4. **Copiar um diretório do container para o host**:

   ```bash
   docker container cp 4a7b24d0fc57:/app/meu_diretorio ./meu_diretorio
   ```

   Isso copia o diretório `meu_diretorio` do container para o diretório atual no host.

**Observações Importantes**

* **Permissões de Arquivo**: Ao copiar arquivos, o Docker ajusta as permissões para corresponder ao usuário que está executando o processo dentro do container.
* **Sobrescrita**: Se o destino especificado já contiver arquivos ou diretórios com o mesmo nome, eles serão sobrescritos sem aviso.
* **Caminho Relativo e Absoluto**: Você pode usar tanto caminhos relativos quanto absolutos ao especificar a origem e o destino.
* **Especificidade no Caminho**: Se você especificar o caminho de um diretório como origem (por exemplo, `./meu_diretorio`), apenas o conteúdo do diretório será copiado. Se você quiser copiar o diretório em si, inclua uma barra ao final (por exemplo, `./meu_diretorio/`).

**Segurança e Limitações**

* **Montagens e Volumes**: Quando você copia arquivos para ou de um container, considere como isso pode interagir com volumes Docker. Arquivos em volumes montados podem estar sujeitos a diferentes permissões ou comportamentos.
* **Desempenho**: Copiar arquivos grandes ou muitos arquivos pequenos pode ser menos eficiente do que outras formas de compartilhamento de dados, como usar volumes Docker.
* **Compatibilidade**: O comando `docker container cp` é suportado em todos os sistemas onde o Docker está disponível (Linux, Windows, Mac), mas o comportamento pode variar ligeiramente dependendo do sistema de arquivos subjacente.

**Depuração e Solução de Problemas**

* **Verifique os Caminhos**: Se a cópia falhar, verifique se os caminhos estão corretos e se o container está em execução.
* **Verifique as Permissões**: Problemas de permissão são comuns, especialmente ao copiar arquivos de/para um container que está executando como um usuário diferente do padrão.
* **Container Não Encontrado**: Se o ID do container não for encontrado, verifique se o container está em execução ou se você forneceu o ID correto.

**Equivalentes**

Além do comando `docker container cp`, você pode usar volumes montados no Docker para compartilhar arquivos entre o host e o container de forma persistente e automática.

***

Essa documentação oferece uma visão detalhada do comando `docker container cp`, seus usos, exemplos e considerações práticas.&#x20;
