26
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

改めてDockerを理解する①[コンテナのライフサイクル編]

Last updated at Posted at 2024-12-02

はじめに

初めまして!ITスクールRareTECHにてCS(Customer Support)を担当している池村です!
本日は初学者向けにDockerの基本的なコマンドについて解説します。
DockerはLinuxの理解度がある程度ないと扱えない、と私は思っています。まずは基本のLinuxコマンドを理解してから学習することをオススメします。
私の記事で恐縮ですが、以下の記事から学習してみてください。

※今回はDockerを初めて触る人向けの記事になります。

初学者は仮想化の歴史は知らなくていい(最初は)

はっきり言います。Dockerがどういう成り立ちかを理解することは、初学者にとって必須ではありません。仮想化技術の発展は、エンジニアに対してかなりの恩恵をもたらしていることは事実です。ですが、最初から歴史を深ぼる必要は正直ありません。
コンテナ技術とVMの違いなどは、ある程度コマンドを使いこなしてから知っていきたいですね。

0FB14268-911C-47B8-82FF-302C58D2780F.png

なので、歴史から学んでいこう!というのはやめてください。
私自身、歴史から手を出したら訳わからなくなりました。ただ、Dockerが生まれたことによる恩恵を知る必要だけあります。

  • 環境構築でOSの違いを意識する必要がほぼない(WindowsだろうがMacだろうがLinuxだろうが同じように起動できる)
  • 従来の仮想化よりも軽い
  • 環境の変更や、環境の再現性が高い

その他様々あると思いますが、要はより軽く、環境(OS)の差分も気にせず、環境構築ができるものくらいの理解度で最初はOKです。

Dockerには学ぶ順番がある(と思っている)

まず私の持論ですが、DockerとDockerによる環境構築ができるまでの技術習得には順番があると思っています。

  1. Dockerのインストール周り(学習にも入りませんが一応)
  2. Dockerの基本コマンド周り
  3. Dockerのボリューム・ネットワーク周り
  4. Dockerfile周り
  5. Docker Compose周り

この順番で学習せず、とりあえずDocker Composeを学んで環境構築に手を出す人が多い印象です。で、よくわからないまま、よくわからない環境になっていると。初学者はまず焦らず、コンテナのライフサイクルを理解するための基本コマンドから学んでいきましょう。

ある程度のネットワーク知識、Linux知識習得は大前提です

Dockerってなに?コンテナって美味しいの?

コンテナは一言で表すと、『データやプログラムを隔離できる』仕組みのことです。
何から隔離するのか?と言いますと、ご自身のPCのOSや、他のコンテナから隔離しています。基本的にコンテナの中は別のPCが入っていると思ってもらってもいいくらい、隔離されています。コンテナの中には軽量なLinuxOSのイメージが入っていて、これらのイメージを使って様々なコンテナを立ち上げることができます。

この隔離された環境に、アプリケーションに必要なデータやプログラム等を入れて動かしていくのが、コンテナを管理するDockerというツールになります。

このコンテナ周りの技術は理解しようとすると泥沼に陥る可能性がありますので、まずはコマンドを触ってみるところから初めていきましょう。

Docker Desktopのインストール

まずご自身のPCにDockerをインストールする必要があります。
こちらからご自身のPCに合わせたDocker Desktopをインストールしてください。

インストールが完了しましたら、ダウンロードしたファイルを展開してください。(ダウンロードフォルダにあるものをダブルクリック)

私の環境はMacなので、Macではこういった画面が出てくると思います。
image.png

この画面ではドラッグアンドドロップでアプリケーションフォルダに入れてもらったら閉じて大丈夫です。

それが完了しましたらDocker Desktopを開いていきましょう。
image.png

無事開けましたら、ユーザー登録する画面が出てきます。ここは登録してもしなくてもどちらでも構いません。私は右上のスキップボタンを押しました。
image.png

登録が完了すると、以下の画面になると思います。そこまでできたらコマンドを使う準備は完了です。私の画面上ではすでにコンテナがあるので色々表示されていますが、初めて起動した人には何も表示されていないと思います。
image.png

