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
コンテナの基礎
Search
Hironobu Saitoh
February 22, 2021
Technology
0
1.5k
コンテナの基礎
Hironobu Saitoh
February 22, 2021
Tweet
Share
More Decks by Hironobu Saitoh
See All by Hironobu Saitoh
オレのエンジニア的英語勉強法
hironobu
2
100
ConoHa WINGを支える技術(インフラ編)
hironobu
2
2.3k
俺がどんな風にConoHaを使っているのか 全部見せますスペシャル
hironobu
0
2.3k
俺用ツールをオープンソースで公開したら 意外と反応があった話
hironobu
0
130
ConoHaとDocker Machineで Dockerホストを作ってみよう
hironobu
2
1.3k
Goでデーモンを作ってみる
hironobu
4
3.5k
エバンジェリストの役割(HosCon大阪)
hironobu
0
700
自作サーバーの時代から 最新クラウドの時代へ、そして
hironobu
1
810
開発者× CloudStack × Stuck
hironobu
0
720
Other Decks in Technology
See All in Technology
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
170
Claude Codeを使った情報整理術
knishioka
19
12k
I tried making a solo advent calendar!
zzzzico
0
130
純粋なイミュータブルモデルを設計してからイベントソーシングと組み合わせるDeciderの実践方法の紹介 /Introducing Decider Pattern with Event Sourcing
tomohisa
1
500
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
300
コールドスタンバイ構成でCDは可能か
hiramax
0
130
国井さんにPurview の話を聞く会
sophiakunii
1
310
スクラムマスターが スクラムチームに入って取り組む5つのこと - スクラムガイドには書いてないけど入った当初から取り組んでおきたい大切なこと -
scrummasudar
1
1.2k
AI: The stuff that nobody shows you
jnunemaker
PRO
1
150
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.4k
わが10年の叡智をぶつけたカオスなクラウドインフラが、なくなるということ。
sogaoh
PRO
1
200
AI with TiDD
shiraji
1
340
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
110
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
120
First, design no harm
axbom
PRO
1
1.1k
Paper Plane (Part 1)
katiecoart
PRO
0
2.7k
[SF Ruby Conf 2025] Rails X
palkan
0
680
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Transcript
Copyright © GMO Internet Inc. All Rights Reserved. コンテナの基礎 GMOインターネット
Webプロモーション研究室 ⻫藤弘信
2 Copyright © GMO Internet Inc. All Rights Reserved. このセッションの⽬的
フロントエンドの⼈がコンテナ(Docker)の基礎的な理解を深める ⽬次 • コンテナとDocker。メリットやその必要性 • Webアプリを例に実際のコンテナの例 • Docker基礎 • ディスカッション
3 Copyright © GMO Internet Inc. All Rights Reserved. コンテナとDocker
コンテナ • アプリケーションとそのミドルウェアなどをパッケージ化する技術 • コンテナが動く環境なら(基本的に)どこでもアプリケーションが動作する • 仮想サーバー(Virtual machine)と似ているが技術的に全く別物 Docker • 上記のコンテナの実装の⼀つ • メジャーな実装の⼀つ • まずはこれを覚えましょう
4 Copyright © GMO Internet Inc. All Rights Reserved. コンテナがもたらすメリット
アプリケーションを正しく配置するため • 近年のアプリケーションは多くの外部ライブラリに依存している • npmとか • ミドルウェアにも依存している • PHPのバージョン違いとか • さまざまな外部サービスにも依存している(DB, キャッシュ, CDN etc…) • プロジェクトの環境も複数ある(Testing, Staging, Production) 依存関係を間違えるとアプリケーションの動作に⼤きな影響が出る
5 Copyright © GMO Internet Inc. All Rights Reserved. コンテナがもたらすメリット
アプリケーションを正しく配置するため (図は元内さんのパワポから引⽤)
6 Copyright © GMO Internet Inc. All Rights Reserved. コンテナがもたらすメリット
コンテナはアプリケーションの動作を保証しやすい • コンテナ内にはアプリケーションとミドルウェアが含まれている • 依存関係が内部で完結している • どこでもアプリを動かすことができる • コンテナをそのまま他の場所へ移せばすぐに動作させられる アプリケーションの環境依存を減らすことができ、 開発や運⽤の効率を上げることができる
7 Copyright © GMO Internet Inc. All Rights Reserved. コンテナのトレンド
コンテナ⾃体はすでに開発のメインストリーム • インフラの技術はすでにアプリのコンテナ化を前提にしたものが増えている • ビルドやCIシステムも同じ • 今はフロントの⼈でもガンガンコマンド叩く • JS界隈の⼈の⽅がむしろdocker好きな気がする(依存が多いので)
Copyright © GMO Internet Inc. All Rights Reserved. 実際のコンテナ
Copyright © GMO Internet Inc. All Rights Reserved. コンテナの実体 (⻫藤が普段開発する場合のツリー)
/home/hiro/dev └── onamae.com ├── datas ├── htdocs │ └── index.php ├── library │ └── lib.php └── var 具体的にコンテナとは何なのか • アプリケーションの実⾏に必要なファイルをまとめたもの • 例えばPHPのWebアプリの場合、PHPファイル、アセットファイル(js, css)、画像 ファイルなど
Copyright © GMO Internet Inc. All Rights Reserved. コンテナの実体 アプリケーションのファイルだけじゃない
• Webアプリを動作させるには、実⾏環境が必要 • 実⾏環境とはWebサーバー(Apache/Nginxなど), PHP, MySQLのようなもの • 上記を動かすにはOSも必要になる
Copyright © GMO Internet Inc. All Rights Reserved. • それらをパッケージ化して扱おうと考えて登場したのがコンテナ技術である
コンテナの実体 実⾏環境 OS Webアプリ コンテナ /home/hiro/dev └── onamae.com ├── datas ├── htdocs │ └── index.php ├── library │ └── lib.php └── var
Copyright © GMO Internet Inc. All Rights Reserved. • それらをまとめてパッケージ化したものがコンテナである
コンテナの実体 コンテナ /home/hiro/dev └── onamae.com ├── datas ├── htdocs │ └── index.php ├── library │ └── lib.php └── var これは…︖ 実⾏環境 OS Webアプリ
Copyright © GMO Internet Inc. All Rights Reserved. • コンテナはホストOS(のカーネル)を共⽤するのでコンテナには含まない
• ホストOS︖︖︖ コンテナの実体 コンテナ /home/hiro/dev └── onamae.com ├── datas ├── htdocs │ └── index.php ├── library │ └── lib.php └── var 実⾏環境 OS Webアプリ ホストOS
Copyright © GMO Internet Inc. All Rights Reserved. Windows/ macOS/
Linux コンテナの実体 実⾏環境 Webアプリ • DockerはWindows, macOS, Linuxなどにインストールできる • Dockerがインストールされていればどの環境でもコンテナが動く Docker
Copyright © GMO Internet Inc. All Rights Reserved. コンテナの実体 •
そのコンテナを動作させるものをコンテナランタイムと呼ぶ • Dockerはコンテナランタイムの⼀つ コンテナにはWebアプリを実⾏するために必要なものがすべて含まれている 実⾏環境 Webアプリ Docker
Copyright © GMO Internet Inc. All Rights Reserved. 実際の運⽤ •
実運⽤では複数のコンテナが連携してシステムを構成する • ⼀つのコンテナに⼀つの機能を割り当てる Docker サーバー / インフラ / PC ・・・ Webサーバ 実⾏環境 Webアプリ データベース
17 Copyright © GMO Internet Inc. All Rights Reserved. 開発環境として
開発環境としてDockerを使うのも全然あり • VSCodeのRemote Development • コンテナ内に開発環境を作る • ローカルに開発環境を作る必要が無い • VSCodeが(ある程度)⾃動でやってくれる • マシンが変わってもOK https://code.visualstudio.com/docs/remote/remote-overview
Copyright © GMO Internet Inc. All Rights Reserved. Docker基礎 まとめ
• コンテナはアプリケーションとその実⾏環境をパッケージにしたもの • Dockerとはコンテナを動作させるランタイムの有名な実装の⼀つ • 近年のアプリケーションは多くの依存関係を持っている • コンテナでアプリケーションの依存関係をシンプルにできる • それにより開発や運⽤の効率を上げることができる
Copyright © GMO Internet Inc. All Rights Reserved. Dockerを触ってみる
Copyright © GMO Internet Inc. All Rights Reserved. Docker基礎 •
creative-docker-vmをclone • git clone • Vagrantで仮想マシンを⽴ち上げてログイン • vagrant up • vagrant ssh • dockerで使うCentOSのコンテナイメージを取得する • docker pull centos • コンテナを作成して中に⼊る • docker run –ti --rm centos /bin/bash (←このコマンドは後で説明します) • cat /etc/redhat-release
Copyright © GMO Internet Inc. All Rights Reserved. Docker基礎 ローカルPC(Mac,
Windows) Docker(CentOS7) vagrant (creative-docker-vm) vagrant up docker run –ti –rm centos /bin/bash ここは仮想マシン(VM)の中 ここはコンテナの中 どんな環境になっているのか(イメージ図)
22 Copyright © GMO Internet Inc. All Rights Reserved. Docker基礎
コンテナイメージを⽴ち上げるための最⼩限のコマンド docker run –ti --rm centos /bin/bash -t –i --rmはオプション runはコンテナを作成/実⾏するサブコマンド centosイメージを使って /bin/bashを実⾏する
Copyright © GMO Internet Inc. All Rights Reserved. Docker基礎 いろいろなコンテナイメージを利⽤することができる
https://hub.docker.com/
Copyright © GMO Internet Inc. All Rights Reserved. PHPのコンテナイメージを使ってみる(https://hub.docker.com/_/php) •
現在の環境のPHPのバージョンを確認 • php -v • PHP5.3イメージを作成 • docker run -ti --rm php:5.3-cli /bin/bash • (⾃動でイメージ取得が⾏われる) • php -v • exit • 環境が戻ったことを確認 • php -v Docker基礎
Copyright © GMO Internet Inc. All Rights Reserved. PHPのコンテナイメージを使ってみる(2)(https://hub.docker.com/_/php) •
php7.2-apacheイメージを使ってphpinfoを出してみる • htdocsフォルダを作る • <?php phpinfo(); と書いたindex.phpを⽤意 • docker run --rm -p 80:80 -v “$PWD”:/var/www/html php:7.3-apache • ブラウザから http://localhost:8090/ を開く(phpinfoが出るはず) • 以下のコマンドも試してみる • docker run --rm -p 80:80 -v “$PWD”:/var/www/html php:5.3-apache Docker基礎
Copyright © GMO Internet Inc. All Rights Reserved. Docker基礎 +
ローカルPC(Mac, Windows) Docker(php7.3-apache) vagrant (creative-docker-vm) vagrant: 80 ローカルPC: 8090 ここは仮想マシン(VM)の中 ここはコンテナの中 php7.3-apache実⾏時のポート図 + docker: 80 vagrant: 80
27 Copyright © GMO Internet Inc. All Rights Reserved. Docker基礎
まとめ • docker runコマンドでコンテナを作成できる • コンテナイメージを利⽤することで⾊々なOSやミドルウェアをすぐに⽤意できる • バージョン違いなどもすぐに試せる • コンテナで⽤意した環境の中ですぐに開発を始められる︕ • 開発が終わった後、コンテナから新しいコンテナイメージを作れる(今度やる)
Copyright © GMO Internet Inc. All Rights Reserved. ディスカッション
Copyright © GMO Internet Inc. All Rights Reserved. • チーム開発では主にPHPファイルとアセット(JS/CSS/Image)を扱ってる
• サーバーの適切なフォルダにデプロイ/アップロードすれば動いていた • DBなど環境に応じて設定を切り替える必要があるけどノウハウがあるので無問題 • わざわざコンテナやDockerにする必要性を感じない • コンテナはイメージ作るの複雑でCI回るの時間かかるし遅い • コンテナ化は「考えなきゃいけないことが増えただけ」 • メリットがわからない 「コンテナっているの︖」