web-dev-qa-db-ja.com

コマンドを指定せずにDockerでコンテナーを起動する

私はLXCに精通しており、Dockerを試してみたかった。私が直面している問題は、コマンドを実行せずに、バックグラウンドでコンテナーを起動するようにdockerに指示する方法を見つけられないことです。たとえば、LXCでは次のようにします。

lxc create -t ubuntu -n my_container

lxc-start -n my_container -d

この時点で、私は任意のVMとして使用できる実行中のコンテナーを作成します(sshを実行し、そこにコンテンツをインストールします...)dockerがこの種の使用を妨げているようです。何か不足していますか?

18
rmonjo

Dockerでは、CLIからコマンドを実行せずにコンテナーを作成することはできません。 REST APIを使用する場合は、「start」なしで「create」エンドポイントを呼び出すことができます。

しかし、それはあなたには何の役にも立たないと思います。

ほとんどの場合、おそらくbash docker run -t -i ubuntu bashそしてそこで何かをします。必要なすべてを実行したら、この時点からコミットして実行することができます。

ただし、通常、履歴を明確に保つために、一度に1つのステップを実行することをお勧めします。 Dockerビルダーを見てください:)

10
creack

作成したDockerfileで通常のCMDの実行に問題があるDockerコンテナーを検査する必要がある場合は、そのコマンドをコメントアウトし、「sleep」コマンドに置き換えて、コンテナーが起動したときに一時停止してログインできるようにしますそれとインストールを検査します。

Dockerfile内

CMD ["sleep","3600"]

実行中のDockerインスタンスにログインするには

docker exec -i -t <Container ID> bash
22
GameSalutes

docker run <image>がコンテナを起動するように、runコマンドとその他の構成を含むDockerイメージを構築できます。これを行う最も簡単な方法は、 Docker BuilderCMDを使用することです。 Dockerの最新バージョン(> 0.4.6?)が必要です。

Docker Builderを使用する以外に、docker commitおよびdocker runのフラグを確認してください(コマンド引数はオプションです)。

2
gabrtv

これを自分でいじっていたので、ここにさらに考えを追加します。

3つのDockerコンテナーを操作したいとします。

blong@mycomputer:~$ docker run --name ubuntuContainer1 -itd ubuntu 
2ce602710fb9b84b6530e5a1072961627e91731aba8f8b019f346fc78df08d7c
blong@mycomputer:~$ docker run --name ubuntuContainer2 -itd ubuntu 
e32b0eb72456fc23222f3915c91afc77e06a7e37a073b11f7088fabe8fa4bf20
blong@mycomputer:~$ docker run --name ubuntuContainer3 -itd ubuntu 
40574f704dceb0378f48ebe01d014d598434093d649be13573911d9833d9825d

/ bin/bashを明示的に実行するように要求しなかったにもかかわらず、それらが実行し続けることを確認してください

blong@mycomputer:~$ 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

私はコンテナにシェルすることができます

blong@mycomputer:~$ docker attach ubuntuContainer1
root@2ce602710fb9:/# 

コンテナでコマンド(パッケージのインストールなど)を実行できます

root@2ce602710fb9:/# apt-get update

# ... omitting output

root@2ce602710fb9:/# 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) ...
root@2ce602710fb9:/# nodejs --version
v0.10.25

その後、終了し、CTRL-p CTRL-qを押してすべてを実行し続けることができます

root@2ce602710fb9:/# blong@mycomputer:~/$ 
blong@mycomputer:~/$ 

以下も参照してください。

0
blong