web-dev-qa-db-ja.com

Dockerで完全なコンテナーを開始しますか?

このgithubの問題 によると、Docker 0.6以降ではUpstart、cronなどで完全なコンテナを起動できるはずですが、どうすればよいですか?

期待してた

docker run -t -i ubuntu /sbin/init

のように動作します

lxc-start -n ubuntu /sbin/init

ログイン画面が表示されますが、何も表示されません。私もsshを使用してアクセスしようとしましたが、うまくいきませんでした。 Dockerインデックスからのデフォルトのubuntuイメージを使用しています。

24
Epeli

docker run ubuntu /sbin/initは、0.6.6で問題なく動作するようです。 Dockerはプロセスを管理するだけなので、ログイン画面は表示されません。代わりに、docker ps -notruncを使用して完全なlxcコンテナーIDを取得し、そのコンテナーでlxc-attach -n <container_id> run bashをルートとして使用できます。 sshdはコンテナーにインストールされていないため、sshを実行できません。

22
blalor

Ubuntu-upstartイメージを使用できます。

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

このソリューションは残念ながら非推奨ですが、今日の通常のUbuntu 12.04、14.04または14.10(:14.04ビットを変更)システムのように「ドライブ」する完全なOSコンテナーが必要な場合は十分です。バージョンが指定されていない場合、デフォルトは14.04です。私はあまり使用していませんが、より複雑なパッケージ(dbusなど)のインストールに問題がありましたが、うまくいくかもしれません。

Alas Ubuntuは、最近のリリースでsystemdに切り替えました。 Googlingは、昇格された特権を必要とせずに、Dockerコンテナーでsystemdを機能させるための継続的な作業があるように見えますが、プライムタイムの準備が整っていないようです。うまくいけば、16.04がLTSになると準備が整います。

もちろん、別のオプションとして、phusion/baseimageを使用することもできますが、サービスを開始するための独自のアプローチがあります。最小限のマルチプロセスコンテナーに適しているようです。

1
NeilenMarais