1
0

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 1 year has passed since last update.

[メモ]初心者がコンテナを触ってみる - (1)PCにDockerをインストールする

Last updated at Posted at 2023-06-17

はじめに

お疲れ様です。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^)\と思ったが、個人開発なのでまあヨシ。

再起動後、以下のプロンプトが自動起動してビビる。
image.png

指示に従って、Ubuntu用のユーザ名とパスワードを入力したら、いい感じになった。
image.png

(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のトップ画面が表示された!!うれしい!!
image.png

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イメージの作成とかもやってみたいと思います。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?