はじめに
初めまして!ITスクールRareTECHにてCS(Customer Support)を担当している池村です!
本日は初学者向けにDockerの基本的なコマンドについて解説します。
DockerはLinuxの理解度がある程度ないと扱えない、と私は思っています。まずは基本のLinuxコマンドを理解してから学習することをオススメします。
私の記事で恐縮ですが、以下の記事から学習してみてください。
※今回はDockerを初めて触る人向けの記事になります。
初学者は仮想化の歴史は知らなくていい(最初は)
はっきり言います。Dockerがどういう成り立ちかを理解することは、初学者にとって必須ではありません。仮想化技術の発展は、エンジニアに対してかなりの恩恵をもたらしていることは事実です。ですが、最初から歴史を深ぼる必要は正直ありません。
コンテナ技術とVMの違いなどは、ある程度コマンドを使いこなしてから知っていきたいですね。
なので、歴史から学んでいこう!というのはやめてください。
私自身、歴史から手を出したら訳わからなくなりました。ただ、Dockerが生まれたことによる恩恵を知る必要だけあります。
- 環境構築でOSの違いを意識する必要がほぼない(WindowsだろうがMacだろうがLinuxだろうが同じように起動できる)
- 従来の仮想化よりも軽い
- 環境の変更や、環境の再現性が高い
その他様々あると思いますが、要はより軽く、環境(OS)の差分も気にせず、環境構築ができるものくらいの理解度で最初はOKです。
Dockerには学ぶ順番がある(と思っている)
まず私の持論ですが、DockerとDockerによる環境構築ができるまでの技術習得には順番があると思っています。
- Dockerのインストール周り(学習にも入りませんが一応)
- Dockerの基本コマンド周り
- Dockerのボリューム・ネットワーク周り
- Dockerfile周り
- Docker Compose周り
この順番で学習せず、とりあえずDocker Composeを学んで環境構築に手を出す人が多い印象です。で、よくわからないまま、よくわからない環境になっていると。初学者はまず焦らず、コンテナのライフサイクルを理解するための基本コマンドから学んでいきましょう。
ある程度のネットワーク知識、Linux知識習得は大前提です
Dockerってなに?コンテナって美味しいの?
コンテナは一言で表すと、『データやプログラムを隔離できる』仕組みのことです。
何から隔離するのか?と言いますと、ご自身のPCのOSや、他のコンテナから隔離しています。基本的にコンテナの中は別のPCが入っていると思ってもらってもいいくらい、隔離されています。コンテナの中には軽量なLinuxOSのイメージが入っていて、これらのイメージを使って様々なコンテナを立ち上げることができます。
この隔離された環境に、アプリケーションに必要なデータやプログラム等を入れて動かしていくのが、コンテナを管理するDockerというツールになります。
このコンテナ周りの技術は理解しようとすると泥沼に陥る可能性がありますので、まずはコマンドを触ってみるところから初めていきましょう。
Docker Desktopのインストール
まずご自身のPCにDockerをインストールする必要があります。
こちらからご自身のPCに合わせたDocker Desktopをインストールしてください。
インストールが完了しましたら、ダウンロードしたファイルを展開してください。(ダウンロードフォルダにあるものをダブルクリック)
私の環境はMacなので、Macではこういった画面が出てくると思います。
この画面ではドラッグアンドドロップでアプリケーションフォルダに入れてもらったら閉じて大丈夫です。
それが完了しましたらDocker Desktopを開いていきましょう。
無事開けましたら、ユーザー登録する画面が出てきます。ここは登録してもしなくてもどちらでも構いません。私は右上のスキップボタンを押しました。
登録が完了すると、以下の画面になると思います。そこまでできたらコマンドを使う準備は完了です。私の画面上ではすでにコンテナがあるので色々表示されていますが、初めて起動した人には何も表示されていないと思います。
ではコマンドを叩いていきましょう
1. バージョンの確認
まずしっかり動くかどうか、バージョンを確認していきましょう。こういったコマンドを叩くとき、よくバージョンの確認やヘルプなどを見て確かめる習慣をつけておくとgoodです。
docker -v
こちらのコマンドを叩いて、しっかりバージョンが出ればDockerのコマンドは問題なく使えるようになっています。
2. search
(イメージを探す)
Dockerのコマンドにはsearch
というコマンドがあります。
これはDockerのコンテナ(切り離された環境)の下地にあたるイメージを探すコマンドです。
どこから探すかというと、DockerHubというコンテナイメージがたくさん公開されている場所です。
基本的にこのサイトから自分が作りたいコンテナのイメージを取得するのですが、コマンドライン上からsearch
コマンドでも探すことができます。毎回Webサイトに行くのは若干手間なので、search
コマンドから探してみて、詳細を見たい時だけDockerHubに行くことが私は多いです。
docker search イメージ名
docker search ubuntu
docker search python
実際にUbuntuで指定して叩いてみます。たくさん出てきたので、一部だけ切り取って画像を添付しました。
ここで見て欲しいのは、STARSの部分です。この数字が多いほど、信頼性が高いと言っても過言ではありません。もちろん、他のイメージも使えるイメージではありますが、シンプルなUbuntuを選ぶ時はOFFICIALという部分に[OK]と書かれている公式が出しているイメージを選択することが多いです。
公式以外のイメージは、基本的にサードパーティ製(有志の第三者が作ったもの)です。
3. pull
(イメージを持ってくる)
イメージを検索したら、それを実際にご自身のPC(あるいは準備したサーバー内)にイメージを持ってくる必要があります。このコマンドがpull
です。Gitを使ったことがある人は想像がつきやすいと思います。
docker pull イメージ名
docker pull ubuntu
docker pull python
特に何も指定をしないと、最新版のUbuntuがインストールされます。これはUbuntuでなくても最新版がインストールされます。latest
というのは最新という意味です。
もちろんバージョン違いのイメージを持ってくることもできます。
docker pull ubuntu:24.04
こういった:24.04
のことをタグといいます。DockerHubでどんなタグがあるか調査することができます。せっかくなのでUbuntuのタグのページもリンクで載せておきます。
色々なタグがありますので、各種pull
してみてもいいかもですね。(後でも消せるので)
4. images
(イメージの一覧を確認する)
それでは持ってきたイメージが本当にあるのかどうかを確認してみましょう。
docker images
上記のコマンドを叩くと、現在インストールしているイメージの一覧が表示されると思います。
先ほどまでのコマンドを叩いている人は、Ubuntuのバージョン違いで二つのイメージが表示されるはずです。
5. ここで注意点
今の所イメージの話ばかりしていましたが、Dockerではイメージを操作するコマンドのほかに、イメージから作られるコンテナの操作をするコマンドに分けられます。あとでまとめを書きますので、詳しくはそちらをご確認ください。そしてここからは実際にコンテナを動かしていきます。
コンテナを操作するコマンドと、イメージを操作するコマンドは分けて考えるとgoodです。
6. run
(イメージからコンテナを作成して起動する)
では実際にイメージからコンテナを作成し、動かしてみましょう。
docker run -it ubuntu
今回はせっかくUbuntuを起動するので、UbuntuのBashを起動してコンテナ内でLinuxコマンドを叩いてみましょう。
ちょっとコマンドを打ってみました。Ubuntu内のシェルが起動しているので、基本的なLinuxコマンドを使うことができます。
ちなみに今いるのはコンテナの中です。
今使ったオプションは以下のものを使っています。
オプション | 説明 |
---|---|
-t |
仮想端末(TTY)を割り当てて、ターミナル上で見やすい入出力を実現する |
-i |
標準入力をコンテナに接続し、ターミナルで入力を受け付ける。 |
これも初学者では何を言っているかわからないと思うので、かいつまんで解説します。
まず-i
ですが、これは対話的にコマンドを打てるようにするものです。要はLinuxコマンドを実行できるようになります。
docker run -i ubuntu
ただこれだけのオプションだと、とても見にくい画面になってしまいます。
試しに叩いてみると、以下のような結果になります。
見にくいですね。なので、-t
オプションも一緒に実行しています。
-t
は仮想端末というものを割り当ててくれるので、普段のLinuxを触る時と変わらない見やすい画面にしてくれます。
今回は起動と同時にコンテナの中に入っているので-it
をつけましたが、起動しておいて、後からコンテナ内に入ることも可能です。その方法は後ほど解説していきます。
コンテナから出たい時は、以下のコマンドで可能です。
exit
7. ps
(コンテナの一覧を確認する)
ではコンテナから出たところで、コンテナ一覧を見ていきましょう。
コンテナ一覧を見るときはps
コマンドを使います。
docker ps
or
docker ps -a
今回のUbuntuのコンテナは、シェルからexit
すると自動で止まります。
ですので、止まっているコンテナも含めたすべてのコンテナを見ることができる-a
のオプションをつけて実行してみてください。
以下の画像のような結果になると思います。
これらの細かな内容に関しては次回の記事で解説する予定です。ただ、全く触れないのもダメなので今見てほしいところだけ解説します。
CONTAINER ID
コンテナそれぞれに割り当てられるランダムなIDです。コンテナの停止、削除、起動をするときに使います。
CREATED
コンテナが作られたのはいつか?の情報です。
STATUS
これは今コンテナが起動しているかどうかを表しています。Exited
なので今は停止しています。起動しているときはUpと表示されます。
NAMES
コンテナの名前です。指定しないと適当な名前が付きます。このコマンドを実際に叩いている人は、私の実行結果とは違う名前になっているはずです。
初学者はこの記事を読んだら、とりあえずこの4つだけわかっていればOKです。
8. start
とstop
(コンテナの起動と停止)
ここで止まったコンテナを起動して、その後停止してみます。
docker start コンテナID or コンテナ名
docker stop コンテナID or コンテナ名
今回先ほど起動したUbuntuのコンテナを再起動して停止しました。この時、指定できるのはコンテナIDかコンテナネームです。ただ、コンテナIDの方が楽です。画像をみるとわかるのですが、コンテナIDの頭文字2つだけで起動ができています。全てを打ち込むことがないのでかなり楽なんですね。
9. rm
(コンテナを削除する)
ではコンテナのライフサイクルの最後ですが、削除をしていきたいと思います。
コンテナはもちろん削除が可能です。では実際に消し方ですが、以下の通りにお願いします。
docker rm コンテナID or コンテナ名
削除を行うと、ps -a
で一覧を出しても特に何も出てこなくなります。完全に削除が行われたということですね。
コンテナを削除しても、元になったイメージは消えません。
おわりに
今回はDockerの初歩の初歩を解説しました。
有識者なら、あれ?あのコマンドは?となるかもしれませんが、それは次の記事でご説明いたします。主に以下のコマンドです。
- exec
- rmi
- commit
- prune
- runのその他オプション等
私はDockerについて覚える時、ライフサイクルの理解からまず押さえる必要があると思っています。(2回目)そうじゃないと、コンテナがどう起動して、どう削除されて、どうイメージが作られているのかわからなくなるからです。
ですので、今回の記事で実行したコマンドは実際に叩いてみることをオススメします。
次回は上記のその他のコマンドとオプション周りについて解説します。よかったら読んでいただけますと幸いです。
次の記事はこちら👇