Slide 1

Slide 1 text

Docker 勉強会 2024/03/01 13:00~15:00 @ 名古屋文理大学 N101 山田 啓徒

Slide 2

Slide 2 text

Dockerとは コンテナ型の仮想環境を作成、配布、実行するための業界標準プラットフォーム

Slide 3

Slide 3 text

Dockerとは 出典:https://knowledge.sakura.ad.jp/13265/ 各仮想マシンには、OSの完全なコピーが 含まれているため、数十GBを占有。 起動や動作が遅い。 コンテナは、ホストマシンのカーネルを利用し、 プロセスやユーザなどを隔離することで、 あたかも別のマシンが動いているかのように 動かすことができる。 軽量で高速に起動、停止などが可能。 メリット① 仮想マシンよりも軽量・高速

Slide 4

Slide 4 text

Dockerとは Dockerが 場合 ない 〇〇開発プロジェクトのための環境構築手順書 環境構築作業が各自のPC環境に左右されて一筋縄ではいかないことが多い Macユーザー Macユーザー Macユーザー Windowsユーザー 各自環境構築しといてね Windowsの場合は手順違うやん 何かと干渉してエラー出る 同じようにやったのに何故かできない ™ △△インストー’ ™ ✕✕インストー’ ™ 環境変数追加 ︙ メリット② チームでの環境構築が容易

Slide 5

Slide 5 text

Dockerとは Dockerが 場合 ある Macユーザー Macユーザー Macユーザー Windowsユーザー これでコンテナ起動しといてね できた できた できた } 必要なソフトウェアのインストールや 環境設定をコード化したファイル Infrastracture as Code(IaC) Dockerfile docker-compose.yml 環境構築作業をコード化したファイルを共有することで、どこでも誰でも同じ環境が作れる メリット② チームでの環境構築が容易

Slide 6

Slide 6 text

Dockerとは Ä PythonやNode.jsなどの環境構築でもコンテナごとに異なるバージョンの環境を作れるので、
 pyenvやnvmなどのバージョン管理ツールを使う必要がなくなる™ Ä コンテナは簡単に起動・削除できるので、従来のようにホストOS上にパッケージをインストールして
 環境構築する場合と比べて、使わなくなったパッケージが溜まっていくことが無い™ Ä 環境構築に失敗した場合も、コンテナを削除して一からやり直せる™ Ä GitHubのリポジトリによっては、コードに付随して実行環境がDockerで提供されていることがある™ Ä 〔技術名〕Docker で検索すると、その技術の実行環境をDockerで環境構築する方法が大体ヒットする™ Ä 環境構築のスキルがWindowsやMacに依存しなくなる。(Dockerに依存する) pyenv nvm メリット③ 個人での環境構築でも便利

Slide 7

Slide 7 text

Dockerとは 新しいコトを覚えるのが大変 仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん ISBN-13 ‏ : ‎ 978-4839972745 y コンテl y イメー– y サービw y ネットワーe y 環境変• y バインドマウンp y ボリュームマウンp y ポートフォワーv y Dockerfileの書きr y docker-compose.ymlの書き方 ︙ デメリット 学習コストが高い

Slide 8

Slide 8 text

Dockerの環境構築(Windows編) Step1: WSL2のインストール WSL(Windows Subsystem for Linux)とは:WindowsでUNIXコマンドを使用できるようにするためのWindows標準機能 PowerShellを管理者として実行し、 wsl --install を実行 再起動

Slide 9

Slide 9 text

Dockerの環境構築(Windows編) Step2:Ubuntuのセットアップ WSLをインストールすると、標準ディストリビューションとしてUbuntuがインストールされるので、 Ubuntuのユーザ名とパスワードを設定する ※この画面が自動的に起動しない場合は、スタートメニューからUbuntuを起動

Slide 10

Slide 10 text

Dockerの環境構築(Windows編) Step3:WSLのバージョン確認 PowerShellで、 wsl -l -v と実行しVERSIONが2になっていることを確認する Dockerは仮想化のためのバックエンドとしてWSL Version 2を使用する

Slide 11

Slide 11 text

Dockerの環境構築(Windows編) Step4:Docker Desktopのインストール 上記リンクから、Windows用のインストーラをダウンロードし、実行 赤枠の部分に必ずチェックを入れてOKを押下 インストールが始まる https://www.docker.com/products/docker-desktop/

Slide 12

Slide 12 text

Dockerの環境構築(Mac編) Docker Desktopのインストール 上記リンクから、Mac用のインストーラをダウンロードし、実行 Docker.appを起動 https://www.docker.com/products/docker-desktop/

Slide 13

Slide 13 text

Dockerの環境構築(Mac編) Docker Desktopのインストール

Slide 14

Slide 14 text

Dockerの環境構築(Mac編) Docker Desktopのインストール osascript(OS Xアプリケーションを操作するスクリプトを実行するコマンド)へのアクセスを許可

Slide 15

Slide 15 text

Dockerの環境構築(Windows・Mac共通)

Slide 16

Slide 16 text

Dockerの環境構築(Windows・Mac共通)

Slide 17

Slide 17 text

Dockerの環境構築(Windows・Mac共通) or

Slide 18

Slide 18 text

Dockerの環境構築(Windows・Mac共通) 完了

