SlideShare a Scribd company logo
5
Most read
7
Most read
18
Most read
めんどうな環境構築とはおさらば!
Dockerの概要と使い方
Marketing Solution Div. Service Design Unit Drone PF Team
森 祐子
©2023 ARISE analytics Reserved.
2023/12/01
Agenda
©2023 ARISE analytics Reserved. 1
1.背景と目的
2.Dockerとは
3.Dockerの使い方
4.超便利!Docker+VSCode
5.まとめ
1.背景と目的
©2023 ARISE analytics Reserved. 2
背景
⚫ 変化の激しいビジネスニーズにこた
えるにはスピーディかつ効率的に開
発を進めることが重要
⚫ 開発言語やライブラリが多様にあり、
開発環境の構築に時間がかかる
目的
⚫ Dockerによる環境構築の利点
を共有し、いかに便利か知ってほ
しい
本資料ではスピーディかつ効率的に開発環境を構築できるDockerについて説明し、
Dockerがどういう技術で何が便利なのかを共有することを目的としている。
Agenda
©2023 ARISE analytics Reserved. 3
1.背景と目的
2.Dockerとは
3.Dockerの使い方
4.超便利!Docker+VSCode
5.まとめ
2.Dockerとは
①環境構築の苦労話・・・
©2023 ARISE analytics Reserved. 4
かつてはライブラリのバージョンが案件ごとに異なっていたり、様々なソフトウェアを導入する必
要があり開発環境の構築に非常に時間がかかった。
コンテナを使うことにより、環境構築をスムーズにかつローカルPCの環境に依存することなく開
発を進めることができる。
前職での苦労
案件ごとにNodeのバージョン
切り替えるのめんどくさい・・・
インストールしないといけないも
のが多すぎてめんどくさい・・・
他の人は順調なのに、自分の
環境だけうまくいかない・・・
コンテナ技術を使えば
コンテナを使えばバージョンを
意識しなくていい!
PCに直接インストールしないの
で環境を汚さずに済む!
同じ環境を開発メンバー間で
共有できる!
2.Dockerとは
②Dockerの概要
©2023 ARISE analytics Reserved. 5
Dockerとはコンテナを使用できる仕組みのことである。
Linuxを前提としているため、Windows/MacでDockerを使う場合はDocker
DesktopのようなDockerの実行に必要なLinuxを含むパッケージを導入する。
ホストOS
Python MySQL Apache
コンテナ
コンテナはプログラムやシステムを隔離するもので、イメージファイ
ルから作成される。
イメージファイルはコンテナのテンプレートファイルであり、簡単に連
携できる。
2.Dockerとは
③Dockerを使うと何がうれしいの?
©2023 ARISE analytics Reserved. 6
Dockerを使うことでプログラム同士の干渉を防げる/IaCを実現できる/可搬性がある
というメリットがあるため、開発環境をメンバー間で簡単に共有でき、スムーズに構築するこ
とができる。
プログラムの干渉を防ぐ IaCを実現できる 可搬性がある
コンテナで隔離された環境下でプロ
グラムやソフトウェアをインストールす
るので、互いの干渉による不具合
を防げる。
どんなコンテナを作るか、といった手
順をまとめたイメージファイルを連携
するため、それを元にコンテナを作る
だけで環境構築が完了する。
コンテナを定義するイメージファイル
は連携可能なため、異なるマシンで
も同じ環境を簡単に再現することが
できる。
Agenda
©2023 ARISE analytics Reserved. 7
1.背景と目的
2.Dockerとは
3.Dockerの使い方
4.超便利!Docker+VSCode
5.まとめ
3.Dockerの使い方
①Dockerコマンド(1/2)
©2023 ARISE analytics Reserved. 8
他にもバインドマウントを使ってローカルPCのファイルをDockerコンテナにマウントすることができる
DockerはDockerコマンドを使ってコンテナの作成/起動/停止/削除といった操作を行
うことができる。例として、MySQLのイメージを使ってコンテナの作成、起動を実施するコマン
ドは以下のようになる。
① ②
コマンド解説
① -v docker_volume:/var/lib/mysql
コンテナを削除するとデータも消えてしまうので、コンテナ内のデータをDockerが管理するコンテナ用の保存領域にマウントし
ている(ボリュームマウント)
② -dit
d: バックグラウンド実行。指定しないと起動したコンテナがコンソールの制御を握ってしまい、実行中はコマンドを打てない。
i: コンテナにキーボードをつなぐ。コンテナの中身をキーボードで操作するのに必要。
t: 特殊キーを使用可能にする。コンテナの中身をキーボードで操作するのに必要。
3.Dockerの使い方
①Dockerコマンド(2/2)
©2023 ARISE analytics Reserved. 9
Dockerコマンドでコンテナを作成後、コンテナ内でMySQLの操作が可能となっている。
Dockerのボリュームを確認するとMySQLのデータが格納されているためデータの永続化を
実現できる。
execコマンドを使い、実行中のコンテナ内で
MySQLを操作してtestテーブルを作成する
マウント先として指定したdocker_volume内
に先ほど作成したtestテーブルのデータが格納さ
れている
3.Dockerの使い方
②Dockerfile(1/2)
©2023 ARISE analytics Reserved. 10
ソフトウェアのインストールやファイルのコピーを行ったカスタムイメージを作りたい場合は
Dockerfileを使用する。
Dockerfileとはどんなイメージを作るのか設定を記述するファイルであり、イメージのビルド時
に実行したいコマンドを書いておくことができる。
image
Dockerfile コンテナ
3.Dockerの使い方
②Dockerfile(2/2)
©2023 ARISE analytics Reserved. 11
例えばDjangoが実行できるコンテナをDockerで構築したい場合はPythonが実行できる
環境下でDjangoをインストールする必要があるため、Dockerfileを使ってカスタムイメージ
を作成します。
Djangoの実行環境を整えるのに必要な手順
① pythonのイメージファイルを指定
② (任意)標準入出力に関するPythonのバッ
ファリングを無効にする
③ workspaceという名前のフォルダを作成し、そ
こを作業フォルダとして指定する
④ requirements.txtをworkspace内にコ
ピーしてpip installを実行し、Djangoをイン
ストールする
①
②
③
④
3.Dockerの使い方
④docker-compose.yml
©2023 ARISE analytics Reserved. 12
作成したいコンテナの定義値をdocker-compose.ymlに記載する。
ファイルを連携することで開発者間で同じコンテナを再現することができる。
①DBコンテナ
②Webアプリ用コンテナ
Dockerfileはコンテナの元となるイメージの設定ファイル、docker-compose.ymlはコンテナ自体
の設定ファイル
①DBコンテナ
MySQLのイメージを使ってDBコンテナを構築する。
②Webアプリ用コンテナ
カスタムイメージを使うためbuildでDockerfileの
格納場所を相対パスで指定する。
3.Dockerの使い方
③Docker Compose
©2023 ARISE analytics Reserved. 13
Docker ComposeはDocker Desktopに標準装備されている
Dockerコマンドだと設定が多くなればなるほどコマンド文が長くなってしまう上に、1度に1つ
のコンテナしか操作できないため複数のコンテナで構成するシステムを作る際に不便となる。
複数のコンテナを1つの定義ファイルでまとめて実行・停止・破棄といった管理ができる仕組
みのことをDocker Composeと呼ぶ。
• コンテナを使う仕組みそのもの
• 1度のコマンドで1つのコンテナを操作できる
• コンテナを定義するためのツール
• 1度のコマンドで複数のコンテナを操作できる
Agenda
©2023 ARISE analytics Reserved. 14
1.背景と目的
2.Dockerとは
3.Dockerの使い方
4.超便利!Docker+VSCode
5.まとめ
4.超便利!Dev Containers
①ARISEで個人的によく見る構成
©2023 ARISE analytics Reserved. 15
ARISEの開発する際のリポジトリには.devcontainerというフォルダが入っている。
これはVSCodeの拡張機能であるDev Containersを使うためのものであり、開発する上
で非常に便利なものとなっている。
.devcontainer
devcontainer.json
docker-compose.yml
Dockerfile
src
4.超便利!Docker+VSCode
②Dev Containersとは
©2023 ARISE analytics Reserved. 16
入社してはじめてこれを使った時は感動して、今まで知らなかったことを後悔しました・・・
Dev ContainsersとはVSCodeとコンテナを接続する拡張機能である。
コンテナで実行環境を揃えるだけでなく、VSCodeで使用するターミナルの設定や使用する
拡張機能の設定ができるため、開発者間でVSCodeの環境を揃えることができる。
extensionsでVSCodeの拡張機能も設定する
ことができる
4.超便利!Docker+VSCode
③Dev Containersを使ってみよう!(1/2)
©2023 ARISE analytics Reserved. 17
Dev Containersを使ってDjango+PostgreSQLの開発環境を構築した場合、プログ
ラムやライブラリのインストールを実施する必要がないため従来の構築手順に比べてスムーズ
に作業が完了する。
従来の構築手順
開発環境の構築手順は以下の通り。
1. Pythonをインストール
2. pipでDjango等必要なライブラリをインストール
3. Postgresをインストール
4. VSCodeの拡張機能のインストール
Dev Containersを使うと・・・
開発環境の構築手順は以下の通り。
1. コンテナを起動する
• 環境構築で実行するコマンド/ダウンロードするも
のが多く時間がかかる
• VSCodeの拡張機能が増えまくる
• Windows/Macで手順が変わる
• Dev Containersでコンテナを起動するだけで必
要なもののインストールが完了する
• 余分なVSCodeの拡張機能を入れずに済む
• Windows/Macに依存しない※Appleシリコンは例外
©2023 ARISE analytics Reserved. 18
Dev Containersでコンテナを起動するだけでPythonやDjangoの操作が可能になって
いる。従来の構築手順に比べて簡単に環境構築が完了するほか、.devcontainerフォ
ルダを連携するだけで開発者間で環境を統一できる。
4.超便利!Docker+VSCode
③Dev Containersを使ってみよう!(2/2)
コンテナ起動前 コンテナ起動後
5.まとめ
©2023 ARISE analytics Reserved. 19
• Dockerには プログラムの干渉を防ぐ, IaCを実現できる, 可搬性がある という特徴が
ある
• VSCode+Dev Containersを使うことにより開発環境をメンバー間で簡単に共有でき、
スムーズに開発をはじめることができるようになる
Appendix – 参考資料
©2023 ARISE analytics Reserved. 20
仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん
Docker&仮想サーバー完全入門 Webクリエイター&エンジニアの作業がはかどる
開発環境構築ガイド
とりあえずDockerやDocker Composeについて知りたい!使ってみたい!って人におすすめ。
UbuntuやDjangoなど、すぐに使えるコンテナ設定ファイルの使い方や各種設定の説明なども
書かれているのも個人的に嬉しかった。
Dev Containersの話が最後のAppendixに書いてある。
Dockerがどう動いているのかといった仕組みの部分をわかりやすく解説してくれるのでとてもよかっ
た。
Dockerコマンドの解説も手厚く、マウント周りのわかりにくい部分の説明も丁寧にされていたので
これを読んでかなり理解が進んだ。
Kubernetesの解説も丁寧に書かれているのでめちゃくちゃおすすめ。
Appendix – AppleシリコンMacでDockerを使う場合
©2023 ARISE analytics Reserved. 21
DockerにはIntelアーキテクチャに対応したイメージファイルが豊富にあるが、Appleシリコン
に対応しているものは少ない。
AppleシリコンでIntelアーキテクチャ用イメージを使う方法もあるが、うまく動かなかったりパ
フォーマンスが悪いなど様々な弊害が生じる可能性がある。
ARMに対応しているのでAppleシリコンでも使用可!
ARMに対応していないのでAppleシリコンでは使用不可・・・
“platform linux/amd64 “というオプションを使えばコンテ
ナの作成は可能だが「ベストエフォートである」と言われている
Best Partner for innovation, Best Creator for the future.

