Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
docker_study_2024
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Keito Yamada
March 01, 2024
370
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
52
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
WENDY [Excerpt]
tessaabrams
14
39k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Building the Perfect Custom Keyboard
takai
2
870
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.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