GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerコンテナを実行する方法

したがって、Dockerを初めて使用する場合は、Dockerコンテナを実行する方法を疑問に思うかもしれません。簡単にお見せしましょう。

次のコマンドを使用して、コンテナを作成して実行できます。

docker run -it -d --name container_name image_name bash

次に、コンテナーに入る(コンテナー内でコマンドを対話的に実行する)場合は、dockerexecコマンドを使用できます。

docker exec -it container_ID_or_name /bin/bash

これは、Ubuntuをベースイメージとして新しいコンテナーを作成し、実行中のUbuntuコンテナーに入り、lsコマンドを実行する例です。

[email protected]:~$ docker run -it -d --name my_container ubuntu bash
7e77640bca686108ad415318278a1fa148e1c84d3b180276e19ec2b970ba9b67
[email protected]:~$ docker exec -it my_container bash
[email protected]:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[email protected]:/# 

失った?心配しないで。上記の2つのコマンドの機能と、-itとは何かについて詳しく説明します。 docker runandexecコマンドのオプション。

ドッカーコンテナーを実行する方法

特定のイメージと指定されたコマンドを使用してDockerコンテナーを実行する場合は、次の方法で実行できます。

docker run -it -d --name container_name image_name bash

上記のコマンドは、指定されたDockerイメージから指定された名前の新しいコンテナーを作成します。コンテナ名はオプションです。

  • -iオプション インタラクティブモードになることを意味します(コマンドを入力できます)
  • -tオプション ターミナルを提供します(sshを使用してコンテナに入る場合と同じように使用できます)。
  • -dオプション (デーモンモード)コンテナをバックグラウンドで実行し続けます。
  • バッシュ 実行するコマンドです。

ここでコマンドとしてbashを実行する理由は、コンテナーがすぐに停止しないためです。

[email protected]:~$ docker run -it -d ubuntu bash
82766613e7bc0ae98887bb1c776fa0de7f3c4771db9ac7ffc5db5c2c68ab497b
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
82766613e7bc        ubuntu              "bash"              4 seconds ago       Up 3 seconds                            determined_blackburn

上記の例では、コンテナに名前を付けなかったため、ランダムにdetermined_blackburnという名前が付けられました。

ご覧のとおり、コンテナはバックグラウンドでbashコマンドを実行しています。

Docker Run vs Start vs Create:違いの説明docker初心者にとって、docker start、docker run、dockercreateなどの用語は混乱を招く可能性があります。この記事では、例との違いについて説明します。 LinuxハンドブックAbhishekPrakash

​​デーモンとして実行しないとどうなりますか(-dオプション)バックグラウンドで?

-dオプションを使用しない場合、docker runは新しいコンテナーを作成し、bashシェルを実行するインタラクティブモードのターミナルを使用します。

以下の例でわかるように、コンテナーが作成され、私は自動的にコンテナー内にいます(bashシェル)。

ここでの問題は、コンテナを終了すると、コンテナが停止することです。

