はじめに
お疲れ様です。yuki_inkです。
コンテナ、使ってますか??
普段はEC2に甘やかされて生きている私ですが、今を生きるインフラエンジニアの端くれとして、いつかはコンテナと向き合う日が来るのだろうと思っていました。
そんな時、社内でKubernetesを使っていろいろやってみようという勉強会が企画されました。
この機は逃せない。勉強しなければ(歓喜)
ということで、コンテナ初心者が1から勉強する過程をメモ的に記録していきたいと思います。
やったこと
参考にした記事
Windows 10 + WSL 2 でDocker環境を構築する(Docker Desktop有料化対策)
(1) WSL 2のインストール
まずは自分のPCにWSLを導入できるか確認。
WSL 2の環境構築に必須となる要件は以下の通りです。
①Windows 10(64bit) バージョン2004以上
②パソコンのハードウェアがHyper-Vに対応している
PowerShellでsysteminfo
コマンドを実行して確認した。
結果、大丈夫そう。初手で躓かなくてよかった。
続いてPowerShellでwsl --install
コマンドを実行して、WSL 2をインストールする。
1回目の実行でよく分からないエラーが出たが、2回目の実行でうまくいった。
> wsl --install
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
インストール中: Ubuntu
Ubuntu はインストールされました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります 。
言われるがままPCを再起動。
再起動中、そういえばLinux ディストリビューション何にするか何も考えてなかったわ~/(^o^)\と思ったが、個人開発なのでまあヨシ。
指示に従って、Ubuntu用のユーザ名とパスワードを入力したら、いい感じになった。
(2) WSL 2の設定
コマンドプロンプトでwsl --list --verbose
コマンドを実行。
先ほど入れたUbuntuしか表示されてないので、デフォルトのディストリビューションを気にする必要なし。
> wsl --list --verbose
NAME STATE VERSION
* Ubuntu Running 2
(3) Docker Engineのインストール
休日に英語のドキュメントを読むことに拒否反応を示してしまい、大部分は以下の記事を参考にした。
「sudoなしでdockerコマンドを実行できるようにする」の手順を実施して、Dockerのインストールが完了。
長い闘いだった。。
インストール完了後のプロンプト出力
$ docker -v
Docker version 24.0.2, build cb74dfc
$ sudo service docker status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-06-17 16:22:57 JST; 7min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 8870 (dockerd)
Tasks: 13
Memory: 45.2M
CGroup: /system.slice/docker.service
└─8870 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
(以下略)
(4) Webサーバを動かしてみる
参考記事では、Dockerインストール後、MariaDBを起動しているが、
俺ははじめてコンテナを立てたらNginxを動かすと決めていた!!
ということで以下の記事を参考にNginxを動かしてみる。
docker image pull nginx
コマンドで最新のイメージをダウンロード。
docker image ls
コマンドでイメージを確認する。
$ docker image pull nginx
Using default tag: latest
latest: Pulling from library/nginx
5b5fe70539cd: Pull complete
441a1b465367: Pull complete
3b9543f2b500: Pull complete
ca89ed5461a9: Pull complete
b0e1283145af: Pull complete
4b98867cde79: Pull complete
4a85ce26214d: Pull complete
Digest: sha256:593dac25b7733ffb7afe1a72649a43e574778bf025ad60514ef40f6b5d606247
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest eb4a57159180 3 days ago 187MB
hello-world latest 9c7a54a9a43c 6 weeks ago 13.3kB
「nginx」というイメージが表示されているのでヨシ。
「hello-world」はdocker run hello-world
コマンドを実行した時に取得されたもの。
docker container run
コマンドを実行して、Dockerイメージ「nginx」から「webserver」という名前のDockerコンテナを起動する。
コンテナIDが出力された。
$ docker container run -d -p 8080:80 --name webserver nginx
a752110be57578d4ff8e673d7f58fb794708e9f4aba344d1ed45b3f91766a4bb
・「-p 8080:80」
ホスト側のポート番号(8080)と、Docker側のポート番号(80)を紐づけるオプションです。
なるほど。
ブラウザを立ち上げ、アドレスバーにhttp://localhost:8080/
と入れる。
Nginxのトップ画面が表示された!!うれしい!!
docker container ps
コマンドでプロセスの情報を見てみる。
$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a752110be575 nginx "/docker-entrypoint.…" 36 seconds ago Up 35 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp webserver
docker container stats
コマンドでコンテナのステータスを見てみる。
※systemctl普段使いしてる身なので、え、"status"じゃない??大丈夫??、と不安になる。大丈夫でした。
$ docker container stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
a752110be575 webserver 0.00% 7.23MiB / 3.758GiB 0.19% 3.12kB / 1.35kB 0B / 0B 9
最後に、「webserver」コンテナを停止させる。
プロセスを見て、止まっていることを確認する。
$ docker container stop webserver
webserver
$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
終わりに
参考記事におんぶにだっこでPCにDockerを入れてみました。
次はDockerイメージの作成とかもやってみたいと思います。