Compartir comentarios
Las respuestas se generan en base a la documentación.

docker container create

DescripciónCrea un nuevo contenedor
Usodocker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
Alias
docker create

Descripción

El comando docker container create (o en su forma abreviada: docker create) crea un nuevo contenedor a partir de la imagen especificada, sin iniciarlo.

Al crear un contenedor, el demonio de Docker crea una capa de contenedor escribible sobre la imagen especificada y la prepara para ejecutar el comando especificado. El ID del contenedor se imprime en la salida estándar (STDOUT). Esto es similar a docker run -d excepto que el contenedor nunca se inicia. Luego puedes usar el comando docker container start (o en su forma abreviada: docker start) para iniciar el contenedor en cualquier momento.

Esto es útil cuando deseas configurar la estructura de un contenedor con anticipación para que esté listo para iniciarse cuando lo necesites. El estado inicial del nuevo contenedor es created (creado).

El comando docker create comparte la mayoría de sus opciones con el comando docker run (que realiza un docker create antes de iniciarlo). Consulta la referencia de la CLI de docker run para obtener detalles sobre las flags y opciones disponibles.

Opciones

OpciónPredeterminadoDescripción
--add-hostAñade un mapeo de host a IP personalizado (host:ip)
--annotationAPI 1.43+ Añade una anotación al contenedor (se pasa al runtime de OCI)
-a, --attachConecta a STDIN, STDOUT o STDERR
--blkio-weightE/S de bloque (peso relativo), entre 10 y 1000, o 0 para deshabilitar (por defecto 0)
--blkio-weight-devicePeso de E/S de bloque (peso relativo del dispositivo)
--cap-addAñade capacidades de Linux
--cap-dropElimina capacidades de Linux
--cgroup-parentCgroup padre opcional para el contenedor
--cgroupnsAPI 1.41+ Espacio de nombres cgroup a usar (host|private)
'host': Ejecuta el contenedor en el espacio de nombres cgroup del host de Docker
'private': Ejecuta el contenedor en su propio espacio de nombres cgroup privado
'': Usa el espacio de nombres cgroup configurado por la
opción default-cgroupns-mode en el demonio (predeterminado)
--cidfileEscribe el ID del contenedor en el archivo
--cpu-countCantidad de CPUs (solo en Windows)
--cpu-percentPorcentaje de CPU (solo en Windows)
--cpu-periodLimita el período de CPU CFS (Completely Fair Scheduler)
--cpu-quotaLimita la cuota de CPU CFS (Completely Fair Scheduler)
--cpu-rt-periodAPI 1.25+ Limita el período de tiempo real de la CPU en microsegundos
--cpu-rt-runtimeAPI 1.25+ Limita el tiempo de ejecución de tiempo real de la CPU en microsegundos
-c, --cpu-sharesCuota de CPU (peso relativo)
--cpusAPI 1.25+ Número de CPUs
--cpuset-cpusCPUs en las que permitir la ejecución (0-3, 0,1)
--cpuset-memsNodos de memoria (MEMs) en los que permitir la ejecución (0-3, 0,1)
--deviceAñade un dispositivo del host al contenedor
--device-cgroup-ruleAñade una regla a la lista de dispositivos permitidos del cgroup
--device-read-bpsLimita la velocidad de lectura (bytes por segundo) de un dispositivo
--device-read-iopsLimita la velocidad de lectura (E/S por segundo) de un dispositivo
--device-write-bpsLimita la velocidad de escritura (bytes por segundo) en un dispositivo
--device-write-iopsLimita la velocidad de escritura (E/S por segundo) en un dispositivo
--dnsDefine servidores DNS personalizados
--dns-optionDefine opciones de DNS
--dns-searchDefine dominios de búsqueda DNS personalizados
--domainnameNombre de dominio NIS del contenedor
--entrypointSobrescribe el ENTRYPOINT predeterminado de la imagen
-e, --envDefine variables de entorno
--env-fileLee un archivo de variables de entorno
--exposeExpone un puerto o un rango de puertos
--gpusAPI 1.40+ Dispositivos GPU para añadir al contenedor ('all' para pasar todas las GPUs)
--group-addAñade grupos adicionales a los que unirse
--health-cmdComando a ejecutar para comprobar la salud del contenedor
--health-intervalTiempo entre ejecuciones de la comprobación (ms|s|m|h) (por defecto 0s)
--health-retriesFallos consecutivos necesarios para reportar un estado no saludable
--health-start-intervalAPI 1.44+ Tiempo entre ejecuciones de la comprobación durante el período de inicio (ms|s|m|h) (por defecto 0s)
--health-start-periodAPI 1.29+ Período de inicio para que el contenedor se inicialice antes de comenzar la cuenta regresiva de reintentos de salud (ms|s|m|h) (por defecto 0s)
--health-timeoutTiempo máximo permitido para que se ejecute una comprobación (ms|s|m|h) (por defecto 0s)
--helpMuestra el uso
-h, --hostnameNombre de host del contenedor
--initAPI 1.25+ Ejecuta un proceso init dentro del contenedor que redirige señales y recoge procesos huérfanos
-i, --interactiveMantiene STDIN abierto incluso si no está conectado
--io-maxbandwidthLímite máximo de ancho de banda de E/S para la unidad del sistema (solo en Windows)
--io-maxiopsLímite máximo de IOps para la unidad del sistema (solo en Windows)
--ipDirección IPv4 (ej., 172.30.100.104)
--ip6Dirección IPv6 (ej., 2001:db8::33)
--ipcModo IPC a usar
--isolationTecnología de aislamiento de contenedores
-l, --labelDefine metadatos en un contenedor
--label-fileLee un archivo de etiquetas delimitado por líneas
--linkAñade un enlace a otro contenedor
--link-local-ipDirecciones de enlace local (link-local) IPv4/IPv6 del contenedor
--log-driverControlador de logs para el contenedor
--log-optOpciones del controlador de logs
--mac-addressDirección MAC del contenedor (ej., 92:d0:c6:0a:29:33)
-m, --memoryLímite de memoria
--memory-reservationLímite suave de memoria (soft limit)
--memory-swapLímite de swap igual a la memoria más swap: '-1' para habilitar swap ilimitado
--memory-swappiness-1Ajusta la propiedad swappiness de la memoria del contenedor (de 0 a 100)
--mountAdjunta un montaje de sistema de archivos al contenedor
--nameAsigna un nombre al contenedor
--networkConecta un contenedor a una red
--network-aliasAñade un alias de ámbito de red para el contenedor
--no-healthcheckDeshabilita cualquier HEALTHCHECK especificado en el contenedor
--oom-kill-disableDeshabilita el OOM Killer (Out of Memory)
--oom-score-adjAjusta las preferencias de OOM del host (de -1000 a 1000)
--pidEspacio de nombres PID a usar
--pids-limitAjusta el límite de PIDs del contenedor (define -1 para ilimitado)
--platformAPI 1.32+ Define la plataforma si el servidor admite múltiples plataformas
--privilegedOtorga privilegios extendidos a este contenedor
-p, --publishPublica el puerto o los puertos de un contenedor en el host
-P, --publish-allPublica todos los puertos expuestos en puertos aleatorios
--pullmissingDescarga (pull) la imagen antes de crear (always, |missing, never)
-q, --quietSuprime la salida de la descarga (pull)
--read-onlyMonta el sistema de archivos raíz del contenedor como de solo lectura
--restartnoPolítica de reinicio a aplicar cuando un contenedor finaliza
--rmElimina automáticamente el contenedor y sus volúmenes anónimos asociados cuando este finaliza
--runtimeRuntime a usar para este contenedor
--security-optOpciones de seguridad
--shm-sizeTamaño de /dev/shm
--stop-signalSeñal para detener el contenedor
--stop-timeoutAPI 1.25+ Tiempo de espera (en segundos) para detener un contenedor
--storage-optOpciones del controlador de almacenamiento para el contenedor
--sysctlOpciones sysctl
--tmpfsMonta un directorio tmpfs
-t, --ttyAsigna una pseudo-TTY
--ulimitOpciones de ulimit
--use-api-socketexperimental (CLI) Monta mediante bind el socket de la API de Docker y la autenticación requerida
-u, --userNombre de usuario o UID (formato: <nombre|uid>[:<grupo|gid>])
--usernsEspacio de nombres de usuario a usar
--utsEspacio de nombres UTS a usar
-v, --volumeMonta mediante bind un volumen
--volume-driverControlador de volúmenes opcional para el contenedor
--volumes-fromMonta los volúmenes de los contenedores especificados
-w, --workdirDirectorio de trabajo dentro del contenedor

