docker container create
| Descripción | Crea un nuevo contenedor |
|---|---|
| Uso | docker 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ón | Predeterminado | Descripción |
|---|---|---|
--add-host | Añade un mapeo de host a IP personalizado (host:ip) | |
--annotation | API 1.43+
Añade una anotación al contenedor (se pasa al runtime de OCI) | |
-a, --attach | Conecta a STDIN, STDOUT o STDERR | |
--blkio-weight | E/S de bloque (peso relativo), entre 10 y 1000, o 0 para deshabilitar (por defecto 0) | |
--blkio-weight-device | Peso de E/S de bloque (peso relativo del dispositivo) | |
--cap-add | Añade capacidades de Linux | |
--cap-drop | Elimina capacidades de Linux | |
--cgroup-parent | Cgroup padre opcional para el contenedor | |
--cgroupns | API 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) | |
--cidfile | Escribe el ID del contenedor en el archivo | |
--cpu-count | Cantidad de CPUs (solo en Windows) | |
--cpu-percent | Porcentaje de CPU (solo en Windows) | |
--cpu-period | Limita el período de CPU CFS (Completely Fair Scheduler) | |
--cpu-quota | Limita la cuota de CPU CFS (Completely Fair Scheduler) | |
--cpu-rt-period | API 1.25+ Limita el período de tiempo real de la CPU en microsegundos | |
--cpu-rt-runtime | API 1.25+ Limita el tiempo de ejecución de tiempo real de la CPU en microsegundos | |
-c, --cpu-shares | Cuota de CPU (peso relativo) | |
--cpus | API 1.25+ Número de CPUs | |
--cpuset-cpus | CPUs en las que permitir la ejecución (0-3, 0,1) | |
--cpuset-mems | Nodos de memoria (MEMs) en los que permitir la ejecución (0-3, 0,1) | |
--device | Añade un dispositivo del host al contenedor | |
--device-cgroup-rule | Añade una regla a la lista de dispositivos permitidos del cgroup | |
--device-read-bps | Limita la velocidad de lectura (bytes por segundo) de un dispositivo | |
--device-read-iops | Limita la velocidad de lectura (E/S por segundo) de un dispositivo | |
--device-write-bps | Limita la velocidad de escritura (bytes por segundo) en un dispositivo | |
--device-write-iops | Limita la velocidad de escritura (E/S por segundo) en un dispositivo | |
--dns | Define servidores DNS personalizados | |
--dns-option | Define opciones de DNS | |
--dns-search | Define dominios de búsqueda DNS personalizados | |
--domainname | Nombre de dominio NIS del contenedor | |
--entrypoint | Sobrescribe el ENTRYPOINT predeterminado de la imagen | |
-e, --env | Define variables de entorno | |
--env-file | Lee un archivo de variables de entorno | |
--expose | Expone un puerto o un rango de puertos | |
--gpus | API 1.40+ Dispositivos GPU para añadir al contenedor ('all' para pasar todas las GPUs) | |
--group-add | Añade grupos adicionales a los que unirse | |
--health-cmd | Comando a ejecutar para comprobar la salud del contenedor | |
--health-interval | Tiempo entre ejecuciones de la comprobación (ms|s|m|h) (por defecto 0s) | |
--health-retries | Fallos consecutivos necesarios para reportar un estado no saludable | |
--health-start-interval | API 1.44+
Tiempo entre ejecuciones de la comprobación durante el período de inicio (ms|s|m|h) (por defecto 0s) | |
--health-start-period | API 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-timeout | Tiempo máximo permitido para que se ejecute una comprobación (ms|s|m|h) (por defecto 0s) | |
--help | Muestra el uso | |
-h, --hostname | Nombre de host del contenedor | |
--init | API 1.25+
Ejecuta un proceso init dentro del contenedor que redirige señales y recoge procesos huérfanos | |
-i, --interactive | Mantiene STDIN abierto incluso si no está conectado | |
--io-maxbandwidth | Límite máximo de ancho de banda de E/S para la unidad del sistema (solo en Windows) | |
--io-maxiops | Límite máximo de IOps para la unidad del sistema (solo en Windows) | |
--ip | | Dirección IPv4 (ej., 172.30.100.104) |
--ip6 | | Dirección IPv6 (ej., 2001:db8::33) |
--ipc | Modo IPC a usar | |
--isolation | Tecnología de aislamiento de contenedores | |
-l, --label | Define metadatos en un contenedor | |
--label-file | Lee un archivo de etiquetas delimitado por líneas | |
--link | Añade un enlace a otro contenedor | |
--link-local-ip | Direcciones de enlace local (link-local) IPv4/IPv6 del contenedor | |
--log-driver | Controlador de logs para el contenedor | |
--log-opt | Opciones del controlador de logs | |
--mac-address | Dirección MAC del contenedor (ej., 92:d0:c6:0a:29:33) | |
-m, --memory | Límite de memoria | |
--memory-reservation | Límite suave de memoria (soft limit) | |
--memory-swap | Límite de swap igual a la memoria más swap: '-1' para habilitar swap ilimitado | |
--memory-swappiness | -1 | Ajusta la propiedad swappiness de la memoria del contenedor (de 0 a 100) |
--mount | Adjunta un montaje de sistema de archivos al contenedor | |
--name | Asigna un nombre al contenedor | |
--network | Conecta un contenedor a una red | |
--network-alias | Añade un alias de ámbito de red para el contenedor | |
--no-healthcheck | Deshabilita cualquier HEALTHCHECK especificado en el contenedor | |
--oom-kill-disable | Deshabilita el OOM Killer (Out of Memory) | |
--oom-score-adj | Ajusta las preferencias de OOM del host (de -1000 a 1000) | |
--pid | Espacio de nombres PID a usar | |
--pids-limit | Ajusta el límite de PIDs del contenedor (define -1 para ilimitado) | |
--platform | API 1.32+ Define la plataforma si el servidor admite múltiples plataformas | |
--privileged | Otorga privilegios extendidos a este contenedor | |
-p, --publish | Publica el puerto o los puertos de un contenedor en el host | |
-P, --publish-all | Publica todos los puertos expuestos en puertos aleatorios | |
--pull | missing | Descarga (pull) la imagen antes de crear (always, |missing, never) |
-q, --quiet | Suprime la salida de la descarga (pull) | |
--read-only | Monta el sistema de archivos raíz del contenedor como de solo lectura | |
--restart | no | Política de reinicio a aplicar cuando un contenedor finaliza |
--rm | Elimina automáticamente el contenedor y sus volúmenes anónimos asociados cuando este finaliza | |
--runtime | Runtime a usar para este contenedor | |
--security-opt | Opciones de seguridad | |
--shm-size | Tamaño de /dev/shm | |
--stop-signal | Señal para detener el contenedor | |
--stop-timeout | API 1.25+ Tiempo de espera (en segundos) para detener un contenedor | |
--storage-opt | Opciones del controlador de almacenamiento para el contenedor | |
--sysctl | Opciones sysctl | |
--tmpfs | Monta un directorio tmpfs | |
-t, --tty | Asigna una pseudo-TTY | |
--ulimit | Opciones de ulimit | |
--use-api-socket | experimental (CLI) Monta mediante bind el socket de la API de Docker y la autenticación requerida | |
-u, --user | Nombre de usuario o UID (formato: <nombre|uid>[:<grupo|gid>]) | |
--userns | Espacio de nombres de usuario a usar | |
--uts | Espacio de nombres UTS a usar | |
-v, --volume | Monta mediante bind un volumen | |
--volume-driver | Controlador de volúmenes opcional para el contenedor | |
--volumes-from | Monta los volúmenes de los contenedores especificados | |
-w, --workdir | Directorio 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