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オプション調整
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(古い
プッチンプリンはスキャットマン(全く関係無し