Ejemplos

Crear e iniciar un contenedor

El siguiente ejemplo crea un contenedor interactivo con una pseudo-TTY conectada, luego inicia el contenedor y se conecta a él:

$ docker container create -i -t --name mycontainer alpine
6d8af538ec541dd581ebc2a24153a28329acb5268abe5ef868c1f1a261221752

$ docker container start --attach -i mycontainer
/ # echo hello world
hello world

Lo anterior es el equivalente a un docker run:

$ docker run -it --name mycontainer2 alpine
/ # echo hello world
hello world

Inicializar volúmenes

Los volúmenes de contenedor se inicializan durante la fase docker create (es decir, también con docker run). Por ejemplo, esto te permite crear el contenedor con el volumen data y luego usarlo desde otro contenedor:

$ docker create -v /data --name data ubuntu

240633dfbb98128fa77473d3d9018f6123b99c454b3251427ae190a7d951ad57

$ docker run --rm --volumes-from data ubuntu ls -la /data

total 8
drwxr-xr-x  2 root root 4096 Dec  5 04:10 .
drwxr-xr-x 48 root root 4096 Dec  5 04:11 ..

Del mismo modo, crea un contenedor con un volumen montado mediante bind a un directorio del host, que luego se puede usar desde el contenedor posterior:

$ docker create -v /home/docker:/docker --name docker ubuntu

9aa88c08f319cd1e4515c3c46b0de7cc9aa75e878357b1e96f91e2c773029f03

$ docker run --rm --volumes-from docker ubuntu ls -la /docker

total 20
drwxr-sr-x  5 1000 staff  180 Dec  5 04:00 .
drwxr-xr-x 48 root root  4096 Dec  5 04:13 ..
-rw-rw-r--  1 1000 staff 3833 Dec  5 04:01 .ash_history
-rw-r--r--  1 1000 staff  446 Nov 28 11:51 .ashrc
-rw-r--r--  1 1000 staff   25 Dec  5 04:00 .gitconfig
drwxr-sr-x  3 1000 staff   60 Dec  1 03:28 .local
-rw-r--r--  1 1000 staff  920 Nov 28 11:51 .profile
drwx--S---  2 1000 staff  460 Dec  5 00:51 .ssh
drwxr-xr-x 32 1000 staff 1140 Dec  5 04:01 docker