1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Docker】Dockerfileのバージョン・detached modeについて no.3

Last updated at Posted at 2021-05-28

パンプキン カフェ (2).png

こんにちは。まゆみです。

Dockerに関する記事をシリーズで書いています。

今回の記事では、

  • Docker hub から引っ張ってくるDockerfile のバージョンはどう指定したら良いの?
  • Docker Containerをバックグラウンドで動かす意味と利点

について書いていこうと思います

ではさっそく始めていきますね。

#Dockerfile のバージョンを使い分けるには?

Dockerfileのバージョンを指定するには、『Tag』が必要になります

<docker image>:(tag)

と、docker imageの後に : (コロン) tag名を書いて、バージョンを指定することになります。

コロン以下でバージョンを指定しなければ、最新バージョンのDocker Image が使われます。

最新のバージョンは、:latest で表されます。

docker run ubuntu

docker run ubuntu:latest

は同じという意味になります

では、実際にtag名を何もしないでubuntuのDocker Container を起動させてみます

docker run ubuntu cat /etc/*release*

上記のコードを実行してみましょう

ちなみに docker run ubuntu <別のコマンド> とすると、デフォルトのコマンドが<別のコマンド>に上書きされます。上記のコードですと、/etc/release のファイルの中身を表示してくれます

2021-05-28_9-44-04.png

version 20.04と、ターミナルに表示されました。

Docker hub にアクセスして、バージョン別のDockerfileを調べてみましょう

Supported tags and respective Dockerfile linksと見出しのついたところにまとめてあります

2021-05-28_9-49-19.png
引用元:Docker hub

次に、違うバージョンのubuntu Dockerfile からDocker Image を作ってみたいと思います

一番上に書かれているバージョン18.04を使ってみましょう。

ubuntuの後ろに

:18.04
:bionic-20210512
:bionic

と書かれていますが、どれを指定しても同じバージョンが指定されます。

docker run ubuntu:18.04 cat /etc/*release*

2021-05-28_9-56-08.png

最新バージョンからDocker Container を実行した後ですが、今回は違うバージョンの物を使ってContainerを実行しているので、

Unable to fine image "ubuntu:18.04" locally
(あなたのパソコン内にはubuntu:18.04が見つかりません)

と、Docker hub からfileを引っ張りImage を作るところからはじめています。(仮に同じバージョンからContainerを作る時は、イメージキャッシュから引っ張ってきます)

detached mode とforeground modeについて

では次に、今回の記事の2つ目のトピック、detached mode について書いていきます

第1回目の記事で、Container は為すべきタスクやプロセスが残っていないと、すぐにContainerから抜けてしまうと書かせていただきました。

逆もしかりで、バックグラウンドで常に動かし続けたいプロセスもありますよね。

ただ、プロセスがフォアグラウンドで動かされている時は、次のコマンドを出すのが面倒になります。

例えば

docker run ubuntu sleep 1000

として、ubuntuのContainer に1000秒間の待機させるコマンドを合わせてうってみましょう。

2021-05-28_11-02-20.png

上のスクショから分かるように、フォアグラウンドでContainerが動いている時は

新たなコマンドを出す事も出来ないし

Ctrl + C や q でもストップさせることもできません。

別のコマンドプロンプトを開いて、コマンドを出すことはできますが、面倒くさいですよね。

そのような場合、バックグラウンドでContainerを動かすことができます

docker run -d ubuntu sleep 1000

上記のコードのように、『-d』というオプションを付けて実行します

その結果は下のスクショのようになります

2021-05-28_11-14-27.png

-d というオプションを付けて実行し、Container ID のみ返されたらバックグラウンドでContainer を動かすことに成功しています。

Container が動き続けていても、1000秒待つことなしに、コマンドをさらに打つこともできます。

また、Cotainer のSTATUS もUpになっていますから、抜けていないことが分かります。

もし、detached mode (バックグラウンドでContainerを動かしていること)を、もう一度アタッチするには

docker attach <container ID>

とすればOKです。

#まとめ

今回の記事はこの辺で締めくくらせていただきますね

お役に立てれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?