Windows 10でPodmanを動かす覚書 WSL2+Ubuntu 20.04版

Windows 10にPodmanをインストール、WordPressを動かしてみました。

動作環境を構築する覚書を記録しておこうと思います。

※22.10.27追記:

Podman 4.3.0がリリースされ、直接Windows 10からPodman.exeコマンドを実行できるようになりました。新しい記事はこちらになります。Ubuntuは不要です。

以下、Ubuntuを挟んだPodmanの構築手順になります。


使用するWindows 10環境

Microsoft Windows 10 Pro x64版を使用しました。

バージョンは2004で試しました。


WSL2のインストール

WSLについてのMicrosotさん公式ガイドはこちらになります。

WSL2のインストールは、こちらの公式ガイドに沿って行いました。

手順が更新される可能性がありますので、公式ガイドをご覧になってインストールされる方法が確実かと思います。本ブログの内容は参考程度にお考え下さい。


カーネルコンポーネントの有効化

カーネルコンポーネントの更新は、「WSL2 Linux kernel update package for x64 machines」が必要なようです。

ダウンロードしてインストールしました。


Ubuntu 20.04 LTSのインストール

Microsoft Storeアプリにて、Ubuntu 20.04 LTSをインストールしました。容量は450MB弱のようです。スタートメニューにUbuntu 20.04 LTSが追加されました。

Ubuntu 20.04 LTSにてWSL2を使用する設定を行いました。


Podmanのインストール

Podmanのインストールは、こちらのRedHatさん公式資料を参考にさせて頂きました。

. /etc/os-release
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/x${NAME}_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/x${NAME}_${VERSION_ID}/Release.key -O Release.key
sudo apt-key add - < Release.key
sudo apt-get update -qq
sudo apt-get -qq -y install podman
sudo mkdir -p /etc/containers
echo -e "[registries.search]\nregistries = ['docker.io', 'quay.io']" | sudo tee /etc/containers/registries.conf

Podmanコマンドを使用できるようになりました。


Podmanオプション調整

RedHatさんの資料にありますように、Podmanの実行時にオプションを付加する必要があるようです。 何か警告が出ていますが。警告が表示されないように、/etc/containers/containers.confファイルを編集します。

sudo vi /etc/containers/containers.conf

cgroup_mangerとevents_loggerを変更しました。


WordPressを動かしてみました

※21.1.31追記:

Podmanのバージョンアップの影響で、下記のYAMLファイルではポッドが正常に起動できない場合があります。

その場合、ポッドを手動で作成後、YAMLファイルを出力する必要が御座います。

手順は下記の記事を御覧ください。


以前Raspberry Pi 4で64ビットWordPressを動かした時に作成したKubernetesのpod.yamlファイルを持ってきてみます。

mkdir wordpress
cd wordpress
cat <<EOF > wordpress-pod.yaml

viでコピペすると変なインデントが入ってしまうため、catコマンドに貼り付けてみました。

# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-1.9.3
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2020-09-19T23:15:42Z"
  labels:
    app: wordpress-pod
  name: wordpress-pod
spec:
  containers:
  - name: wp-web
    env:
    - name: WORDPRESS_DB_NAME
      value: wp
    - name: WORDPRESS_DB_HOST
      value: 127.0.0.1
    - name: WORDPRESS_DB_USER
      value: wordpress
    - name: WORDPRESS_DB_PASSWORD
      value: w0rdpr3ss
    image: docker.io/library/wordpress:latest
    ports:
    - containerPort: 80
      hostPort: 8080
      protocol: TCP
    resources: {}
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
      seLinuxOptions: {}
    workingDir: /var/www/html
    volumeMounts:
    - mountPath: /var/www/html
      name: wp-volume
  - name: wp-db
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: myrootpass
    - name: MYSQL_USER
      value: wordpress
    - name: MYSQL_PASSWORD
      value: w0rdpr3ss
    - name: MYSQL_DATABASE
      value: wp
    image: docker.io/library/mariadb:latest
    resources: {}
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
      seLinuxOptions: {}
    workingDir: /
    volumeMounts:
    - mountPath: /var/lib/mysql
      name: db-volume
  volumes:
  - name: wp-volume
    hostPath:
      path: /home/hide/wordpress/html
      type: Directory
  - name: db-volume
    hostPath:
      path: /home/hide/wordpress/mysql
      type: Directory
status: {}

yamlの内容を貼り付け後、「EOF」と入力してcatを終了しました。volumesセクションの「/home/hide/」の部分は、実行する環境に合わせて変えて下さい。

作成したpod.yamlファイルを使ってポッドを起動してみます。WordPressはTCPポート8080番で動作するように設定しました。

mkdir html mysql
sudo podman play kube ./wordpress-pod.yaml

試しにsudoなしでポッドを起動しましたが、コンテナが実行されませんでした。sudo付きで実行します。今度はコンテナが正しく3つ動いているように見えます。

コンテナの中でbashを動かしてみました。確かにwpというWordPress用のデータベースが生成されています。Windows PCにて、WebブラウザでWordPressサイトにアクセスしてみます。

http://localhost:8080

このような感じで、確かにWindows 10 PCでPodmanを使ってWordPressサイトを構築できました。


実はその後、複数のWordPressサイトを別ポートで起動できないかどうか確認しました。

結果的には、Windows 10のPodmanではうまく行かない状況です。mysqlがうまく複数動作しない感じでした。現象としてはこちらのRaspberry Pi 4で試した時と同じでした。

このあたりの問題は、いまのところPodmanに対応した新しいコンテナイメージの登場を待つ感じです。

さて。運用に向けて、ポッドの制御コマンドの覚書を貼っておこうと思います。

# ポッド一覧、コンテナ一覧
sudo podman pod ls
sudo podman ps
# コンテナの中でbash起動
sudo podman exec -it wordpress-pod-wp-db bash
sudo podman exec -it wordpress-pod-wp-web bash
# 停止と削除
sudo podman pod stop wordpress-pod
sudo podman pod rm wordpress-pod
# 起動
sudo podman play kube ./wordpress-pod.yaml

バットマンはコウモリ。

ドッカーはクジラ。

ポッドマンはアザラシ?アシカ?

ロッドマンはNBA(古い

プッチンプリンはスキャットマン(全く関係無し

スポンサーリンク

フォローする

スポンサーリンク