公開日:2023/10/22 0:00:00

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] をクリックします。

Images - podman desktop

各情報を入れていきます。

項目
Containerfile pathC:\DevWeb\Lab-WebSite\Containerfile
Build context directoryC:/DevWeb/Lab-WebSite
Image Nameexample.jp/ubi9-nginx

Build Image from Containerfile

あとは [Build] をクリックして作成します。

Done - Build Image from Containerfile

完成したら [Done] をクリックします。

Images - podman desktop

あとは、nginx の時と同じように再生すれば OK です。

今回は、html ファイル置き場を /usr/share/nginx/html から /var/www/html に変えてあるので、Volume を指定する場合は注意してください。Volume を指定しない場合は、src に入っていた index.html の内容が表示されます。

というとことで今回はここまで。