Я следую за Документация CoreOS Docker и в нем упоминается запуск контейнеров с помощью таких команд, как:
docker run someImageName /bin/somebinary
Где someImageName это образ. Когда /bin/somebinary завершится, изображение больше не будет запущено.
Я просто хотел бы запустить изображение, не указывая никаких двоичных файлов для запуска. Вместо, Я просто хочу запустить службы (например, systemd / sysvinit), которые обычно запускаются внутри ОС images.
Это кажется самой распространенной вещью, которую кто-либо когда-либо хотел бы сделать с Docker, но попытка запустить изображение без команды возвращает:
2014/02/05 14:49:19 Error: create: No command specified
Как я могу запустить контейнер Docker и запустить полную операционную систему, вместо того, чтобы указывать команду?
Как описано здесь, вы просто запускаете /sbin/init как команда, как и любая другая загрузка unix из однопользовательского в многопользовательский режим.
Контейнеры могут быть полноценными ОС, они просто не должны быть (как и виртуальные машины, если на то пошло, их просто сложнее настраивать и управлять).
Я бы сказал, что весь смысл Docker заключается в том, чтобы упростить создание контейнеров приложений, так что вам нужно настроить только приложение, а не всю ОС.
Docker - это система для управления и развертывания приложение контейнеры, не операционная система контейнеры. Похоже, что вы сравниваете запуск контейнера docker с загрузкой операционной системы.
Ваши контейнеры Docker должны быть одноцелевыми приложениями с очень узкой областью применения, которые можно запускать с помощью одной команды. Если вы ищете что-то более сложное, чем это, то Docker - это не то решение, которое вы ищете. В этом случае ознакомьтесь с KVM, ESXi, OpenVZ, LXD и т.д.
Если вы просто ищете, как вы можете указать значение по умолчанию CMD и ENTRYPOINT для ваших контейнеров вы можете сделать это по адресу время сборки использование файла Dockerfile.
Просто запускайте одно и то же изображение столько раз, сколько необходимо. Будут созданы новые контейнеры, которые затем можно запускать и останавливать, каждый из которых сохраняет свою собственную конфигурацию. Для вашего удобства было бы лучше присвоить каждому из ваших контейнеров имя с помощью "--name".
Ф.я:
docker run --name MyContainer1 <ubuntu image>docker run --name MyContainer2 <ubuntu image>docker run --name MyContainer3 <ubuntu image>
Это оно.
$ 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
После этого ваши контейнеры будут созданы навсегда, и вы сможете запускать и останавливать их, как виртуальные машины.
docker start MyContainer1
Залезть в контейнер и делать то, что ты хочешь делать: