2013-06-30 16 views
10

私はLXCをよく知っていて、ドッカーを試してみたかった。私が直面している問題は、コマンドを実行せずに、バックグラウンドでコンテナを起動するようにドッカーに指示する方法を見つけることができないということです。私はどうしたらLXCと、例えば:私は、私はそれに任意のVM(SSHとして使用することができます実行されているコンテナを持っているでしょうコマンドを指定せずにDockerでコンテナを起動する

lxc create -t ubuntu -n my_container

lxc-start -n my_container -d

この時点で、それで何かをインストールし... ) ドッカーがこの種の使用を妨げるようです。何か不足していますか?

答えて

8

、CLIから、あなたはそれにコマンドを実行せずにコンテナを作成することはできません。 REST APIを使用する場合は、 '開始'なしで '作成'エンドポイントを呼び出すことができます。

しかし、それはあなたには良いとは思えません。

ほとんどの場合、おそらく、bash docker run -t -i ubuntu bashのコンテナを実行してそこにあるものを実行したいだけです。必要なものをすべて実行したら、この時点から単純にコミットして実行することができます。

しかし、通常、明確な履歴を保持するために、一度に1ステップずつ行う方が良いです。 Dockerビルダーを見てください:)

+0

ありがとうございました!彼らは "コンテナ化された" OSを強く持ち上げる必要があります! 'ps -ef'コマンドをコンテナ内で実行すると、実行中のプロセスのみが出力されます。彼らがどのようにこれを達成したのか? – rmonjo

+0

これはPID名前空間です。 – creack

2

実行コマンドとその他の設定を含むDockerイメージを作成すると、docker run <image>がコンテナを開始します。これを行う最も簡単な方法はDocker BuilderCMDです。 Dockerの最新バージョンが必要です(> 0.4.6?)。

Docker Builderを使用していない場合は、docker commitdocker run(コマンド引数はオプション)のフラグをチェックしてください。ドッキングウィンドウで

+1

DockerファイルにCMDが指定されていないと、 'docker run -d b750fe79269d'は" no command specified " – rmonjo

+1

@rmonjoというエラーメッセージが表示されます。 'docker run'の最後に、コンテナ内で実行したいものを単純に追加します。例えばbash –

8

私が作成したDockerファイルで通常のCMDを実行する際に問題が発生しているドッカーコンテナを調べる必要がある場合、そのコマンドをコメントアウトして「sleep」コマンドに置き換えます起動時にコンテナを一時停止するだけで、ログインしてインストールを検査することができます。私はこれで周りに自分自身を遊んでいたとして、ここではいくつかのより多くの考えを追加実行しているドッカーインスタンスに

docker exec -i -t <Container ID> bash 
0

をログに記録するDockerfile

CMD ["sleep","3600"] 

のは、私は3つのドッキングウィンドウコンテナで動作するようにしたいとしましょう:

[email protected]:~$ docker run --name ubuntuContainer1 -itd ubuntu 
2ce602710fb9b84b6530e5a1072961627e91731aba8f8b019f346fc78df08d7c 
[email protected]:~$ docker run --name ubuntuContainer2 -itd ubuntu 
e32b0eb72456fc23222f3915c91afc77e06a7e37a073b11f7088fabe8fa4bf20 
[email protected]:~$ docker run --name ubuntuContainer3 -itd ubuntu 
40574f704dceb0378f48ebe01d014d598434093d649be13573911d9833d9825d 

が、彼らは私が実行するように要求していないにも関わらず、走り続けることを参照してください/ binに/ bashを明示的に

[email protected]:~$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
40574f704dce  ubuntu    "/bin/bash"   2 seconds ago  Up 1 seconds       ubuntuContainer3 
e32b0eb72456  ubuntu    "/bin/bash"   5 seconds ago  Up 4 seconds       ubuntuContainer2 
2ce602710fb9  ubuntu    "/bin/bash"   8 seconds ago  Up 7 seconds       ubuntuContainer1 

I容器に入れることができます

[email protected]:~$ docker attach ubuntuContainer1 
[email protected]:/# 

私はコンテナにコマンド(例:パッケージをインストール)を実行できますR

その後
[email protected]:/# apt-get update 

# ... omitting output 

[email protected]:/# apt-get install nodejs 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
The following extra packages will be installed: 
    libc-ares2 libv8-3.14.5 
The following NEW packages will be installed: 
    libc-ares2 libv8-3.14.5 nodejs 
0 upgraded, 3 newly installed, 0 to remove and 5 not upgraded. 
Need to get 1912 kB of archives. 
After this operation, 7538 kB of additional disk space will be used. 
Do you want to continue? [Y/n] Y 

# ... omitting output 

Processing triggers for libc-bin (2.19-0ubuntu6.6) ... 
[email protected]:/# nodejs --version 
v0.10.25 

、私は終了し、

[email protected]:/# [email protected]:~/$ 
[email protected]:~/$ 

CTRL-P CTRL-Qを押すことで実行されているすべてのものを維持することができます参照:

関連する問題