Slide 1

Slide 1 text

【初心者/ハンズオン】 Dockerコンテナの基礎知識 2023/01/19 (木) まだの方は以下を進めてください! 1. Dockerのインストール https://docs.docker.com/get-docker/ 2. Dockerhubのアカウント作成 https://hub.docker.com/ https://github.com/hankehly/docker-core-knowledge-workshop (サンプルコード)

Slide 2

Slide 2 text

よろしくお願いします ● Hank Ehly(名:ハンク 姓:イーリー) ● ENECHANGE株式会社(エンジニア) ● hankehly.com ● qiita.com/hankehly ● github.com/hankehly ● linkedin.com/in/hankehly ● twitter.com/hankehly ● connpass.com/user/hankehly

Slide 3

Slide 3 text

アジェンダ 1. コンテナ技術の概要 2. コンテナのメリット 3. ハンズオン課題(コードエディターのご準備お願いします)

Slide 4

Slide 4 text

1. コンテナ技術の概要

Slide 5

Slide 5 text

コンテナ技術の概要 > VM(バーチャルマシン)の仕組み ハードウェア ハイパーバイザー OS アプリケーション 仮想マシンを管理する ソフトウェア VM(バーチャルマシン) 物理的なサーバー 仮想マシン 1 仮想マシン n 1仮想環境に複数のアプリケーション OS アプリケーション

Slide 6

Slide 6 text

コンテナ技術の概要 > Dockerの仕組み ハードウェア ホストOS Docker Engine (バックグラウンドプロセス) Dockerコンテナ コンテナ1 コンテナ2 コンテナn 1コンテナに1つのプロセス

Slide 7

Slide 7 text

コンテナ技術の概要 > 重要な用語 コンテナイメージは、ソースコードと、そのソースコードを実行するために 必要なシステムライブラリーや依存ファイルすべてを同梱したファイル $ docker run my_app $ docker build -t my_app . コンテナは、コンテナイメージの実行可能なインスタンス Dockerは、コンテナイメージの管理と実行を行うツール

Slide 8

Slide 8 text

コンテナ技術の概要 > 開発の流れ $ docker build -t my_app . $ docker push my_app $ docker run my_app Step 1: コンテナイメージを作る Step 3: コンテナイメージをPushする Step 2: コンテナを起動する

Slide 9

Slide 9 text

2. コンテナのメリット

Slide 10

Slide 10 text

コンテナのメリット > コンテナを使わないAさん v1.21 v10 共有のシステムソフトウェア Ruby v2.7.6 PostgreSQLバージョンを上げた いけど、他のアプリが影響を受け ちゃうよな… ポイント: ● バージョン管理が厄介な時がある ● 変更のリスク

Slide 11

Slide 11 text

コンテナのメリット > コンテナを使うBさん v1.21 コンテナ v14 コンテナ v7.0.4 コンテナ v1.14 コンテナ ポイント: ● バージョンの共存が可能 ● アプリケーションの分離 v10 コンテナ v5.2.8 コンテナ 案件AでPostgreSQL 14 案件BでPostgreSQL 10 … Aが異常終了してもBへの影響なし アプリケーション アプリケーション

Slide 12

Slide 12 text

コンテナのメリット > コンテナは可搬性(portability)がある FROM ruby:3.2.0 WORKDIR /app COPY hello_world.rb . CMD ruby hello_world.rb $ docker build -t my_container . $ docker push my_container push $ docker run my_container Hello world pull (コンテナイメージの作成)

Slide 13

Slide 13 text

● 学習コストがある ● 同じコンテナが WindowsとLinux どちらでも 動かない コンテナのメリット > メリット・デメリット ● 独立している(例: PostgreSQLバージョンを 複数同時に使える) ● dev/stg/prodの差異を少なくできる ● クラウドを変えやすくなる (AWS→GCP) ● 共有しやすい ● 再現性 メリット デメリット

Slide 14

Slide 14 text

3. ハンズオン課題 続きはVisualCodeで… https://github.com/hankehly/docker-core-knowledge-workshop