Slide 19

Slide 19 text

Dockerの仕組み コンテナ 簡単に生成・破棄される Dockerの原則の1つ:コンテナはエフェメラル(短命;ephemeral)であるべき 設計図 イメージ Docker 例:オブジェクト指向 コンテナとイメージの関係 クラス = = インスタンス https://docs.docker.jp/engine/articles/dockerfile_best-practice.html

Slide 20

Slide 20 text

Dockerの仕組み Docker 追加のメソッド 例:オブジェクト指向 継承 イメージの作成 ベースにするクラス 新しいイメージ Docker Hub:https://hub.docker.com/ 新しいクラス = ベースにするイメージ(Docker HubからPull) Dockerfile = イメージ設計を記述するファイル 追加のパッケージインストールや設定

Slide 21

Slide 21 text

Dockerの仕組み マウント データの永続化 コンテナは簡単に破棄されるため、 コンテナ内にデータを保存すべきでない ホストOSの管理する領域 コンテナ Docker Engineの管理する領域 マウント = 共有ドライブ化 バインドマウント 方法 方法 ① ② ホストOSから直接ファイルの内容を編集できる ホストOSから直接ファイルの内容を編集できない コンテナ経由でアクセスする必要がある ボリュームマウント アプリのソースコード・DBなど アプリのソースコード・DBなど アプリのソースコード・DBなど

Slide 22

Slide 22 text

ハンズオン Pygame環境の作成 docker-compose.ymlの書き方 LAMP環境の作成 Jupyter Notebook環境の作成 keypoint:複数コンテナの連携 keypoint:Dockerfileの書き方 keypoint:X Window Systemを使用したGUIの表示

Slide 23

Slide 23 text

ハンズオン サンプルコード GitHubリポジトリ Windows:”\\wsl.localhost\Ubuntu”(WSLのBashで見た時:”/”)配下 おすすめ:”\\wsl.localhost\Ubuntu\home\[ユーザ名]”(WSLのBashで見た時:”/home/[ユーザ名]”) このディレクトリ配下は、WSL用のファイルシステムがExt4形式の仮想ディスク上にあり、 ファイルをここに配置するとWindowsのNTFSとLinuxのExt4間での変換が不要で、速度が向上します。 クローン先の場所 Mac:どこでもOK https://github.com/penguinspizza/docker_study_2024 git clone https://github.com/penguinspizza/docker_study_2024.git

Slide 24

Slide 24 text

Visual Studio Codeのおすすめ拡張機能 Remote Development(Extension Pack) Visual Studio Codeから直接WSL・コンテナ内のファイルを編集できる https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack

Slide 25

Slide 25 text

Dockerfileの書き方 WORKDIR /usr/src/app 作業ディレクトリの設定 ディレクトリ COPY requirements.txt ./ ローカルファイルをコンテナの中にコピー コピー元 コピー先 FROM python:3.9-slim ベースイメージの指定 イメージ名 タグ

Slide 26

Slide 26 text

Dockerfileの書き方 EXPOSE 8888 ポートの公開 ポート番号 CMD [ , ] "apache2" "-DFOREGROUND" イメージ起動時に実行するコマンド コマンド オプション イメージ作成時に実行するコマンド コマンドが複数ある場合は && で分割する RUN set -x && \ apt-get update && \ apt-get install -y x11-apps

Slide 27

Slide 27 text

docker-compose.ymlの書き方 サンプルコードのコメントを参照してください

Slide 28

Slide 28 text

よく使うコマンド docker-compose up -d コンテナの起動(初回起動時のみイメージのビルドを行ってくれる) docker-compose ps 起動中のコンテナ一覧を表示 docker container exec example_container bash -it 指定したコンテナに入って作業する コンテナ名 docker-compose down コンテナ停止・削除 docker-compose up -d --build コンテナの起動(初回起動以降Dockerfileを編集し、再度イメージのビルドも行いたいとき)

Slide 29

Slide 29 text

X Window System https://sourceforge.net/projects/vcxsrv/ VcXsrvのインストール XQuartzのインストール https://www.xquartz.org/ Windowsの場合 Macの場合 X Window Systemとは リモートマシンのGUIをローカルマシンで表示するツール 今回は「リモートマシン=Dockerコンテナ」として使用する

Slide 30

Slide 30 text

実践 好きな環境を作ってみよう

Slide 31

Slide 31 text

補足 参考URL:https://lazesoftware.com/ja/blog/230225/ WindowsでDockerイメージやコンテナを削除しても、 空き領域が解放されない問題の解決方法 参考URL:https://qiita.com/siruku6/items/c91a40d460095013540d 上記ページのコマンドが使用できない時の解決方法

Slide 32

Slide 32 text

参考資料 https://www.docker.com/resources/what-container/ What is a Container? | Docker Docker入門(第一回)~Dockerとは何か、何が良いのか~ | さくらのナレッジ https://knowledge.sakura.ad.jp/13265/ Dockerfile のベストプラクティス — Docker-docs-ja 1.9.0b ドキュメント https://docs.docker.jp/engine/articles/dockerfile_best-practice.html Docker ドキュメント日本語化プロジェクト — Docker-docs-ja 24.0 ドキュメント https://docs.docker.jp/index.html