More Related Content

PDF
Tech Summit 2018 【事例紹介】 自社サービスに Azure IoT Hub Device Provisioning Serviceを適用してみた
PPTX
Cognitive Search: Announcing the smartest enterprise search engine, now with ...
PDF
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
PDF
診断ツールの使い方(Owasp zapの場合)
PDF
쉽게 알아보는 AWS 클라우드 보안 :: 임기성 & 신용녀 :: AWS Summit Seoul 2016
PDF
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
PDF
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
PDF
AWS Summit Seoul 2023 | Amazon EKS 데이터 전송 비용 절감 및 카오스 엔지니어링 적용 사례
Tech Summit 2018 【事例紹介】 自社サービスに Azure IoT Hub Device Provisioning Serviceを適用してみた
Cognitive Search: Announcing the smartest enterprise search engine, now with ...
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
診断ツールの使い方(Owasp zapの場合)
쉽게 알아보는 AWS 클라우드 보안 :: 임기성 & 신용녀 :: AWS Summit Seoul 2016
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
AWS Summit Seoul 2023 | Amazon EKS 데이터 전송 비용 절감 및 카오스 엔지니어링 적용 사례

What's hot (20)

PDF
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...
PDF
VPC Reachability Analyzer 使って人生が変わった話
PDF
L'outil CAP'2ER se déploie sur le terrain !
PDF
Tensorflow Liteの量子化アーキテクチャ
PDF
Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピング
PDF
Google Colaboratoryの使い方
PDF
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
PDF
[금융사를 위한 AWS Generative AI Day 2023] 2_세상을 바꾸고 있는 Generative AI에...
PDF
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
PPTX
Edge Computing と k8s でなんか話すよ
PDF
AWS Black Belt Techシリーズ Amazon CloudSearch
PDF
AWS BlackBelt AWS上でのDDoS対策
PPTX
컨테이너 기술 ( Container Technology ) 발표 자료 다운로드
PDF
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
PPTX
【論文読み会】Analytic-DPM_an Analytic Estimate of the Optimal Reverse Variance in D...
PDF
20150109 - AWS BlackBelt - IAM (Korean)
PDF
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | AWS에서 분산 서비스 거부 공격(DDoS)을 고민하지 않는 ...
PDF
推薦アルゴリズムの今までとこれから
PDF
20210526 AWS Expert Online マルチアカウント管理の基本
PDF
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...
VPC Reachability Analyzer 使って人生が変わった話
L'outil CAP'2ER se déploie sur le terrain !
Tensorflow Liteの量子化アーキテクチャ
Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピング
Google Colaboratoryの使い方
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
[금융사를 위한 AWS Generative AI Day 2023] 2_세상을 바꾸고 있는 Generative AI에...
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Edge Computing と k8s でなんか話すよ
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS BlackBelt AWS上でのDDoS対策
컨테이너 기술 ( Container Technology ) 발표 자료 다운로드
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
【論文読み会】Analytic-DPM_an Analytic Estimate of the Optimal Reverse Variance in D...
20150109 - AWS BlackBelt - IAM (Korean)
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | AWS에서 분산 서비스 거부 공격(DDoS)을 고민하지 않는 ...
推薦アルゴリズムの今までとこれから
20210526 AWS Expert Online マルチアカウント管理の基本
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
Ad