ではコマンドを叩いていきましょう

1. バージョンの確認

まずしっかり動くかどうか、バージョンを確認していきましょう。こういったコマンドを叩くとき、よくバージョンの確認やヘルプなどを見て確かめる習慣をつけておくとgoodです。

書き方
docker -v

こちらのコマンドを叩いて、しっかりバージョンが出ればDockerのコマンドは問題なく使えるようになっています。
image.png

2. search(イメージを探す)

Dockerのコマンドにはsearchというコマンドがあります。
これはDockerのコンテナ(切り離された環境)の下地にあたるイメージを探すコマンドです。
どこから探すかというと、DockerHubというコンテナイメージがたくさん公開されている場所です。

基本的にこのサイトから自分が作りたいコンテナのイメージを取得するのですが、コマンドライン上からsearchコマンドでも探すことができます。毎回Webサイトに行くのは若干手間なので、searchコマンドから探してみて、詳細を見たい時だけDockerHubに行くことが私は多いです。

書き方
docker search イメージ名
例えば
docker search ubuntu
docker search python

実際にUbuntuで指定して叩いてみます。たくさん出てきたので、一部だけ切り取って画像を添付しました。
image.png

ここで見て欲しいのは、STARSの部分です。この数字が多いほど、信頼性が高いと言っても過言ではありません。もちろん、他のイメージも使えるイメージではありますが、シンプルなUbuntuを選ぶ時はOFFICIALという部分に[OK]と書かれている公式が出しているイメージを選択することが多いです。

公式以外のイメージは、基本的にサードパーティ製(有志の第三者が作ったもの)です。

423E5836-2F0C-4E80-BD9B-62323B0241FE.png

3. pull(イメージを持ってくる)

イメージを検索したら、それを実際にご自身のPC(あるいは準備したサーバー内)にイメージを持ってくる必要があります。このコマンドがpullです。Gitを使ったことがある人は想像がつきやすいと思います。

書き方
docker pull イメージ名
例えば
docker pull ubuntu
docker pull python

私の環境でUbuntuをpullしてみます。
image.png

特に何も指定をしないと、最新版のUbuntuがインストールされます。これはUbuntuでなくても最新版がインストールされます。latestというのは最新という意味です。

もちろんバージョン違いのイメージを持ってくることもできます。

例えば
docker pull ubuntu:24.04

こういった:24.04のことをタグといいます。DockerHubでどんなタグがあるか調査することができます。せっかくなのでUbuntuのタグのページもリンクで載せておきます。

色々なタグがありますので、各種pullしてみてもいいかもですね。(後でも消せるので)

BFB7164A-2A58-46D1-ACFD-C49C88067C0A.png

4. images(イメージの一覧を確認する)

それでは持ってきたイメージが本当にあるのかどうかを確認してみましょう。

書き方
docker images

上記のコマンドを叩くと、現在インストールしているイメージの一覧が表示されると思います。

image.png

先ほどまでのコマンドを叩いている人は、Ubuntuのバージョン違いで二つのイメージが表示されるはずです。

5. ここで注意点

今の所イメージの話ばかりしていましたが、Dockerではイメージを操作するコマンドのほかに、イメージから作られるコンテナの操作をするコマンドに分けられます。あとでまとめを書きますので、詳しくはそちらをご確認ください。そしてここからは実際にコンテナを動かしていきます。

コンテナを操作するコマンドと、イメージを操作するコマンドは分けて考えるとgoodです。

6. run(イメージからコンテナを作成して起動する)

では実際にイメージからコンテナを作成し、動かしてみましょう。

起動方法
docker run -it ubuntu

今回はせっかくUbuntuを起動するので、UbuntuのBashを起動してコンテナ内でLinuxコマンドを叩いてみましょう。
image.png

ちょっとコマンドを打ってみました。Ubuntu内のシェルが起動しているので、基本的なLinuxコマンドを使うことができます。

ちなみに今いるのはコンテナの中です。

今使ったオプションは以下のものを使っています。

オプション 説明
-t 仮想端末(TTY)を割り当てて、ターミナル上で見やすい入出力を実現する
-i 標準入力をコンテナに接続し、ターミナルで入力を受け付ける。

