Docker CP

Docker CP
"No es duda que Docker ha revolucionado el entorno de desarrollador moderno. La capacidad de empaquetar sus aplicaciones en un solo paquete y enviarlas a cualquier plataforma es nada menos que revolucionario.

Pero suficientes alabanzas sobre Docker. En este artículo, discutiremos cómo copiar archivos hacia y desde un contenedor al sistema de host y viceversa."

Empecemos

Docker CP

Docker CP es una utilidad de línea de comandos que le permite copiar archivos y directorios entre sistemas. El comando adquiere una sintaxis muy simple que permite un flujo de trabajo fácil.

La sintaxis del comando:

Docker CP [Opciones] Contenedor: Src_Path Dest_Path |-

La utilidad de CP copiará los archivos especificados desde el src_path a Dest_path. Esto le permite copiar desde el contenedor al sistema host y viceversa.

El contenedor puede ser ejecutado o detenido el estado, y el comando realizará la operación de copia correctamente.

Si se especifica un directorio, el comando copiará los archivos recursivamente en el destino especificado.

Para copiar archivos del sistema de host a un contenedor, puede usar la sintaxis:

$ Docker CP host_path contenedor_id: ruta

La misma sintaxis de comando se aplica cuando desea copiar archivos desde el contenedor al sistema de host:

$ Docker CP Container_ID: SRC_PATH HOST_PATH

Veamos cómo podemos lograr esto con ejemplos prácticos.

Obtenga contenedores de ejecución

El primer paso es obtener los nombres e ID de los contenedores en ejecución. Podemos hacer esto con el comando Docker PS.

$ Docker PS

Una vez que obtenga el contenedor y el nombre o la identificación, podemos continuar. Puede obtener la identificación en las columnas de ID y nombres de contenedores.

Copiar archivos del sistema host al contenedor

Supongamos que tenemos un archivo llamado copias de seguridad.alquitrán en el escritorio del sistema host y desea copiarlo en el contenedor Debian11.

Podemos ejecutar el comando:

Docker cp ~/escritorio/copias de seguridad.Tar Debian11:/Inicio

El comando anterior copiará las copias de seguridad.Archivo TAR en el directorio de inicio del contenedor especificado.

Podemos verificar que el archivo exista ejecutando el comando:

$ Docker Exec -Ti Debian11 /bin /Bash

El comando anterior debe permitirle iniciar sesión en el contenedor y generar un caparazón de bash.

Ahora puede enumerar los archivos y directorios en el contenedor como:

root@f657ea827600: /# ls -la /home
Total 7188
DRWXR-XR-X 1 Raíz Root 4096 Jun 7 02:09 .
DRWXR-XR-X 1 Raíz Root 4096 Jun 7 02: 09 ..
-RW-R-R-- 1 raíz 7348816 7 de junio 02:08 copias de seguridad.alquitrán

Podemos ver que el archivo se ha copiado con éxito en el contenedor.

Si desea usar la ID de contenedor, puede ejecutar el comando:

Docker cp ~/escritorio/copias de seguridad.TAR F657EA827600:/Inicio

Nota: Si existe un archivo con un nombre similar como la ruta de destino especificada, el comando lo sobrescribirá sin indicación.

Docker Copiar archivo de contenedor a host

También podemos usar el comando para copiar archivos desde el contenedor en el sistema de host. Por ejemplo, supongamos que queremos copiar los registros del contenedor al directorio de registros en la carpeta de escritorio del host del host.

Podemos ejecutar el comando:

$ sudo Docker CP Debian11:/var/log/~/escritorio/registros

En el comando anterior, le decimos al comando Docker CP que copie los archivos del directorio /var /log en el directorio de debian11 al directorio de registros en el sistema de host.

Podemos verificar esto ejecutando el comando:

$ ls -ls ~/escritorio/registros
Total 72
0 DRWXR-XR-X 3 Personal de raíz 96 27 de mayo 03:00 APT
0 -rw-rw ---- 1 personal raíz 0 27 de mayo 03:00 btmp
8 -RW-R-R-- 1 Personal de raíz 3232 27 de mayo 03:00 Faillog
64 -RW-RW-R-- 1 Personal de raíz 29896 27 de mayo 03:00 LastLog
0 -rw-rw-r-- 1 personal raíz 0 27 de mayo 03:00 WTMP

Docker CP Preserve atributos

Notará que una vez que copiemos un archivo hacia y desde el sistema de host, Docker no preserva los atributos como permisos, UID, etc.

Podemos resolver esto agregando el indicador -A en el comando Docker CP.

$ Docker cp -a host_path contenedor: ruta
$ Docker CP -A Container: ruta host_path

Un ejemplo es como se muestra:

Sudo Docker CP -A Debian11:/var/log/~/escritorio/registros

Podemos ver que los permisos son similares a uno de los archivos copiados en el contenedor.

Conclusión

En este tutorial, aprendió cómo usar el comando Docker CP para copiar archivos hacia y desde un contenedor Docker al sistema de host y viceversa.

Gracias por leer!!