Introducción
Docker es una popular plataforma de contenedores que permite a los desarrolladores crear, empaquetar e implementar aplicaciones en un entorno portátil e independiente. Cuando se utiliza Docker, a menudo es necesario copiar y compartir archivos entre el contenedor Docker y el host. Docker proporciona un docker cp
comando llamado para copiar fácilmente archivos y directorios entre el contenedor y el host. Este artículo presentará docker cp
en detalle el uso de comandos y ejemplos comunes.
comando docker cp
docker cp
El comando es un comando proporcionado por Docker para copiar archivos y directorios entre el host y el contenedor. Su sintaxis es la siguiente:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
CONTAINER
, puede ser un contenedor en ejecución o detenido, ya sea nombre o IDSRC_PATH
, la ruta del archivo o directorio fuente dentro del contenedorDEST_PATH
, la ubicación de la ruta de destino en el host
Nota: docker cp
El comando supone que la ruta del contenedor es relativa al directorio / (raíz) del contenedor y que la ruta del host es relativa al directorio actual donde se ejecuta el comando docker cp.
opcionesParámetros disponibles
-a
: Conserva los archivos o directorios copiados con sus atributos originales, incluido propietario, permisos, etc.-L
: Si SRC_PATH es un enlace simbólico, copia el archivo o directorio al que apunta el enlace.-p
: Conserva la marca de tiempo del archivo o directorio fuente.-R
O bien-r
: copie todo el directorio de forma recursiva.
SRC_PATH y DEST_PATH
SRC_PATH
y DEST_PATH
son docker cp
las partes clave del comando. Si la ruta es correcta está relacionada con si el comando se puede ejecutar con éxito. Analicemos las diversas situaciones de estas dos rutas y expliquemos si se pueden copiar con éxito en diversas circunstancias.
SRC_PATH al especificar un archivo
- cuando
DEST_PATH
no existe
Cree DEST_PATH
la carpeta requerida y guarde el archivo en ella DEST_PATH
normalmente
- Cuando
DEST_PATH
no está presente y termina con /
El comando informará un error, el directorio de destino debe existir
- cuando
DEST_PATH
existe y es un archivo
El destino se sobrescribe con el contenido del archivo fuente.
- Cuando
DEST_PATH
existe y es un directorio
SRC_PATH
Copie archivos en este directorio usando el nombre base en
SRC_PATH especifica el directorio
- Cuando esté
DEST_PATH
presente y sea un directorio, la replicación se copiará normalmente
- SRC_PATH no termina en /., el directorio fuente se copia a este directorio
- SRC_PATH termina con /. en el que se copia el contenido del directorio fuente
-
Cuando
DEST_PATH
existe y es un archivo, la copia informará un error porque el directorio no se puede copiar en un archivo. -
Cuando
DEST_PATH
no existe, se crea un nuevo directorioDEST_PATH
como ruta y el contenido del directorio de origen se copia en él.
Ejemplo de uso
Copie archivos del contenedor al host
- El directorio de host ya existe
tomcat_muller
Los archivos que queremos usr/local/tomcat/README.md
copiar al study
directorio del host, el comando es el siguiente:
docker cp tomcat_muller:usr/local/tomcat/README.md ./
Ejecute el comando, el resultado se muestra a continuación, copiado correctamente en el directorio especificado:
- El directorio de host no existe y no
/
termina en
tomcat_muller
Los archivos que queremos usr/local/tomcat/README.md
copiar al study/test
directorio del host, el comando es el siguiente:
docker cp tomcat_muller:usr/local/tomcat/README.md ./test
study
Ejecute el comando. El resultado es el que se muestra a continuación. Creamos exitosamente test
el directorio en el directorio y los archivos se copiaron exitosamente al directorio especificado.
- El directorio de hosts no existe y
/
termina en
Queremos copiar el archivo a la ruta del host tomcat_muller
, el comando es el siguiente:usr/local/tomcat/README.md
study/test/
docker cp tomcat_muller:usr/local/tomcat/README.md ./test/
Ejecute el comando y el resultado es el que se muestra a continuación. Debido a que la ruta no existe, se informará un error. No existe dicho directorio.
- Copiar a archivo existente
docker cp tomcat_muller:usr/local/tomcat/README.md test.txt
Ejecute el comando y los resultados son los siguientes:
La operación de copiar directorios es similar a la de copiar archivos, por lo que no entraremos en detalles aquí.
Copie archivos del host al contenedor
Queremos copiar los archivos study
del host test.txt
al contenedor, el comando es el siguiente:
docker cp test.txt tomcat_muller:/
Ejecute el comando, el resultado es el siguiente:
Copiar directorio del host al contenedor
- El directorio de destino no existe
Queremos study/hogwarts
copiar el directorio del host al test
directorio del contenedor, el comando es el siguiente:
docker cp hogwarts tomcat_muller:test/
Ejecute el comando, el resultado es el siguiente:
- El directorio de destino es un archivo.
Queremos copiar el study/hogwarts
directorio del host al contenedor muller
, el comando es el siguiente:
docker cp hogwarts tomcat_muller:muller/
- El directorio ya existe
Queremos copiar el study/hogwarts
directorio del host al contenedor /hogwarts
, el comando es el siguiente:
docker cp hogwarts tomcat_muller:/hogwarts/
Los resultados de ejecutar el comando son los siguientes:
Copiar directorio del contenedor al host
Copiamos el directorio tomcat_muller
en el contenedor webapps.dist
al host usr/local/study
, el comando es el siguiente:
docker cp tomcat_muller:/usr/local/tomcat/webapps.dist /home/muller/study
Ejecute el comando, el resultado es el siguiente:
Resumir
docker cp
El comando es una herramienta conveniente para copiar archivos y directorios entre contenedores Docker y la máquina host. Con comandos y parámetros simples, podemos transferir archivos fácilmente entre contenedores y hosts. Este artículo describe docker cp
la sintaxis del comando y las opciones comunes, y proporciona varios ejemplos para ayudarle a comprender mejor su uso. Mediante el uso flexible docker cp
de comandos, podemos realizar fácilmente operaciones y compartir archivos en el entorno Docker.