Dockerイメージをコンテナーとして実行する


604

dockerfileからDockerイメージを作成しました。イメージが正常にビルドされたのはわかりますが、どうすればよいですか?コンテナとして実行できませんか?

回答:


855

イメージを実行する具体的な方法は、イメージにタグ/名前を付けたかどうかによって異なります。

$ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
ubuntu              12.04               8dbd9e392a96        4 months ago        131.5 MB (virtual 131.5 MB)

名前付き(Ubuntuを使用しましょう):

$ docker run -i -t ubuntu:12.04 /bin/bash

名前なしで、IDを使用します。

$ docker run -i -t 8dbd9e392a96 /bin/bash

詳細については、Docker runリファレンスをご覧ください。


4
では、「NAME」の下に印刷された人にやさしい名前docker ps -aはここで は役に立ちませんか?
ThorSummoner 2015

11
docker ps画像ではなくコンテナをリストします。コンテナからイメージを作成する場合は、する必要がありdocker commitます。NAMEをコミットで使用できます(例:docker commit _NAME_ _imagename_
Andy

8
@Andyなぜ最後に/ bin / bashを使用するのですか?私も新しい
Raheelが2016

6
@RaheelKhan dockerイメージを実行するために何かが必要なため。インストールしたプログラムに置き換えることができます。/ bin / bashは、すでにインストールされている便利なシェルです。
Ryan Shillington

環境変数を追加する必要がある場合は、docker run -i -t -e ROOT_PASSWORD = root ubuntu:12.04
Balaji Radhakrishnan

70

次の手順を実行します。

  1. $ docker images

    タグが指定されたすべてのローカルDockerイメージのリストが表示されます。

  2. $ docker run image_name:tag_name

    指定しなかった場合はtag_name、 'latest'タグが付いたイメージが自動的に実行されます。

    の代わりにimage_name、イメージID(tag_nameなし)を指定することもできます。


35
  • Dockerイメージを一覧表示するには

    $ docker images
    
  • アプリケーションがポート80で実行したい場合、別のポートを公開してローカルにバインドできます。たとえば、8080:

    $ docker run -d --restart=always -p 8080:80 image_name:version
    

21

以下を使用して、使用可能な画像を表示できます。

docker images

その後、デタッチモードで実行して、ターミナルを引き続き使用できます。リポジトリ名(タグの有無にかかわらず)またはイメージIDを使用して実行するには、いくつかのオプションがあります。

docker run -d repository
docker run -d repository:tag
docker run -d image_id

次に、コンテナを使用して実行されていることを確認できます

docker ps

docker psコンテナIDを提供します。それを使用するか、最初の2/3文字だけを使用して、次のようにコンテナに移動できます。

docker exec -it container_id /bin/bash

そして、とを使用docker stop container_idしてそれを停止できますdocker rm container_id

-rm引数を指定してコンテナを実行することもできるため、コンテナを停止すると、コンテナは自動的に削除されます。


1
--rm(注:2つのダッシュはシングルではない)オプションはゴールド!!!、私のシステムは停止した(デッド)コンテナーで散らかされています。
Johan Snowgoose

13

次のコマンドを使用して、実行するイメージの名前またはIDを取得します。

docker images

Docker runコマンドは次のように使用されます。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

以下に、イメージの名前またはIDを指定する前に、ディスパッチ、名前、公開、ボリューム、および再起動オプションを含めました。

docker run -d --name  container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name

どこ:

--detach , -d        Run container in background and print container ID
--name                Assign a name to the container
--publish , -p        Publish a container’s port(s) to the host
--volume , -v        Bind mount a volume
--restart            Restart policy to apply when a container exits

詳細については、公式のDocker runリファレンスをご覧ください。


5

Dockerでwebdevサービスを実行する例を次に示します。画像の名前はmorrisjobke / webdavです。Docker Hubからプルできます。

これらのイメージを実行した後、でWebDAVインスタンスにアクセスできますhttp://localhost:8888/webdav。内部的には、フォルダー/var/webdavはWebDAVルートとして使用されます。

このコンテナは次の方法で実行できます。

$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav

「webdevサービスを実行」:あなたが意味するか、「WebDAVサービスを実行しますか」?それとも「ウェブ開発サービスを実行する」
Peter Mortensen

5

私も同じ問題を抱えていました。私はDockerイメージを実行し、特定のCONTAINER_IDを持つコンテナーを作成しました。同じコンテナで作業したかった:

まず、Dockerイメージを実行します。

docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning

次に、作成したすべてのコンテナをリストします。

sudo docker ps -a

そして、操作したいコンテナーを選択します(私は167ddd6d7f15です):

sudo docker start -ai 167ddd6d7f15

4

Dockerfileからイメージを作成したので、イメージは現在アクティブな状態ではありません。機能させるには、このイメージをコンテナ内で実行する必要があります。

この$ docker imagesコマンドは、ローカルリポジトリで現在使用可能なイメージの数を示します。そして

docker ps -a

現在利用可能なコンテナの数、つまりアクティブなコンテナと終了したコンテナのリストを示します。

コンテナーでイメージを実行するには、2つの方法があります。

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

デタッチモードの場合:

-d=false: Detached mode: Run container in the background, print new container id

インタラクティブモードの場合:

-i :Keep STDIN open even if not attached

これがDocker runコマンドです

$ docker run image_name:tag_name

Docker runの詳細については、Docker runリファレンスをご覧ください

Dockerを理解するのに最適な資料です。


2

Dockerホスト上のすべてのイメージのリストを表示するには、次のコマンドを実行します。

  $ docker images
   REPOSITORY          TAG           IMAGE ID            CREATED             SIZE
   apache_snapshot     latest        13037686eac3        22 seconds ago      249MB
   ubuntu              latest        00fd29ccc6f1        3 weeks ago         111MB

これで、Dockerイメージをコンテナとしてインタラクティブモードで実行できます。

   $ docker run -it apache_snapshot /bin/bash

または、ローカルに画像がない場合は、ダウンロードする画像をDocker Hubで検索します。

    $ docker search ubuntu
    NAME                            DESCRIPTION             STARS  OFFICIAL  AUTOMATED
    ubuntu                          Ubuntu is a Debian...   6759   [OK]       
    dorowu/ubuntu-desktop-lxde-vnc  Ubuntu with openss...   141              [OK]
    rastasheep/ubuntu-sshd          Dockerized SSH ser...   114              [OK]
    ansible/ubuntu14.04-ansible     Ubuntu 14.04 LTS w...   88               [OK]
    ubuntu-upstart                  Upstart is an even...   80     [OK]

docker pullコマンドを使用して、リポジトリからDockerイメージをプルします。

     $ docker pull ubuntu

Dockerイメージをコンテナーとして実行します。

     $ docker run -it ubuntu /bin/bash

0
$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED            
jamesmedice/marketplace   latest              e78c49b5f380        2 days ago          
jamesmedice/marketplace   v1.0.0              *e78c49b5f380*        2 days ago          


$ docker run -p 6001:8585 *e78c49b5f380*

1
説明が正しいでしょう。
Peter Mortensen

-1

同じ問題が発生したが、次のようなエラーが発生した場合

rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"

私のために働いたエントリーポイントを追加しました:

docker run -it --entrypoint /bin/sh バッシュなしの画像の場合。

例(承認済みの例から):

run -it --entrypoint /bin/sh ubuntu:12.04

リファレンス:https : //gist.github.com/mitchwongho/11266726

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.