Similar to めんどうな環境構築とはおさらば!Dockerの概要と使い方 (20)

PDF
Microsoft azureで実装するwebserviceondocker
PDF
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
PDF
2014.11.01 Dockerことはじめ
PDF
Azureで実装する話題のコンテナサービス
PDF
クラウド+コンテナで作る簡単Webアプリケーション
PDF
DevOpsに求められる様々な技術とその連携の学習方法
PDF
いまからでも遅くない Docker事始め&愉快な仲間達
PPTX
20180925 docker ecs_fargate
PDF
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
PDF
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
PDF
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
PDF
Docker入門
PDF
Googleのインフラ技術から考える理想のDevOps
PDF
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
PDF
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
PPTX
Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料
PDF
Ti dd force09
PPTX
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
PDF
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
PDF
Dockerで開発環境をデリバる
Microsoft azureで実装するwebserviceondocker
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
2014.11.01 Dockerことはじめ
Azureで実装する話題のコンテナサービス
クラウド+コンテナで作る簡単Webアプリケーション
DevOpsに求められる様々な技術とその連携の学習方法
いまからでも遅くない Docker事始め&愉快な仲間達
20180925 docker ecs_fargate
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
Docker入門
Googleのインフラ技術から考える理想のDevOps
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料
Ti dd force09
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
Dockerで開発環境をデリバる
Ad

