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
docker_study_2024
Search
Keito Yamada
March 01, 2024
350
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
docker_study_2024
Keito Yamada
March 01, 2024
More Decks by Keito Yamada
See All by Keito Yamada
r5_senior_thesis
kitymd
0
43
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
590
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Documentation Writing (for coders)
carmenintech
77
5.4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
Amusing Abliteration
ianozsvald
1
200
A Soul's Torment
seathinner
6
2.9k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Transcript
Docker 勉強会 2024/03/01 13:00~15:00 @ 名古屋文理大学 N101 山田 啓徒
Dockerとは コンテナ型の仮想環境を作成、配布、実行するための業界標準プラットフォーム
Dockerとは 出典:https://knowledge.sakura.ad.jp/13265/ 各仮想マシンには、OSの完全なコピーが 含まれているため、数十GBを占有。 起動や動作が遅い。 コンテナは、ホストマシンのカーネルを利用し、 プロセスやユーザなどを隔離することで、 あたかも別のマシンが動いているかのように 動かすことができる。 軽量で高速に起動、停止などが可能。
メリット① 仮想マシンよりも軽量・高速
Dockerとは Dockerが 場合 ない 〇〇開発プロジェクトのための環境構築手順書 環境構築作業が各自のPC環境に左右されて一筋縄ではいかないことが多い Macユーザー Macユーザー Macユーザー Windowsユーザー
各自環境構築しといてね Windowsの場合は手順違うやん 何かと干渉してエラー出る 同じようにやったのに何故かできない △△インストー ✕✕インストー 環境変数追加 ︙ メリット② チームでの環境構築が容易
Dockerとは Dockerが 場合 ある Macユーザー Macユーザー Macユーザー Windowsユーザー これでコンテナ起動しといてね できた
できた できた } 必要なソフトウェアのインストールや 環境設定をコード化したファイル Infrastracture as Code(IaC) Dockerfile docker-compose.yml 環境構築作業をコード化したファイルを共有することで、どこでも誰でも同じ環境が作れる メリット② チームでの環境構築が容易
Dockerとは Ä PythonやNode.jsなどの環境構築でもコンテナごとに異なるバージョンの環境を作れるので、 pyenvやnvmなどのバージョン管理ツールを使う必要がなくなる Ä コンテナは簡単に起動・削除できるので、従来のようにホストOS上にパッケージをインストールして 環境構築する場合と比べて、使わなくなったパッケージが溜まっていくことが無い Ä 環境構築に失敗した場合も、コンテナを削除して一からやり直せる Ä
GitHubのリポジトリによっては、コードに付随して実行環境がDockerで提供されていることがある Ä 〔技術名〕Docker で検索すると、その技術の実行環境をDockerで環境構築する方法が大体ヒットする Ä 環境構築のスキルがWindowsやMacに依存しなくなる。(Dockerに依存する) pyenv nvm メリット③ 個人での環境構築でも便利
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の書き方 ︙ デメリット 学習コストが高い
Dockerの環境構築(Windows編) Step1: WSL2のインストール WSL(Windows Subsystem for Linux)とは:WindowsでUNIXコマンドを使用できるようにするためのWindows標準機能 PowerShellを管理者として実行し、 wsl --install
を実行 再起動
Dockerの環境構築(Windows編) Step2:Ubuntuのセットアップ WSLをインストールすると、標準ディストリビューションとしてUbuntuがインストールされるので、 Ubuntuのユーザ名とパスワードを設定する ※この画面が自動的に起動しない場合は、スタートメニューからUbuntuを起動
Dockerの環境構築(Windows編) Step3:WSLのバージョン確認 PowerShellで、 wsl -l -v と実行しVERSIONが2になっていることを確認する Dockerは仮想化のためのバックエンドとしてWSL Version 2を使用する
Dockerの環境構築(Windows編) Step4:Docker Desktopのインストール 上記リンクから、Windows用のインストーラをダウンロードし、実行 赤枠の部分に必ずチェックを入れてOKを押下 インストールが始まる https://www.docker.com/products/docker-desktop/
Dockerの環境構築(Mac編) Docker Desktopのインストール 上記リンクから、Mac用のインストーラをダウンロードし、実行 Docker.appを起動 https://www.docker.com/products/docker-desktop/
Dockerの環境構築(Mac編) Docker Desktopのインストール
Dockerの環境構築(Mac編) Docker Desktopのインストール osascript(OS Xアプリケーションを操作するスクリプトを実行するコマンド)へのアクセスを許可
Dockerの環境構築(Windows・Mac共通)
Dockerの環境構築(Windows・Mac共通)
Dockerの環境構築(Windows・Mac共通) or
Dockerの環境構築(Windows・Mac共通) 完了
Dockerの仕組み コンテナ 簡単に生成・破棄される Dockerの原則の1つ:コンテナはエフェメラル(短命;ephemeral)であるべき 設計図 イメージ Docker 例:オブジェクト指向 コンテナとイメージの関係 クラス
= = インスタンス https://docs.docker.jp/engine/articles/dockerfile_best-practice.html
Dockerの仕組み Docker 追加のメソッド 例:オブジェクト指向 継承 イメージの作成 ベースにするクラス 新しいイメージ Docker Hub:https://hub.docker.com/
新しいクラス = ベースにするイメージ(Docker HubからPull) Dockerfile = イメージ設計を記述するファイル 追加のパッケージインストールや設定
Dockerの仕組み マウント データの永続化 コンテナは簡単に破棄されるため、 コンテナ内にデータを保存すべきでない ホストOSの管理する領域 コンテナ Docker Engineの管理する領域 マウント
= 共有ドライブ化 バインドマウント 方法 方法 ① ② ホストOSから直接ファイルの内容を編集できる ホストOSから直接ファイルの内容を編集できない コンテナ経由でアクセスする必要がある ボリュームマウント アプリのソースコード・DBなど アプリのソースコード・DBなど アプリのソースコード・DBなど
ハンズオン Pygame環境の作成 docker-compose.ymlの書き方 LAMP環境の作成 Jupyter Notebook環境の作成 keypoint:複数コンテナの連携 keypoint:Dockerfileの書き方 keypoint:X Window
Systemを使用したGUIの表示
ハンズオン サンプルコード 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
Visual Studio Codeのおすすめ拡張機能 Remote Development(Extension Pack) Visual Studio Codeから直接WSL・コンテナ内のファイルを編集できる https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
Dockerfileの書き方 WORKDIR /usr/src/app 作業ディレクトリの設定 ディレクトリ COPY requirements.txt ./ ローカルファイルをコンテナの中にコピー コピー元
コピー先 FROM python:3.9-slim ベースイメージの指定 イメージ名 タグ
Dockerfileの書き方 EXPOSE 8888 ポートの公開 ポート番号 CMD [ , ] "apache2"
"-DFOREGROUND" イメージ起動時に実行するコマンド コマンド オプション イメージ作成時に実行するコマンド コマンドが複数ある場合は && で分割する RUN set -x && \ apt-get update && \ apt-get install -y x11-apps
docker-compose.ymlの書き方 サンプルコードのコメントを参照してください
よく使うコマンド docker-compose up -d コンテナの起動(初回起動時のみイメージのビルドを行ってくれる) docker-compose ps 起動中のコンテナ一覧を表示 docker container
exec example_container bash -it 指定したコンテナに入って作業する コンテナ名 docker-compose down コンテナ停止・削除 docker-compose up -d --build コンテナの起動(初回起動以降Dockerfileを編集し、再度イメージのビルドも行いたいとき)
X Window System https://sourceforge.net/projects/vcxsrv/ VcXsrvのインストール XQuartzのインストール https://www.xquartz.org/ Windowsの場合 Macの場合 X
Window Systemとは リモートマシンのGUIをローカルマシンで表示するツール 今回は「リモートマシン=Dockerコンテナ」として使用する
実践 好きな環境を作ってみよう
補足 参考URL:https://lazesoftware.com/ja/blog/230225/ WindowsでDockerイメージやコンテナを削除しても、 空き領域が解放されない問題の解決方法 参考URL:https://qiita.com/siruku6/items/c91a40d460095013540d 上記ページのコマンドが使用できない時の解決方法
参考資料 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