Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
いまからでも遅くないコンテナ座学
Search
NoMu
December 23, 2024
Technology
0
110
いまからでも遅くないコンテナ座学
本資料は以下connpassで実施したセッションの内容になります。
https://ibm-developer.connpass.com/event/335573/
NoMu
December 23, 2024
Tweet
Share
More Decks by NoMu
See All by NoMu
Rerun いまからでも遅くない!デジタルレイバー超入門(座学編)
nomu
0
170
いまからでも遅くない!コンテナでWebアプリを動かしてみよう入門(2-2)WebAPIハンズオン
nomu
0
190
いまからでも遅くない! コンテナでWebアプリケーションを 動かしてみよう(2-1)WebAPI座学
nomu
0
290
いまからでも遅くない! コンテナでWebアプリケーションを 動かしてみよう(1)Gitハンズオン
nomu
0
590
Gitハンズオン準備
nomu
0
480
いまからでも遅くない!デジタルレイバー超入門(座学編)
nomu
1
290
WebSphere_Integration_Meetup
nomu
0
19
いまからでも遅くない!システム間連携入門(メッセージキュー編)
nomu
0
820
ネットワーク超入門(座学編)
nomu
4
1k
Other Decks in Technology
See All in Technology
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
340
クレカ・銀行連携機能における “状態”との向き合い方 / SmartBank Engineer LT Event
smartbank
2
100
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
160
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.4k
事業貢献を考えるための技術改善の目標設計と改善実績 / Targeted design of technical improvements to consider business contribution and improvement performance
oomatomo
0
140
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.9k
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
180
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
130
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
39
16k
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
[JAWS-UG新潟#20] re:Invent2024 -CloudOperationsアップデートについて-
shintaro_fukatsu
0
120
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
Featured
See All Featured
Side Projects
sachag
452
42k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
KATA
mclloyd
29
14k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
How to Ace a Technical Interview
jacobian
276
23k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
170
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
A Modern Web Designer's Workflow
chriscoyier
693
190k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Transcript
日本アイー・ビー・エム株式会社 テクノロジー事業本部 カスタマーサクセス 村田 憲昭 野中 佑太 いまからでも遅くない!コンテナで Webアプリを動かしてみよう入門 (3-1)コンテナ座学
2024年12月23日 17時03分まで マイクミュートにして お待ちください
2 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 自己紹介 村田 憲昭 北海道北斗市 スノーボード、登山、グルメ、猫 カスタマーサクセス DX人材育成/教育(IT全般) 社内SE(いわゆる「ひとり情シス」) 某コンビニのエンジニア 名前 生息地 趣味 経歴
[email protected]
https://www.linkedin.com/in/noriaki-murata-nmz LinkedIn: Mail:
3 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 自己紹介 野中 佑太 秋田県秋田市 運動、カラオケ、温泉巡り カスタマーサクセス SE(会社員・フリーランス) 名前 生息地 趣味 経歴
[email protected]
https://www.linkedin.com/in/yuta-nonaka/ LinkedIn: Mail:
4 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 免責事項 本資料に含まれる情報は可能な限り正確を期しておりますが、 記載された内容に関して、日本アイ・ビー・エム株式会社が 何ら保証するものではありません。 従って、本資料の情報の利用は使用者の責任において 為されるものであり、資料の内容によって受けた 如何なる被害に関しても一切の補償をするものではありません。
5 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation https://app.sli.do/event/w5ARpQ5uNABGLAcsvQfTCL ちょっと皆様に質問です!
6 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation いまからでも遅くないシリーズ •(1)Gitハンズオン •(2)WebAPIハンズオン •(3)コンテナハンズオン •(4)Reactハンズオン •(5)データベースハンズオン •(6)コンテナオーケストレーションハンズオン コンテナオーケストレーション(OpenShift) Web サーバー API サーバー DB サーバー Gitサーバー Push Deploy PC ベースになる 技術「コンテナ」
7 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナの基本的な 概念がわかる 本Dojoのゴール
8 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 本日のアジェンダ 1 .コンテナ基礎 2 .podman/Docker基礎 3 .Dockerfile 4 .Docker Compose 5 .デモ 6 .コンテナオーケストレーション基礎(予習)
9 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 本日のアジェンダ 1 .コンテナ基礎 2 .Podman/Docker基礎 3 .Dockerfile 4 .Docker Compose 5 .デモ 6 .コンテナオーケストレーション基礎(予習)
10 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナ基礎 コンピュータの仮想化の方式の一つで、稼働中の オペレーティングシステム(OS)の一部を分離し て他と隔離された専用のエリアを用意し、その上 でソフトウェアを動作させる方式をコンテナ型仮 想化という。隔離された領域のことをコンテナと いう。 出典:IT 用語辞典 e-Words
11 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナ基礎 コンテナがないとき(物理マシン) ハードウェア OS ミドルウェア ライブラリ アプリ アプリ アプリ サーバー
12 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナ基礎 コンテナがないとき(仮想マシン) ハードウェア OS ハイパーバイザー ゲストOS ミドルウェア ライブラリ アプリ ゲストOS ミドルウェア ライブラリ アプリ ゲストOS ミドルウェア ライブラリ アプリ リソース 効率 起動の 遅さ 一貫性 管理の 複雑さ サーバー仮想化
13 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナ基礎 コンテナがあるとき ハードウェア OS コンテナエンジン ミドルウェア ライブラリ アプリ ミドルウェア ライブラリ アプリ ミドルウェア ライブラリ アプリ 軽量化 高速 起動 一貫性 管理の 簡素化 コンテナ化
14 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 本日のアジェンダ 1 .コンテナ基礎 2 .podman/Docker基礎 3 .Dockerfile 4 .Docker Compose 5 .デモ 6 .コンテナオーケストレーション基礎(予習)
15 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker/podman基礎 Docker(元dotCloud社) ・ソロモン・ハイクスらが開発 ・2013年にOSSで公開 ・旧来のコンテナ技術を よりわかりやすく ・コンテナライフサイクル (Build、Share、Run) 引用:https://www.docker.com/ja-jp/
16 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker/podman基礎 podman ・ダニエル・ウォルシュらが開発 ・2018年に誕生 ・Dockerの欠点を改善 ・Dockerとの互換姓 引用:https://podman.io/
17 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker/podman基礎 Dockerfile Dockerイメージ コンテナ レジストリ 「Build、Share、Run」 Build Share ダウンロード Run
18 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker/podman基礎 コマンドで表現(podman) Dockerfile Dockerイメージ コンテナ レジストリ podman build podman push podman pull podman start ※pull + start = run
19 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 本日のアジェンダ 1 .コンテナ基礎 2 .podman /Docker基礎 3 .Dockerfile 4 .Docker Compose 5 .デモ 6 .コンテナオーケストレーション基礎(予習)
20 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker/podman基礎(再掲) コマンドで表現(podman) Dockerfile Dockerイメージ コンテナ レジストリ podman build podman push podman pull podman start ※pull + start = run
21 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Dockerfile Dockerコンテナイ メージを作成するた めの設計図や手順書 として機能するテキ ストファイル 例)index.htmlにアクセ スすると「Hello from Dockerfile」と表示する Apacheサーバー # This is a commant line FROM rhel9:latest MAINTAINER Noriaki Murata <
[email protected]
> LABEL description="A custom Apache container image" RUN yum install -y httpd && ¥ yum clean all ADD training.repo /etc/yum.repo.d/training.repo RUN echo "Hello from Dockerfile" > /var/www/html/index.html EXPOSE 80 ENTRYPOINT ["httpd","-D","FOREGROUND"]
22 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Dockerfile 基本的な考え方 1.コンテナイメージのビルドプロセスを自動化 2.再現性を確保するために使用 3.アプリケーションの依存関係やビルド手順を 明確に定義
23 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Dockerfile ちょっとやってみよう #Dockerイメージ作成 $ podman build –t localhost/podmansample . # Dockerイメージ作成確認 $ podman images Dockerfile Dockerイメージ podman build
24 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Dockerfile ちょっとやってみよう # 作成したイメージでコンテナ作成して起動(※イメージはローカルにあるので、今回はpullはない) $ podman run -d --name hellopodman -p 8080:80 podmansample:latest podman pull podman start ※pull + start = run
25 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Dockerfile ちょっとやってみよう (システム構成図) podmanコンテナ 8080ポート Apacheサーバー 80ポート ブラウザ /var/www/html/index.html
26 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 本日のアジェンダ 1 .コンテナ基礎 2 .podman /Docker基礎 3 .Dockerfile 4 .Docker Compose 5 .デモ 6 .コンテナオーケストレーション基礎(予習)
27 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker Compose 複数のコンテナを使用するアプリケーションを定義し 実行するためのツール
28 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker Compose Web3層アプリケーションを表現してみる Ngnix Node.js MySQL 8080 ポート 80 ポート 3306 ポート 3000 ポート data 例えば・・・ network host1 host2 host3 /home/hoge/data 3306 ポート
29 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker Compose podmanコマンドで実施 #network作成 $ podman network create --subnet=192.168.100.0/24 --gateway=192.168.100.254 test_network1 # host1起動 $ podman run -d --name host1 --net test_network1 -p 8080:80 ngnix:latest # host2起動 $ podman run -d --name host2 --net test_network1 node:latest # host3起動 $ podman run -d --name host3 --net test_network1 -e MYSQL_USER=mysql -e MYSQL_PASSWORD=password –e ¥ -e MYSQL_DATABASE=my_database MYSQL_ROOT_PASSWORD=password ¥ -v /home/hoge/data/:/var/lib/mysql mysql:latest コマンド 複雑 標準化 デプロイ 効率化・自動化 マイクロサービス アーキテクチャの 台頭 DevOps 促進
30 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker Compose Docker composeコマンドで実施 version: '3' services: host1: image: nginx ports: - "8080:80" networks: - test_network1 host2: image: node environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: my_database MYSQL_USER: mysql MYSQL_PASSWORD: password networks: - test_network1 #host1, host2, host3起動 $ podman-compose up -d host3: image: mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: example networks: - test_network1 networks: test_network1: driver: bridge ipam: config: - subnet: 192.168.100.0/24 gateway: 192.168.100.254 ※事前にdocker-compose.ymlファイル準備
31 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation Docker Compose メリット 1.複数コンテナの定義 2.環境の一貫性 3.簡単な起動と停止 4.ネットワーキングの自動化 5.ボリュームの管理
32 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 本日のアジェンダ 1 .コンテナ基礎 2 .podman /Docker基礎 3 .Dockerfile 4 .Docker Compose 5 .デモ 6 .コンテナオーケストレーション基礎(予習)
33 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation デモ Web3層アプリケーションをコンテナで表現してみた
34 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation デモ環境構成図 ハードウェア OS(Windows11) コンテナエンジン(Podman) Nginx Axios React MySQL2 Express Node.js MySQL Node.js CORS コンテナ1 (Webサーバー) コンテナ2 (APIサーバー) コンテナ3 (DBサーバー)
35 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation デモシステム構成図 Nginx Node.js MySQL 8080ポート 80ポート 3306ポート 8000ポート data network Web サーバー API サーバー DB サーバー Local Directory 3306ポート 8000ポート ①データ取得リクエスト ②データ取得リクエスト ③DBアクセス ④DBデータ返却 ⑤レスポンス(データ)送信 ⑥レスポンス(データ)表示
36 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 本日のアジェンダ 1 .コンテナ基礎 2 .podman /Docker基礎 3 .Dockerfile 4 .Docker Compose 5 .デモ 6 .コンテナオーケストレーション基礎(予習)
37 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナオーケストレーション基礎(予習) デプロイやスケーリングを自動化したり、コン テナ化されたアプリケーションを管理したりす るための、オープンソースのシステムです。 出典:kubernates公式HP
38 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナオーケストレーション基礎(予習) コンテナオーケストレーションしないとき コンテナ 動いてな い? スペック 足りてる? このコンテナ、 こっちのサー バーで動かして いい?
39 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナオーケストレーションするとき コンテナ 死活確認 ロード バランシング コンテナ スケジューリング コンテナオーケストレーション コンテナオーケストレーション基礎(予習)
40 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation つまり・・・以下のような機能を提供 1.構成ファイルの定義 2.コンテナのスケジューリング 3.リソース管理 4.ネットワーキング 5.スケーリング 6.ヘルスチェックとセルフヒーリング コンテナオーケストレーション基礎(予習)
41 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナオーケストレーションツールいろいろ 機能/ツール名 Kubernetes OpenShift Docker Swarm デプロイ方法 手動/自動化可能 Operatorによる自動化 主に手動 拡張性 高い 高い 中程度 セキュリティ RBAC、ネットワークポリシー 強化されたセキュリティ機能 基本的な機能のみ ユーザーインターフェース ダッシュボード(オプション) Webコンソール Docker CLI CI/CD連携 Jenkins、GitLabなど外部ツー ル 組み込みのCI/CD機能 サードパーティツールが必要 マルチクラウド対応 対応 対応 限定的 コンテナオーケストレーション基礎(予習)
42 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation 次回予告!!
日本アイー・ビー・エム株式会社 テクノロジー事業本部 カスタマーサクセス 村田 憲昭 いまからでも遅くない!コンテナで Webアプリを動かしてみよう入門 (3-2)コンテナハンズオン 2025年1月27日 https://ibm-developer.connpass.com/event/341014/
44 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation まとめ 1 .コンテナ基礎 2 .Docker/podman基礎 3 .Dockerfile 4 .Docker Compose 5 .デモ 6 .コンテナオーケストレーション基礎(予習) こんなサイトも参考に・・・ ▼Kubernetes公式 https://kubernetes.io/ja/ ▼OpenShift公式 https://www.redhat.com/ja/technologies/cloud- computing/openshift
45 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation コンテナの基本的な 概念がわかる 本Dojoのゴール(ふりかえり)
46 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation いろいろTry&Errorしながら 試してみてください。 ありがとうございました
47 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation アンケートのご協 力よろしくおねが いいたします! https://app.sli.do/event/w5ARpQ 5uNABGLAcsvQfTCL
48 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation
49 Customer Success, IBM Technology, Japan / © 2024 IBM
Corporation QA タイム
ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目的のみ で提供されており、いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またIBM製品やサービスがお客様に適用ある特定の法令に適 合することを保証するものでもありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努めておりますが、「現状のまま」提供され、明 示または黙示にかかわらず、商業性、特定の目的への適合性、非侵害性を含め、いかなる保証も伴わないものとします。本講演資料またはその他の資料の使用によって、 あるいはその他の関連によって、いかなる損害が生じた場合も、IBMは責任を負わないものとします。 本講演資料で言及されるIBM製品、プログラム、またはサービス は、IBMがビジネスを行っているすべての国・地域でご提供可能なわけではありません。本講演資料で言及される将来の展望(製品リリース日付や製品機能を含む)は、 市場機会またはその他の要因に基づいてIBM独自の決定権をもっていつでも変更できるものとし、将来の製品または機能が使用可能になること、もしくは特定の結果を 確約することを意図するものではありません。本講演資料は、言及される IBM製品またはサービスに適用ある契約条件を変更するものでも、追加の表明または保証を意
図するものでもありません。 本講演資料に含まれている内容は、参加者の活動によって特定の結果が生じると述べる、または暗示することを意図したものでも、またそのような結果を生むものでも ありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループット やパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考慮事 項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。記述 されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたものです。実際の環 境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。 • IBM、IBM ロゴ、ibm.com、IBM Cloud Pak® は、 世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス 名等は、それぞれIBMまたは各社の商標である場合があります。現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。 • DockerはDocker, Inc.の米国およびその他の国における商標です。 • Kubernetesは、The Linux Foundationの米国及びその他の国における登録商標または商標です。 • OpenShiftは米国およびその他の国におけるRed Hat, Inc.の登録商標です。 • LinkedInは、サービスにおけるすべての知的所有権を保有しており、これらの商標はLinkedInの登録商標です。 • Red Hat、Red Hat Enterprise Linux、Red Hat ロゴ、OpenShift は、米国およびその他の国における Red Hat, Inc.またはその子会社の商標または登録商標です。 • podmanは、Apache License 2.0ライセンスに準拠します。https://www.apache.org/licenses/LICENSE-2.0