Donde someImageName es una imagen. Cuando /bin / somebinary sale, la imagen ya no se ejecutará.
Simplemente me gustaría ejecutar una imagen, sin especificar ningún binario para ejecutar. En su lugar, Simplemente quiero ejecutar los servicios (por ejemplo, systemd / sysvinit) que normalmente se ejecutan dentro del sistema operativo de las imágenes.
Esto parece ser lo más común que alguien querría hacer con Docker, pero intentar ejecutar una imagen sin un comando devuelve:
2014/02/05 14:49:19 Error: create: No command specified
Cómo puedo iniciar un contenedor Docker y ejecutar un sistema operativo completo, en lugar de especificar un comando?
Como se documenta aquí, simplemente ejecute /sbin/init como el comando al igual que cualquier otro arranque unix de un solo usuario a modo multiusuario.
Los contenedores pueden ser sistemas operativos completos, simplemente no tienen que serlo (ni las máquinas virtuales, para el caso, es más complicado de configurar y administrar).
Yo diría que el objetivo de Docker es hacer que los contenedores de aplicaciones sean fáciles, de modo que solo tenga que configurar una aplicación, no todo el sistema operativo.
Docker es un sistema para la gestión y despliegue de aplicación contenedores, no sistema operativo contenedor. Parece que está combinando la ejecución de un contenedor docker con el arranque de un sistema operativo.
Los contenedores Docker deben ser aplicaciones de un solo propósito y de alcance muy limitado que se puedan iniciar con un solo comando. Si está buscando algo más complejo que eso, Docker no es la solución que está buscando. En ese caso, eche un vistazo a KVM, ESXi, OpenVZ, LXD sucesivamente.
Si solo está buscando cómo puede especificar un valor predeterminado CMD y ENTRYPOINT para sus contenedores, puede hacerlo en tiempo de construcción usando un Dockerfile.
Simplemente ejecute desde la misma imagen tantas veces como sea necesario. Se crearán nuevos contenedores y luego se pueden iniciar y detener, cada uno de los cuales guarda su propia configuración. Para su comodidad, sería mejor dar a cada uno de sus contenedores un nombre con "name name".
F. i:
docker run --name MyContainer1 <ubuntu image>docker run --name MyContainer2 <ubuntu image>docker run --name MyContainer3 <ubuntu image>
Eso es.
$ docker psCONTAINER ID IMAGE CREATED STATUS NAMESa7e789711e62 67759a80360c 12 hours ago Up 2 minutes MyContainer187ae9c5c3f84 67759a80360c 12 hours ago Up About a minute MyContainer2c1524520d864 67759a80360c 12 hours ago Up About a minute MyContainer3
Después de eso, tiene sus contenedores creados para siempre y puede iniciarlos y detenerlos como máquinas virtuales.
docker start MyContainer1
Para entrar en el contenedor y hacer lo que quieres hacer: