WSL2のAlmaLinuxでDockerを動かしDockerコマンドを叩く(図解)

プロモーションを含みます。
プロモーションを含みます。

Windows 11 の「WSL2」に「AlmaLinux」をインストーしたのちに、その AlmaLinux に「Docker」をインストールし Docker 環境を構築します。

WSL2 機能を有効化

Windowsロゴ + R キーを押下し、「ファイル名を指定して実行」を起動

以下を入力し、Enter キー

optionalfeatures

以下の機能にチェックを入れて「OK」をクリック

  • Linux 用 Windows サブシステム
  • 仮想マシンプラットフォーム

PC の「再起動」を実施

PC 再起動後「コマンドプロンプト」を起動し、以下のコマンドを実行

wsl --set-default-version 2

これは、新しい Linux ディストリビューションのインストール時に、どのバージョンの WSL を既定値にするかを指定しています。

AlmaLinux インストール

▼「Microsoft Store」を起動

▼ 検索ボックスに「almalinux」と入力

「AlmaLinux 9」をクリック

▼「入手」をクリック

▼「開く」をクリック

▼ 新規に作成するユーザーの「ユーザー名」を入力

▼「パスワード」を入力

▼ もう一度「パスワード」を入力

▼ プロンプトが表示された

▼ とりあえず以下のコマンドでアップデートを実施。

sudo dnf update -y

▼ リポジトリを追加
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

▼ Docker パッケージのインストール
sudo dnf install -y docker-ce docker-ce-cli containerd.io

※上記「リポジトリの追加」と「Docker パッケージインストール」については、以下のサイトを参考にさせていただきました。感謝。

WSL2:AlmaLinux 8.5にdockerを用意した時の記録

Docker Desktop for Windows インストール

以下の URL より Docker Desktop Installer をダウンロードし、Docker Desktop for Windows をインストールします。
https://www.docker.com/products/docker-desktop/

▼ Hyper-V ではなく WSL2 を使うようにするため、以下にチェックを入れたままにします。

「Use WSL 2 instead of Hyper-V (recommended)」

▼ インストールが開始されます。

▼ インストールは数分で完了します。

▼ Docker Desktop を起動します。

▼「Accept」をクリック

▼「あなたの仕事は何ですか?」と問われますが「Skip」でいいでしょう。

▼「設定(歯車)」アイコンをクリック
Windows 起動時に Docker Desktop を自動起動するよう以下にチェックを入れておきます。

「Start Docker Desktop when you log in」

▼ AlmaLinux 9 を Docker と統合させます。

「Resources」→「WSL Integration」

「AlmaLinux9」を オン

「Apply & restart」をクリック

Docker環境の確認

▼「ターミナル」アプリ(AlmaLinux)を起動します。

以下のコマンドを実行し「hello-world」イメージを Docker Hub から pull(引っ張ってくる)します。

docker run hello-world

コンテナ作成・起動コマンドである「docker run」コマンドで、PC ローカルにイメージがない場合は自動的に、Docker Hub からイメージを pull して(引っ張って)きてくれます。

Windows のバージョンが古く「ターミナル」アプリがない場合は、Microsoft Store からインストールする必要があります。

docker run コマンドは、「docker create」と「docker start」を合わせ持ったコマンドです。

ローカル PC に docker イメージがない場合は、Docker Hub からイメージの取得(pull)もしてくれます。

Docker 環境ができた。

Dockerコマンドで状態確認

Dockerイメージの確認

PC ローカルに存在する Docker イメージを確認するコマンドです。

▼ コマンド

docker images

Dockerコンテナ状態の確認

作成されたコンテナを一覧表示するコマンドです。

▼ コマンド(-a オプションで停止中コンテナ含む)

docker ps -a

CentOS 8 のコンテナ作成とコマンド解説

CentOS 8 のコンテナを作成するコマンド例です。

▼ コマンド

docker run -it --name mycentos centos:8 /bin/bash

-it オプション

例) docker run -it

interactive の「i」

コンテナの標準入力にアタッチします。

接続されていない場合でも STDIN を開いたままにしておきます。

簡単に言うと、ホストからの入力を受け付けるようにします。

TTY の「t」

コンテナに、「擬似 TTY」を割り当てます。

「-it」オプションは、ホストからコンテナにコマンドを送信し、コンテナ側を直接操作したい時によく使うオプションです。

コンテナ側を直接操作したい場合は、必ず指定しておきましょう。

また、docker run コマンドでコンテナ作成時に「-it」オプションを付けず作成した場合、そのコンテナの終了後に、再スタート(docker start)させたとしても、コンテナが起動しませんでした。

docker run コマンドでコンテナ作成時に「-it」オプションを付けてコンテナ作成した場合は、そのコンテナの終了後に、docker start コマンドを実行することで、コンテナが起動しました。

--name オプション

例) --name mycentos

コンテナに自分の好きな、または分かりやすい名前を付けます。

ハイフン( – )は2つ必要です。

この名前は「コンテナ ID」と同様に、docker startdocker rm コマンドの引数として利用できます。

コンテナを利用する上で、名前を付けておく方がコマンド操作などが楽になります。

イメージ指定:タグ

例) centos:8

「centos」がイメージ名で、「8」がタグ(主にバージョンを明記)です。

タグを指定しない場合、「latest」(最新バージョン)が pull されます。

/bin/bash

例) /bin/bash

ここにはコマンドを指定するようです。

「/bin/bash」を指定しなくても、bash が起動しましたが、とりあえず指定しておいた方が良いかと思います。

上記コマンドで作成した CentOS 8 をコンテナが起動したままの状態で抜けるには以下のキーを入力します。

Ctrl + PCtrl + Q

exit コマンドで CentOS 8 から抜けた場合はコンテナが終了します。

dockerコマンド一覧

docker run

docker run コマンドは、「docker create」と「docker start」 を一連の流れで実施します。

コンテナを作成し、コンテナを起動します。

また、指定したイメージがローカルにない場合、Docker Hub からダウンロード(pull)もしてくれます。

docker ps

稼働中のコンテナ一覧を表示します。

-a オプションを付けると、非稼働のコンテナも含めて表示します。

docker images

ダウンロード(pull)したイメージ一覧を表示します。

「docker images」は、旧コマンドです。

旧コマンドといっても、今もなお、日常的に使われています。

新コマンドは「docker image ls」です。

docker rm

停止中のコンテナを削除するコマンドです。

「docker rm」は、旧コマンドです。

新コマンドは「docker container rm」です。

docker rmi

イメージを削除するコマンドです。

「docker rmi」は、旧コマンドです。

新コマンドは「docker image rm」です。

docker build

「Dockerfile」からイメージを作成するコマンドです。

参考書

Docker を操作するにあたって、以下の本も購入しました。

図が多く、説明が分かりやすいです。

Docker / Kubernetes 初心者にはおすすめの本です。

こちらは、解説が丁寧で分かりやすい実践的な Docker の基礎本です。

この記事を書いた人
TerraYuuki

ITインフラエンジニアのアウトプットブログ。仕事や資格勉強などを通じて得たIT技術やWindows Tips、ガジェットレビュー記事を主に書いています。

written by Terra Yuuki
PR
サーバー
てこエンジニアブログ