めんどうな環境構築とはおさらば!
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.

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

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