Начать полный контейнер в Docker?

В соответствии с этой проблемой github должна быть возможность запустить полный контейнер с Upstart, cron и т. Д. С Docker 0.6 или новее, но как мне это сделать?

Я ожидал, что

docker run -t -i ubuntu /sbin/init

будет работать так же, как

lxc-start -n ubuntu /sbin/init

и я бы получил экран входа в систему, но вместо этого он ничего не отображает. Я также пытался получить доступ к нему с помощью SSH, но не повезло. Я использую образ Ubuntu по умолчанию из индекса Docker.

2 ответа

docker run ubuntu /sbin/init кажется, работает безупречно для меня с 0.6.6. Вы не получите экран входа в систему, потому что Docker только управляет процессом. Вместо этого вы можете использовать docker ps -notrunc чтобы получить полный идентификатор контейнера lxc, а затем использовать lxc-attach -n <container_id> запустите bash в этом контейнере от имени root. sshd не установлен в контейнере, поэтому вы не можете использовать ssh.

Вы можете использовать образ Ubuntu-Upstart:

docker run -t -i ubuntu-upstart:14.04 /sbin/init

Несмотря на то, что это решение, к сожалению, устарело, его вполне достаточно, если вам нужен полноценный контейнер ОС, который "работает" как обычная система Ubuntu 12.04, 14.04 или 14.10 (измените:14.04 бит) сегодня. Если версия не указана, по умолчанию используется 14.04. Я не использовал его интенсивно, и у меня были некоторые проблемы с установкой более сложных пакетов (например, dbus!), Но это может сработать для вас.

Увы, Ubuntu переключился на systemd в более поздних выпусках. Поиск в Google показывает, что, похоже, продолжается работа над тем, чтобы заставить systemd работать в док-контейнере, не требуя повышенных привилегий, но, похоже, он не совсем готов к прайм-тайм. Надеюсь, он будет готов, когда 16.04 станет LTS.

Другой вариант, конечно, использовать phusion / baseimage, но у него свой подход к запуску сервисов. Кажется, лучше подходит для минимальных многопроцессных контейнеров.

Другие вопросы по тегам