podman for windows
Section 5 Podman Desktop 2
概要
Containerfile や Dockerfile を用いたコンテナの使い方をやってきます。
Containerfile を作成
どこかから適当に持ってきてもいいのですが、実験的に作っていたものがあるのでそれを使います。
まずはフォルダ構成を作成しましょう。 Section 3 をやっていれば同じものがあるので、html フォルダをコピーして src フォルダを作成してください。
[-] C:\
`--[-] DevWeb
`--[-] Lab-WebSite
|--[-] html
| `-- index.html
|--[-] src
| `-- index.html
`-- Containerfile
src/index.html の中身は、html/index.html の内容と変えておきましょう。
あとは、Containerfile という名称で Lab-WebSite 下に下記の内容でファイルを作成します。
# Baseとなるイメージ
FROM registry.access.redhat.com/ubi9/ubi-minimal
# コンテナが公開しているポート。
# 必ずしも公開しているとは限らないらしい
EXPOSE 8080
EXPOSE 8443
# RUNはイメージ作成時にのみ実行
# nginx をインストール
RUN microdnf -y install nginx && \
mkdir -p /var/www/html && \
chown nginx:nginx /var/www/html
# 実際には volumeコマンドで上書きするがとりあえず実験
COPY src/* /var/www/html/
# nginx の documet root を変更
# ポートも 80 が使えないので listen 8080 に変更
RUN cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org && \
cat /etc/nginx/nginx.conf.org \
| sed -E "s/(^[ ]+root[ ]+)\/usr.*$/\1\/var\/www\/html;/" \
| sed -E "s/(^[ ]+error_page .*$)/#\1/" \
| sed -E "/(^[ ]+location =[^\{]+)/,/^[ ]+\}/s/(^[ ]+.*$)/#\1/" \
| sed -E "s/(^[ ]+listen[ ]+.*)(80;)/\18080;/" \
> /etc/nginx/nginx.conf
# コンテナ実行時のコマンド
# nginx サービススタート(foregroundで動作させていないとコンテナが落ちるのでこうなる)
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
準備ができたら、Podman Desktop を起動してイメージを作成していきます。
イメージ作成
Images タブ内の [Build an image] をクリックします。
各情報を入れていきます。
項目 | 値 |
---|---|
Containerfile path | C:\DevWeb\Lab-WebSite\Containerfile |
Build context directory | C:/DevWeb/Lab-WebSite |
Image Name | example.jp/ubi9-nginx |
あとは [Build] をクリックして作成します。
完成したら [Done] をクリックします。
あとは、nginx の時と同じように再生すれば OK です。
今回は、html ファイル置き場を /usr/share/nginx/html から /var/www/html に変えてあるので、Volume を指定する場合は注意してください。Volume を指定しない場合は、src に入っていた index.html の内容が表示されます。
というとことで今回はここまで。