[email protected]:~$ docker run -it ubuntu bash
[email protected]:/# echo this is a new container
this is a new container
[email protected]:/# exit
exit
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
82766613e7bc        ubuntu              "bash"              2 minutes ago       Up 2 minutes                            determined_blackburn
[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
6098c44f2407        ubuntu              "bash"              27 seconds ago      Exited (0) 8 seconds ago                       bold_benz
82766613e7bc        ubuntu              "bash"              2 minutes ago       Up 2 minutes                                   determined_blackburn

-i(インタラクティブ)オプションのみを使用するとどうなりますか?

-iオプションのみを使用するとします。その場合、インタラクティブプロンプトが表示されますが、(Ctrl + Dまたはexitコマンドを使用して)インタラクティブプロンプトを終了すると、コンテナが終了し、コンテナが停止します。

[email protected]:~$ docker run -i ubuntu bash
echo "this is interactive"
this is interactive
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b6b79a9f7789        ubuntu              "bash"              27 seconds ago      Exited (0) 9 seconds ago                       loving_galileo

-t(terminal / tty)オプションのみを使用するとどうなりますか?

これはトリッキーな状況です。その場合、疑似端末はありますが(-tオプションを使用する場合)、STDINはありません。つまり、前に行ったように、何も入力できず、コンテナ内でコマンドを実行できません。

[email protected]:~$ docker run -t ubuntu bash
[email protected]:/# echo hello

^C^C
[email protected]:/# echo "hi"  
^C^C
[email protected]:/# exit
^C^C
[email protected]:/#

上記の場合、別のターミナルからコンテナを停止する必要がありました。

Dockerコンテナを終了する方法この簡単なDockerのヒントは、Dockerコンテナを終了する方法を示しています。 LinuxハンドブックAbhishekPrakash 既存のコンテナーを実行する方法

docker runコマンドは、指定されたイメージから新しいコンテナーを作成します。しかし、すでにコンテナを持っているとどうなりますか?

既存のコンテナを実行する場合は、最初にコンテナを起動してから、次のようなexecオプションを使用できます。

docker start existing_container_ID_or_name
docker exec -it existing_container_ID_or_name /bin/bash

この例は、理解しやすいでしょう:

[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b6b79a9f7789        ubuntu              "bash"              7 minutes ago       Exited (0) 7 minutes ago                       loving_galileo
[email protected]:~$ docker start b6b79a9f7789
b6b79a9f7789
[email protected]:~$ docker exec -it b6b79a9f7789 bash
[email protected]:/# echo "inside existing container"
inside existing container
[email protected]:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[email protected]:/# exit
exit
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b6b79a9f7789        ubuntu              "bash"              8 minutes ago       Up 43 seconds                           loving_galileo

常にbashを使用するのはなぜですか?

上記のすべての例で、コンテナーで実行されるコマンドとしてbashまたは/ bin/bashを使用しました。これを使用したのは、シェルが提供され、コンテナーを実行するときに、シェルのおかげで、通常のLinuxシステム内にいるかのようにコンテナー内で通常のコマンドを実行できるためです。

コンテナに任意のコマンドを実行するように依頼できますが、コマンドが完了するとすぐにコンテナが存在することに注意してください。

以下の例でわかるように、今回はインタラクティブなターミナルセッションはありません。 echoコマンドはほぼすぐに終了するため、コンテナの「内部」にはいません。

[email protected]:~$ docker exec -it b6b79a9f7789 echo hello
hello
[email protected]:~$

実際、他のコマンドを実行して、後でコンテナに入ることができます。

以下の例では、ポート80でnginxサーバーを実行する新しいコンテナーを作成しました。オプション-dを指定してデーモンとして実行するため、nginxコンテナーは実行を継続します。

次に、docker execコマンドを使用してインタラクティブなbashシェルを取得し、nginxコンテナー(基本的にはnginxで事前構成されたLinux)内に入ります。

[email protected]:~$ docker container run -it -d -p 8000:80 nginx
262ca5b17bf8aac5afbfdf66af6383be164cd8488f8cd64c06ee466b4d7462e9
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
262ca5b17bf8        nginx               "nginx -g 'daemon of…"   9 seconds ago       Up 8 seconds        0.0.0.0:8000->80/tcp   zen_kilby
b6b79a9f7789        ubuntu              "bash"                   20 minutes ago      Up 12 minutes                              loving_galileo
[email protected]:~$ docker exec -it 262ca5b17bf8 bash
[email protected]:/# ls
bin  boot  dev	etc  home  lib	lib64  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var
[email protected]:/# 

Dockerコンテナーを実行する方法と、Dockerコンテナーが特定のオプションを使用する理由について理解を深めていただければ幸いです。

ご質問やご提案がございましたら、コメント欄でお知らせください。


Docker
  1. Dockerコンテナ内でプログラムを実行する方法は?

  2. 実行中のDockerコンテナでコマンドを実行する方法

  3. Dockerコンテナ間でデータを共有する方法

  1. Dockerコンテナを一覧表示する方法

  2. Docker コンテナーをバックアップおよび復元する方法

  3. Docker コンテナを一時停止および再開する方法

  1. Dockerコンテナの概要

  2. Dockerコンテナ内でアプリケーションをインストール、実行、削除する方法–パート2

  3. UbuntuでDockerをインストールしてDockerコンテナを実行する方法