このgithubの問題 によると、Docker 0.6以降ではUpstart、cronなどで完全なコンテナを起動できるはずですが、どうすればよいですか?
期待してた
docker run -t -i ubuntu /sbin/init
のように動作します
lxc-start -n ubuntu /sbin/init
ログイン画面が表示されますが、何も表示されません。私もsshを使用してアクセスしようとしましたが、うまくいきませんでした。 Dockerインデックスからのデフォルトのubuntuイメージを使用しています。
docker run ubuntu /sbin/init
は、0.6.6で問題なく動作するようです。 Dockerはプロセスを管理するだけなので、ログイン画面は表示されません。代わりに、docker ps -notrunc
を使用して完全なlxcコンテナーIDを取得し、そのコンテナーでlxc-attach -n <container_id>
run bashをルートとして使用できます。 sshdはコンテナーにインストールされていないため、sshを実行できません。
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を使用することもできますが、サービスを開始するための独自のアプローチがあります。最小限のマルチプロセスコンテナーに適しているようです。