More from ARISE analytics (20)

PDF
【JSAI2024】学術論文の定量的評価と効果的な活用について Quantitative evaluation and effective utiliza...
PDF
【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf
PDF
【JSAI2024】ブラックボックス大規模言語モデルにおけるHallucination検知手法の検討.pdf
PDF
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
PPTX
【第3回生成AIなんでもLT会資料】_動画生成AIと物理法則_v0.2.pptx
PPTX
【第3回】生成AIなんでもLT会 2024_0304なんでも生成AI_sergicalsix.pptx
PDF
【論文レベルで理解しよう!】​ 欠測値処理編​
PDF
【論文レベルで理解しよう!】​ 大規模言語モデル(LLM)編​
PDF
【論文読み会】Signing at Scale: Learning to Co-Articulate Signs for Large-Scale Pho...
PDF
Hierarchical Metadata-Aware Document Categorization under Weak Supervision​ (...
PDF
教師なしGNNによるIoTデバイスの異常通信検知の検討
PPTX
【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...
PPTX
【論文読み会】Autoregressive Diffusion Models.pptx
PPTX
【論文読み会】BEiT_BERT Pre-Training of Image Transformers.pptx
PPTX
【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx
PPTX
【論文読み会】Deep Reinforcement Learning at the Edge of the Statistical Precipice
PPTX
【論文読み会】Alias-Free Generative Adversarial Networks(StyleGAN3)
PPTX
【論文読み会】On the Expressivity of Markov Reward
PPTX
【論文読み会】MAUVE: Measuring the Gap Between Neural Text and Human Text using Dive...
PPTX
【論文読み会】Moser Flow: Divergence-based Generative Modeling on Manifolds
【JSAI2024】学術論文の定量的評価と効果的な活用について Quantitative evaluation and effective utiliza...
【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf
【JSAI2024】ブラックボックス大規模言語モデルにおけるHallucination検知手法の検討.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【第3回生成AIなんでもLT会資料】_動画生成AIと物理法則_v0.2.pptx
【第3回】生成AIなんでもLT会 2024_0304なんでも生成AI_sergicalsix.pptx
【論文レベルで理解しよう!】​ 欠測値処理編​
【論文レベルで理解しよう!】​ 大規模言語モデル(LLM)編​
【論文読み会】Signing at Scale: Learning to Co-Articulate Signs for Large-Scale Pho...
Hierarchical Metadata-Aware Document Categorization under Weak Supervision​ (...
教師なしGNNによるIoTデバイスの異常通信検知の検討
【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...
【論文読み会】Autoregressive Diffusion Models.pptx
【論文読み会】BEiT_BERT Pre-Training of Image Transformers.pptx
【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx
【論文読み会】Deep Reinforcement Learning at the Edge of the Statistical Precipice
【論文読み会】Alias-Free Generative Adversarial Networks(StyleGAN3)
【論文読み会】On the Expressivity of Markov Reward
【論文読み会】MAUVE: Measuring the Gap Between Neural Text and Human Text using Dive...
【論文読み会】Moser Flow: Divergence-based Generative Modeling on Manifolds

めんどうな環境構築とはおさらば!Dockerの概要と使い方

  • 1. めんどうな環境構築とはおさらば! Dockerの概要と使い方 Marketing Solution Div. Service Design Unit Drone PF Team 森 祐子 ©2023 ARISE analytics Reserved. 2023/12/01
  • 2. Agenda ©2023 ARISE analytics Reserved. 1 1.背景と目的 2.Dockerとは 3.Dockerの使い方 4.超便利!Docker+VSCode 5.まとめ
  • 3. 1.背景と目的 ©2023 ARISE analytics Reserved. 2 背景 ⚫ 変化の激しいビジネスニーズにこた えるにはスピーディかつ効率的に開 発を進めることが重要 ⚫ 開発言語やライブラリが多様にあり、 開発環境の構築に時間がかかる 目的 ⚫ Dockerによる環境構築の利点 を共有し、いかに便利か知ってほ しい 本資料ではスピーディかつ効率的に開発環境を構築できるDockerについて説明し、 Dockerがどういう技術で何が便利なのかを共有することを目的としている。
  • 4. Agenda ©2023 ARISE analytics Reserved. 3 1.背景と目的 2.Dockerとは 3.Dockerの使い方 4.超便利!Docker+VSCode 5.まとめ
  • 5. 2.Dockerとは ①環境構築の苦労話・・・ ©2023 ARISE analytics Reserved. 4 かつてはライブラリのバージョンが案件ごとに異なっていたり、様々なソフトウェアを導入する必 要があり開発環境の構築に非常に時間がかかった。 コンテナを使うことにより、環境構築をスムーズにかつローカルPCの環境に依存することなく開 発を進めることができる。 前職での苦労 案件ごとにNodeのバージョン 切り替えるのめんどくさい・・・ インストールしないといけないも のが多すぎてめんどくさい・・・ 他の人は順調なのに、自分の 環境だけうまくいかない・・・ コンテナ技術を使えば コンテナを使えばバージョンを 意識しなくていい! PCに直接インストールしないの で環境を汚さずに済む! 同じ環境を開発メンバー間で 共有できる!
  • 6. 2.Dockerとは ②Dockerの概要 ©2023 ARISE analytics Reserved. 5 Dockerとはコンテナを使用できる仕組みのことである。 Linuxを前提としているため、Windows/MacでDockerを使う場合はDocker DesktopのようなDockerの実行に必要なLinuxを含むパッケージを導入する。 ホストOS Python MySQL Apache コンテナ コンテナはプログラムやシステムを隔離するもので、イメージファイ ルから作成される。 イメージファイルはコンテナのテンプレートファイルであり、簡単に連 携できる。
  • 7. 2.Dockerとは ③Dockerを使うと何がうれしいの? ©2023 ARISE analytics Reserved. 6 Dockerを使うことでプログラム同士の干渉を防げる/IaCを実現できる/可搬性がある というメリットがあるため、開発環境をメンバー間で簡単に共有でき、スムーズに構築するこ とができる。 プログラムの干渉を防ぐ IaCを実現できる 可搬性がある コンテナで隔離された環境下でプロ グラムやソフトウェアをインストールす るので、互いの干渉による不具合 を防げる。 どんなコンテナを作るか、といった手 順をまとめたイメージファイルを連携 するため、それを元にコンテナを作る だけで環境構築が完了する。 コンテナを定義するイメージファイル は連携可能なため、異なるマシンで も同じ環境を簡単に再現することが できる。
  • 8. Agenda ©2023 ARISE analytics Reserved. 7 1.背景と目的 2.Dockerとは 3.Dockerの使い方 4.超便利!Docker+VSCode 5.まとめ
  • 9. 3.Dockerの使い方 ①Dockerコマンド(1/2) ©2023 ARISE analytics Reserved. 8 他にもバインドマウントを使ってローカルPCのファイルをDockerコンテナにマウントすることができる DockerはDockerコマンドを使ってコンテナの作成/起動/停止/削除といった操作を行 うことができる。例として、MySQLのイメージを使ってコンテナの作成、起動を実施するコマン ドは以下のようになる。 ① ② コマンド解説 ① -v docker_volume:/var/lib/mysql コンテナを削除するとデータも消えてしまうので、コンテナ内のデータをDockerが管理するコンテナ用の保存領域にマウントし ている(ボリュームマウント) ② -dit d: バックグラウンド実行。指定しないと起動したコンテナがコンソールの制御を握ってしまい、実行中はコマンドを打てない。 i: コンテナにキーボードをつなぐ。コンテナの中身をキーボードで操作するのに必要。 t: 特殊キーを使用可能にする。コンテナの中身をキーボードで操作するのに必要。
  • 10. 3.Dockerの使い方 ①Dockerコマンド(2/2) ©2023 ARISE analytics Reserved. 9 Dockerコマンドでコンテナを作成後、コンテナ内でMySQLの操作が可能となっている。 Dockerのボリュームを確認するとMySQLのデータが格納されているためデータの永続化を 実現できる。 execコマンドを使い、実行中のコンテナ内で MySQLを操作してtestテーブルを作成する マウント先として指定したdocker_volume内 に先ほど作成したtestテーブルのデータが格納さ れている
  • 11. 3.Dockerの使い方 ②Dockerfile(1/2) ©2023 ARISE analytics Reserved. 10 ソフトウェアのインストールやファイルのコピーを行ったカスタムイメージを作りたい場合は Dockerfileを使用する。 Dockerfileとはどんなイメージを作るのか設定を記述するファイルであり、イメージのビルド時 に実行したいコマンドを書いておくことができる。 image Dockerfile コンテナ
  • 12. 3.Dockerの使い方 ②Dockerfile(2/2) ©2023 ARISE analytics Reserved. 11 例えばDjangoが実行できるコンテナをDockerで構築したい場合はPythonが実行できる 環境下でDjangoをインストールする必要があるため、Dockerfileを使ってカスタムイメージ を作成します。 Djangoの実行環境を整えるのに必要な手順 ① pythonのイメージファイルを指定 ② (任意)標準入出力に関するPythonのバッ ファリングを無効にする ③ workspaceという名前のフォルダを作成し、そ こを作業フォルダとして指定する ④ requirements.txtをworkspace内にコ ピーしてpip installを実行し、Djangoをイン ストールする ① ② ③ ④
  • 13. 3.Dockerの使い方 ④docker-compose.yml ©2023 ARISE analytics Reserved. 12 作成したいコンテナの定義値をdocker-compose.ymlに記載する。 ファイルを連携することで開発者間で同じコンテナを再現することができる。 ①DBコンテナ ②Webアプリ用コンテナ Dockerfileはコンテナの元となるイメージの設定ファイル、docker-compose.ymlはコンテナ自体 の設定ファイル ①DBコンテナ MySQLのイメージを使ってDBコンテナを構築する。 ②Webアプリ用コンテナ カスタムイメージを使うためbuildでDockerfileの 格納場所を相対パスで指定する。
  • 14. 3.Dockerの使い方 ③Docker Compose ©2023 ARISE analytics Reserved. 13 Docker ComposeはDocker Desktopに標準装備されている Dockerコマンドだと設定が多くなればなるほどコマンド文が長くなってしまう上に、1度に1つ のコンテナしか操作できないため複数のコンテナで構成するシステムを作る際に不便となる。 複数のコンテナを1つの定義ファイルでまとめて実行・停止・破棄といった管理ができる仕組 みのことをDocker Composeと呼ぶ。 • コンテナを使う仕組みそのもの • 1度のコマンドで1つのコンテナを操作できる • コンテナを定義するためのツール • 1度のコマンドで複数のコンテナを操作できる
  • 15. Agenda ©2023 ARISE analytics Reserved. 14 1.背景と目的 2.Dockerとは 3.Dockerの使い方 4.超便利!Docker+VSCode 5.まとめ
  • 16. 4.超便利!Dev Containers ①ARISEで個人的によく見る構成 ©2023 ARISE analytics Reserved. 15 ARISEの開発する際のリポジトリには.devcontainerというフォルダが入っている。 これはVSCodeの拡張機能であるDev Containersを使うためのものであり、開発する上 で非常に便利なものとなっている。 .devcontainer devcontainer.json docker-compose.yml Dockerfile src
  • 17. 4.超便利!Docker+VSCode ②Dev Containersとは ©2023 ARISE analytics Reserved. 16 入社してはじめてこれを使った時は感動して、今まで知らなかったことを後悔しました・・・ Dev ContainsersとはVSCodeとコンテナを接続する拡張機能である。 コンテナで実行環境を揃えるだけでなく、VSCodeで使用するターミナルの設定や使用する 拡張機能の設定ができるため、開発者間でVSCodeの環境を揃えることができる。 extensionsでVSCodeの拡張機能も設定する ことができる
  • 18. 4.超便利!Docker+VSCode ③Dev Containersを使ってみよう!(1/2) ©2023 ARISE analytics Reserved. 17 Dev Containersを使ってDjango+PostgreSQLの開発環境を構築した場合、プログ ラムやライブラリのインストールを実施する必要がないため従来の構築手順に比べてスムーズ に作業が完了する。 従来の構築手順 開発環境の構築手順は以下の通り。 1. Pythonをインストール 2. pipでDjango等必要なライブラリをインストール 3. Postgresをインストール 4. VSCodeの拡張機能のインストール Dev Containersを使うと・・・ 開発環境の構築手順は以下の通り。 1. コンテナを起動する • 環境構築で実行するコマンド/ダウンロードするも のが多く時間がかかる • VSCodeの拡張機能が増えまくる • Windows/Macで手順が変わる • Dev Containersでコンテナを起動するだけで必 要なもののインストールが完了する • 余分なVSCodeの拡張機能を入れずに済む • Windows/Macに依存しない※Appleシリコンは例外
  • 19. ©2023 ARISE analytics Reserved. 18 Dev Containersでコンテナを起動するだけでPythonやDjangoの操作が可能になって いる。従来の構築手順に比べて簡単に環境構築が完了するほか、.devcontainerフォ ルダを連携するだけで開発者間で環境を統一できる。 4.超便利!Docker+VSCode ③Dev Containersを使ってみよう!(2/2) コンテナ起動前 コンテナ起動後
  • 20. 5.まとめ ©2023 ARISE analytics Reserved. 19 • Dockerには プログラムの干渉を防ぐ, IaCを実現できる, 可搬性がある という特徴が ある • VSCode+Dev Containersを使うことにより開発環境をメンバー間で簡単に共有でき、 スムーズに開発をはじめることができるようになる
  • 21. Appendix – 参考資料 ©2023 ARISE analytics Reserved. 20 仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん Docker&仮想サーバー完全入門 Webクリエイター&エンジニアの作業がはかどる 開発環境構築ガイド とりあえずDockerやDocker Composeについて知りたい!使ってみたい!って人におすすめ。 UbuntuやDjangoなど、すぐに使えるコンテナ設定ファイルの使い方や各種設定の説明なども 書かれているのも個人的に嬉しかった。 Dev Containersの話が最後のAppendixに書いてある。 Dockerがどう動いているのかといった仕組みの部分をわかりやすく解説してくれるのでとてもよかっ た。 Dockerコマンドの解説も手厚く、マウント周りのわかりにくい部分の説明も丁寧にされていたので これを読んでかなり理解が進んだ。 Kubernetesの解説も丁寧に書かれているのでめちゃくちゃおすすめ。
  • 22. Appendix – AppleシリコンMacでDockerを使う場合 ©2023 ARISE analytics Reserved. 21 DockerにはIntelアーキテクチャに対応したイメージファイルが豊富にあるが、Appleシリコン に対応しているものは少ない。 AppleシリコンでIntelアーキテクチャ用イメージを使う方法もあるが、うまく動かなかったりパ フォーマンスが悪いなど様々な弊害が生じる可能性がある。 ARMに対応しているのでAppleシリコンでも使用可! ARMに対応していないのでAppleシリコンでは使用不可・・・ “platform linux/amd64 “というオプションを使えばコンテ ナの作成は可能だが「ベストエフォートである」と言われている
  • 23. Best Partner for innovation, Best Creator for the future.