これも初学者では何を言っているかわからないと思うので、かいつまんで解説します。
まず-iですが、これは対話的にコマンドを打てるようにするものです。要はLinuxコマンドを実行できるようになります。

-iのみの書き方
docker run -i ubuntu

ただこれだけのオプションだと、とても見にくい画面になってしまいます。
試しに叩いてみると、以下のような結果になります。
image.png

見にくいですね。なので、-tオプションも一緒に実行しています。
-tは仮想端末というものを割り当ててくれるので、普段のLinuxを触る時と変わらない見やすい画面にしてくれます。

今回は起動と同時にコンテナの中に入っているので-itをつけましたが、起動しておいて、後からコンテナ内に入ることも可能です。その方法は後ほど解説していきます。

コンテナから出たい時は、以下のコマンドで可能です。

コンテナから出たい場合
exit

7. ps(コンテナの一覧を確認する)

ではコンテナから出たところで、コンテナ一覧を見ていきましょう。
コンテナ一覧を見るときはpsコマンドを使います。

書き方
docker ps
or
docker ps -a

今回のUbuntuのコンテナは、シェルからexitすると自動で止まります。
ですので、止まっているコンテナも含めたすべてのコンテナを見ることができる-aのオプションをつけて実行してみてください。
以下の画像のような結果になると思います。
image.png

これらの細かな内容に関しては次回の記事で解説する予定です。ただ、全く触れないのもダメなので今見てほしいところだけ解説します。

CONTAINER ID

コンテナそれぞれに割り当てられるランダムなIDです。コンテナの停止、削除、起動をするときに使います。

CREATED

コンテナが作られたのはいつか?の情報です。

STATUS

これは今コンテナが起動しているかどうかを表しています。Exitedなので今は停止しています。起動しているときはUpと表示されます。

NAMES

コンテナの名前です。指定しないと適当な名前が付きます。このコマンドを実際に叩いている人は、私の実行結果とは違う名前になっているはずです。

初学者はこの記事を読んだら、とりあえずこの4つだけわかっていればOKです。

8. startstop(コンテナの起動と停止)

ここで止まったコンテナを起動して、その後停止してみます。

起動の仕方
docker start コンテナID or コンテナ名
停止の仕方
docker stop コンテナID or コンテナ名

今回先ほど起動したUbuntuのコンテナを再起動して停止しました。この時、指定できるのはコンテナIDかコンテナネームです。ただ、コンテナIDの方が楽です。画像をみるとわかるのですが、コンテナIDの頭文字2つだけで起動ができています。全てを打ち込むことがないのでかなり楽なんですね。
image.png

9. rm(コンテナを削除する)

ではコンテナのライフサイクルの最後ですが、削除をしていきたいと思います。
コンテナはもちろん削除が可能です。では実際に消し方ですが、以下の通りにお願いします。

コンテナの削除
docker rm コンテナID or コンテナ名

これでコンテナの削除が可能です。私も消してみました。👇
image.png

削除を行うと、ps -aで一覧を出しても特に何も出てこなくなります。完全に削除が行われたということですね。

コンテナを削除しても、元になったイメージは消えません。

おわりに

今回はDockerの初歩の初歩を解説しました。
有識者なら、あれ?あのコマンドは?となるかもしれませんが、それは次の記事でご説明いたします。主に以下のコマンドです。

  • exec
  • rmi
  • commit
  • prune
  • runのその他オプション等

私はDockerについて覚える時、ライフサイクルの理解からまず押さえる必要があると思っています。(2回目)そうじゃないと、コンテナがどう起動して、どう削除されて、どうイメージが作られているのかわからなくなるからです。
ですので、今回の記事で実行したコマンドは実際に叩いてみることをオススメします。
次回は上記のその他のコマンドとオプション周りについて解説します。よかったら読んでいただけますと幸いです。

次の記事はこちら👇

余談

AIの出してくれる画像、イマイチっすね、、
853E6086-A281-4FB0-8060-824796024CA8.png

26
36
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
26
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?