日本アイ・ビー・エム株式会社
テクノロジー事業部
パートナーサクセスエンジニア
松島 輝昌(Teruyoshi.Matsushima@ibm.com)
コンテナDojo #4:
VSCodeを使ったPodmanコンテナアプリ開発
松島 輝昌 Teruyoshi.Matsushima@ibm.com
SI企業、医療機器メーカー、通信企業等でエンジニアとして研鑽。
現在、⽇本IBMにてソリューション アーキテクトとして従事。
twitter : @trtrbohz
facebook : https://www.facebook.com/Teru.Matsushima
Linked-in : https://www.linkedin.com/in/teruyoshi-matsushima
2014年6⽉ E2D3 ver0.1 企画・設計・開発・構築
⽇経ソフトウエア主催のOffice⽤アプリ開発コンテストにて特別賞受賞
第009494号
IBM Red Hat Synergy Go to Market © 2021 IBM Corporation
⾃⼰紹介
Agenda
1. 目的とゴール
2. コンテナエンジン Podman 紹介
3. Podmanコンテナ実行
4. VSCodeからPodmanコンテナへ接続
5. Webサイト追加&編集
出展 : Qiita VS Code から Podman コンテナ@Mac&Windows にDevContainerを使って接続&開発
1.目的とゴール
目的
ゴール
• コンテナエンジン Podman と Docker の違いを認識していただく
• VSCode を使うと楽にコンテナに接続し、開発できることを認識していただく
•ローカルPCとコンテナ間で共有したフォルダを介しコンテナアプリを開発でき
ることを認識していただく
2.コンテナエンジン Podman 紹介
• rootless(root権限不要のプロセス)で動作するOCI互換のコン
テナ管理ツール
※Dockerはroot権限で動作するデーモンプロセス
・このプロセスで全コンテナを管理
・セキュリティ
• OpenShiftのコンテナエンジン
• RHEL8から採用されているコンテナエンジン(Dockerは非推奨)
出展 : Red Hat トピック - Linux コンテナについて - Podman とは
demon
daemon
2.1. Podman インストール
•Docker-Desktop のようなGUI付
きコンテナ管理アプリPodman-
Desktopを利用
•各環境に合わせてインストール
Containers and Kubernetes for application developers
インストールはコチラ
2.2. VS Code インストール
https://code.visualstudio.com/download
各環境に合わせてインストール
インストールはコチラ
〜今日やることの全体像〜
ローカルマシン
/
┣ ・・・
︙
┗┳
┣ ・・・
︙
┗┳
┣ ・・・
┗ share folder
Podman コンテナ
/
┣ ・・・
┣ ・・・
︙
┗ shared folder
③Podma コンテナ構築 ④VS Codeの
DevContainersにより
フォルダを共有
⑤共有したフォルダ内で
アプリ作成
3. Podmanコンテナ実行
1. コンテナ上のPython実行環境準備
2. コンテナ実行
3. 動作確認
3. 1. コンテナ上のPython 実行環境準備
1. 左の構成となるようにディレクトリ、ファイルを作成
2. アセットは以下githubからダウンロード
https://github.com/Teruyoshi-
Matsushima/demo4podman/archive/refs/heads/main.zip
demo4podman
┣ app
┃ ┗ index.py
┗ Dockerfile
作業ディレクトリ
Dockerfile index.py
3. 1. コンテナ上のPython 実行環境準備
FROM python:3.9.10
WORKDIR /app
ENV PORT 80
COPY ./app /app
RUN pip install Flask
CMD ["python", "index.py"]
from flask import Flask
app = Flask(̲̲name̲̲)
@app.route("/")
def index():
return "<h1>Hello, World!</h1>"
if ̲̲name̲̲ == "̲̲main̲̲":
app.run(host="0.0.0.0", port=80, debug=True)
3.2. コンテナイメージビルド
以下のコマンドによりイメージビルド
~ $ podman build -f ./Dockerfile –t flaskapp:latest .
3.3. コンテナアプリ実行
以下のコマンドによりコンテナアプリ実行
~ $ podman run --name vscodeTestFlask -t -v ./app:/app -p 9000:80 -d localhost/flaskapp
3.4. 動作確認
ブラウザを開き「localhost:9000」にアクセス
4.VSCodeからPodmanコンテナへの接続
1. VS Code に Docker 拡張を追加し設定を変更
2. VS Code の Dev Containers 機能を使って Podman コンテナへ接続
4.1. VSCodeへDocker拡張追加・設定
1. VS Code に Docker 拡張を追加
4.1. VSCodeへDocker拡張追加・設定
2. Docker 拡張の設定を変更
① 「Docker」拡張の右にある⻭⾞アイコンをクリックし、メニューの中から
「拡張機能の設定」を選択
② 上記検索ウィンドウに「DockerPath」を⼊⼒
③ 「Dev 〉 Docker:Docker Path」を下図のように「docker」→「podman」
4.2. Podmanコンテナへ接続
1. コンテナへアタッチ
図にあるように VSCode の左にある「リモートエクスプローラー」をクリックし、
起動しているコンテナを表⽰する
→ 対象となるコンテナを選択し、右クリック
→「Attach to Container」をクリック
4.2. Podmanコンテナへ接続
2. コンテナ環境へ接続
新たに開いた VS Code で「Dev Containers」-[ターミナルの分離]をクリックすると、
コンテナ環境に接続することができます。
①「Dev Containers」
②「ターミナルの分離」
コンテナに
接続できた!
5.Webサイト追加&編集
1. 新規ファイルを追加 newfile.py
demo4podman
┣ app
┃ ┣ index.py
┃ ┗ newfile.py
┃
┗ Dockerfile
PCとコンテナ間の共有フォルダ
新規ファイル
import os
from flask import Flask
port = int(os.environ['PORTʼ])
app = Flask(̲̲name̲̲)
@app.route('/ʼ)
def index():
return '<h1>Hello World Cup!</h1>ʼ
if ̲̲name̲̲ == '̲̲main̲̲ʼ:
app.run(debug=True, host='0.0.0.0', port=81)
ローカル側で作業
5.Webサイト追加&編集
2. 作成した新規ファイルをコンテナ環境内で実⾏
① コンテナ環境で新規⽣成ファイルをpythonにて実⾏
② 実⾏を確認するため「ブラウザで開く」をクリック
~ $ python newfile.py コンテナ側で作業
5.Webサイト追加&編集
3. 実⾏確認
import os
from flask import Flask
port = int(os.environ['PORTʼ])
app = Flask(̲̲name̲̲)
@app.route('/ʼ)
def index():
return ʻ<h1>Hello World Cup!</h1><br><h2>感動をありがとー!!!</h2>ʼ
if ̲̲name̲̲ == '̲̲main̲̲ʼ:
app.run(debug=True, host='0.0.0.0', port=81)
5.Webサイト追加&編集
4. newfile.py をローカル側で編集&保存、その後ブラウザを更新
(コンテナ再起動不要)
ローカル側で作業
まとめ
•Docker以外にPodmanもコンテナ管理ツールとして
利用可能
•VS Code を使ってPodmanコンテナに接続する方法
を紹介
•VS Code ✕ Podmanコンテナ で新規Webサイト作成
今後
• コンテナ on Podman × VSCode による.NET アプリ開発
• .NET 開発⽤コンテナ環境構築
• .NET アプリ作成
• Watson AI × .NETアプリ作成
ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独⾃の⾒解を反映したものです。それらは情報提供の⽬的のみで
提供されており、いかなる参加者に対しても法律的またはその他の指導や助⾔を意図したものではなく、またそのような結果を⽣むものでもありません。本講演資料に
含まれている情報については、完全性と正確性を期するよう努⼒しましたが、「現状のまま」提供され、明⽰または暗⽰にかかわらずいかなる保証も伴わないものとし
ます。本講演資料またはその他の資料の使⽤によって、あるいはその他の関連によって、いかなる損害が⽣じた場合も、IBMは責任を負わないものとします。 本講演資
料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使⽤を
規定する適⽤ライセンス契約の条項を変更することを意図したものでもなく、またそのような結果を⽣むものでもありません。
本講演資料でIBM製品、プログラム、またはサービスに⾔及していても、IBMが営業活動を⾏っているすべての国でそれらが使⽤可能であることを暗⽰するものではあり
ません。本講演資料で⾔及している製品リリース⽇付や製品機能は、市場機会またはその他の要因に基づいてIBM独⾃の決定権をもっていつでも変更できるものとし、い
かなる⽅法においても将来の製品または機能が使⽤可能になると確約することを意図したものではありません。本講演資料に含まれている内容は、参加者が開始する活
動によって特定の販売、売上⾼の向上、またはその他の結果が⽣じると述べる、または暗⽰することを意図したものでも、またそのような結果を⽣むものでもありませ
ん。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使⽤した測定と予測に基づいています。ユーザーが経験する実際のスループットやパ
フォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、⼊出⼒構成、ストレージ構成、および処理されるワークロードなどの考慮事項を
含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。
記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使⽤したか、またそれらのお客様が達成した結果の実例として⽰されたものです。実際の
環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。
IBM、IBM ロゴ、ibm.com、IBM Cloud、IBM Cloud Paksは、 世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他の製品名および
サービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧くださ
い。
Microsoft, Windows, Windows Server, .NET Framework, .NET, .NET Coreは、Microsoft Corporationの商標または登録商標です。
ご清聴ありがとうございました
コンテナDojo #4:VSCodeを使ったPodmanコンテナアプリ開発.pdf

コンテナDojo #4:VSCodeを使ったPodmanコンテナアプリ開発.pdf