今更DockerをHello World!してみた
今更ですが個人開発用に Docker をちゃんと触ってみます。
経緯
Docker自体は知っていたんですが、Webのコーディングやフロントエンド周りばかり担当していたのでそこまでしっかり触る機会がありませんでした。
やっと個人開発ができそうな現状になったので、改めてDockerをちゃんと使ってみようかなというところでした。
WordPressなどWebのフロントエンド周りから初めて、今までの作業をより効率化推進などへ進めていければいいかなと思います。
Dockerとは
改めてDockerってなんだっていうのを簡単に学び直します。
Dockerは、アプリケーションをコンテナと呼ばれる隔離された環境にパッケージ化することで、どの環境でも同じように動作させることを可能にする技術です。これにより、開発者は「私のマシンでは動作するけど、他の人のマシンでは動作しない」といった問題から解放されます。
コンテナ技術は、アプリケーションのデプロイメント、スケーリング、運用をシンプルにし、開発と運用(DevOps)の間のギャップを埋めることを可能にします。
(ChatGPTから文章作成)
上記ももちろんですが、Dockerは1つのOSに対して複数のコンテナを管理することができるため、仮想マシンをOSごとに管理するのと比べて、軽量かつ速いのがいいなと思います。
Hello World!
Docker Desktopをインストール
Dockerを始めるにあたって、今回はDocker Desktopをインストールからスタート。
ちなみに、Docker Desktopは以下の条件じゃないと有償提供になるのでご注意ください。
・小規模ビジネス向け(従業員 250 未満、かつ年間収益 1 千万ドル未満)、個人利用、教育目的、非商用のオープンソースプロジェクトに対しては、 無償提供が継続 されます。
・大規模なエンタープライズ向けのプロフェッショナル利用に対しては、有償サブスクリプションが必要です。
インストールしたら簡単にチュートリアルしてみる。
Docker Image取得
Docker Imageは、Dockerでコンテナを作成するための静的なファイルのセットで、アプリケーションの実行に必要なコード、ランタイム、ライブラリ、環境変数、設定ファイルなどを含んでいるものみたい。アプリケーションを実行するための完全な実行環境を提供し、これを基にDockerコンテナが生成されるみたいです。
これはDocker Hubや他のDockerレジストリに保存し、共有することができるので、開発者はアプリケーションを簡単に配布し、異なる環境で一貫した方法で実行することが可能になります。
簡単に実行環境が共有できるの最高ですね。
今回は hello-world というImageをpullコマンドで取得してみます。
docker pull hello-world
pullできたら確認します。
docker images
# 作成したImageを一覧してくれます
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ee301c921b8a 10 months ago 9.14kB
Container作成
取得したImageを使ってContainerを作ります。
先ほど取得したImageのIMAGE IDを使います。
docker run ee301c921b8a
実行すると以下のように出力されます。
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Hello from Docker!
っていうメッセージと共に、どのような処理で取得したのか説明してくれます。
作ったContainerでUbuntuを起動するなら以下のコマンドで起動できます。
docker run -it ubuntu bash
-it
は-i
と-t
が合体したもので、inputとttyのことです。
起動したことが確認できたら、Containerから抜けましょう。
コマンドラインでexit または ctrl + p + q を実行することで抜けられます。
↓抜けると同時にContainerを終了させる
exit
↓抜けるだけでContainerは終了しない
[ctrl] + [p] + [q]
改めてContainerを確認してみます。
docker ps -a
-a
オプションをつけると停止中のContainerも表示してくれます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90bcdca391a4 ee301c921b8a "/hello" 22 minutes ago Exited (0) 9 minutes ago mystifying_chatelet
作ったら最後は削除
これでContainerとImageの作成を確認できました。
最後は作ったContainerとImageを削除して終わりとします。
まずはContainerを削除。
(Ubuntuも起動していた場合、ubuntuのContainerも追加されているので合わせて削除します)
# Containerを確認しIDを指定
docker ps -a
# IDを指定して削除
docker rm 90bcdca391a4
# 再度確認し、何も表示されてなければ削除完了
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
次はImageを削除
(これもUbuntuも起動していた場合、ubuntuのContainerも追加されているので合わせて削除します)
# Imageを確認しIDを指定
docker images
# IDを指定して削除(リポジトリ名でも可能)
docker rmi ee301c921b8a
Untagged: hello-world:latest
Untagged: hello-world@sha256:d000bc569937abbe195e20322a0bde6b2922d805332fd6d8a68b19f524b7d21d
Deleted: sha256:ee301c921b8aadc002973b2e0c3da17d701dcd994b606769a7e6eaa100b81d44
Deleted: sha256:12660636fe55438cc3ae7424da7ac56e845cdb52493ff9cf949c47a7f57f8b43
# 再度確認し、何も表示されてなければ削除完了
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
以上、DockerのHello Worldでした。
感想
思った以上に簡単でした。
賛否ありそうですが個人的にDocker DesktopのようなGUIがあるのは助かります。
こういうツールもあるだけで導入自体のハードルもグッと下がる印象です。
DockerになれるためにWordpressのテーマ開発環境とか慣れている分野から始められたらと思います。
Discussion