1.はじめに
自分のPCにdockerをインストールし、動かしてみます。
オンプレミスのサーバ構築する会社で働いていたので、仕事でdockerに触る機会がなく、次の職場では必要なので慌てて学習する人です。
本記事は、2024年11月時点、Windows 11 Home で実施しています。
2.docker desktopインストール
公式ページからdocker desktopをダウンロードし、インストールします。
インストールのオプションは、特に何も変更せず、デフォルトのままとします。
https://www.docker.com/ja-jp/products/docker-desktop/
なお参考にした資料では、Docker Toolboxを推奨するものもありましたが、2024年11月現在、Docker Toolboxはサポート終了しており、Windows 11 Homeに対応していないようです。
3.hello world
docker desktopの画面を起動すると、サインアップするよう勧められます。
ユーザーID持っていないとイメージを落としてくるのが不便なので、持っていない人はサインアップした方がよさそうです。
このままdocker desktop画面UIでも作業できるのですが、コマンドを覚えたいのでpowershellで作業します。
powershellを起動し、コマンドを実行します。
PS C:\Users\testuser> docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Download complete
Digest: sha256:d211f485f2dd1dee407a80973c8f129f00d54604d2c90732e8e320e5038a0348
Status: Downloaded newer image for hello-world:latest
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.
(amd64)
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 world」のイメージが無いため、自動でネットからダウンロードして起動してくれているようです。便利。
コンテナの実行状況は、以下のようにコマンドで確認します。
PS C:\Users\testuser> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a0f0712e2d82 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago inspiring_hofstadter
4.Linuxイメージの作成
それでは簡単なLinuxイメージを作って起動してみます。
2024年11月現在、ちょうどCentOSがサポート終了となり、今までのようにCentOSで実験する訳にはいきません。
代替のLinuxディストリビューションはいくつかあるのですが、今はAlmaLinuxがメジャーになりつつあります。
今回は、AlmaLinuxのバージョン8で実験します。
powershellで実行しやすいようユーザーディレクトリ直下にtestフォルダを作成し、以下のファイルを設置します。
C:\Users\testuser\test\Dockerfile
FROM almalinux:8
RUN yum update -y
powershellで、testフォルダの上の階層のディレクトリから、以下のようにコマンド実行します。
「-t」は、イメージ名とタグを付与するオプションです。イメージ名をalmalinux、タグ名をver.8と指定してみました。
PS C:\Users\testuser> docker build -t almalinux:ver.8 test
[+] Building 6.1s (7/7) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 74B 0.0s
=> [internal] load metadata for docker.io/library/almalinux:8 1.9s
=> [auth] library/almalinux:pull token for registry-1.docker.io 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/2] FROM docker.io/library/almalinux:8@sha256:d7dbaf57916185b2be09e1eaa1156b543f3937164ffa08d7fdc020a0a3800a5a 0.0s
=> => resolve docker.io/library/almalinux:8@sha256:d7dbaf57916185b2be09e1eaa1156b543f3937164ffa08d7fdc020a0a3800a5a 0.0s
=> CACHED [2/2] RUN yum update -y 0.0s
=> exporting to image 4.0s
=> => exporting layers 0.0s
=> => exporting manifest sha256:0146bf2f9b74056872ac2db50a993e03ad9b9621f8262b9e9fd2ffbd04e9941b 0.0s
=> => exporting config sha256:935c9463378d9de1f981eebe6a3d8050021bcb2a2ef8c67ab1e12f988a88cead 0.0s
=> => exporting attestation manifest sha256:fb71980e8790fca069aede0a665195ac5309639406274a3fa749473724c01f9c 0.0s
=> => exporting manifest list sha256:29c6964d1d5563303001cac24660111e0e274bb6cc9a8f8b9bdadc6f65488f63 0.0s
=> => naming to docker.io/library/almalinux:ver.8 0.0s
=> => unpacking to docker.io/library/almalinux:ver.8 3.9s
View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/ms2h5wlr562weukjd6x1la93v
うまくいっていれば、以下のようにイメージが作成されています。
PS C:\Users\testuser> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
almalinux ver.8 29c6964d1d55 5 hours ago 536MB
hello-world latest d211f485f2dd 18 months ago 24.4kB
5.作成したlinuxイメージからコンテナ起動
起動して、そのままrootログインまで実行します。
「-it」オプションで対話型セッションを開始し、「--name mylinux」でコンテナに名前を付けています。
(参考)https://offers.jp/media/programming/a_4105
PS C:\Users\testuser> docker run -it --name mylinux almalinux:ver.8
[root@a63eb00c86be /]# cat /etc/redhat-release
AlmaLinux release 8.10 (Cerulean Leopard)
簡単にlinux環境ができあがりましたね。
exitしてから、コンテナのプロセスを確認します。
PS C:\Users\testuser> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a63eb00c86be almalinux:ver.8 "/bin/bash" 9 minutes ago Exited (0) 27 seconds ago mylinux
a0f0712e2d82 hello-world "/hello" 43 minutes ago Exited (0) 43 minutes ago inspiring_hofstadter
ステータスが「Exited」ですね。
今度は、docker startで実行してみます。
PS C:\Users\testuser> docker start mylinux
mylinux
ステータスが「Up」になりました!
PS C:\Users\testuser> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a63eb00c86be almalinux:ver.8 "/bin/bash" 14 minutes ago Up 4 seconds mylinux
a0f0712e2d82 hello-world "/hello" 48 minutes ago Exited (0) 48 minutes ago inspiring_hofstadter
最後に、このコンテナの中にログインしてコマンド実行してみます。
PS C:\Users\testuser> docker exec -it mylinux bash
[root@a63eb00c86be /]# pwd
/
[root@a63eb00c86be /]# ls
bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
6.終わりに
自分のPCで遊ぶ用の環境…ゴホゴホ…勉強のためdocker環境を作ってみました。
ここから何を作っていくかアイデア次第ですね。
ご拝読ありがとうございました!