Submit Search
Upload
Docker超入門
•
8 likes
•
8,836 views
VirtualTech Japan Inc.
Follow
Dockerとは、Dockerを使うには、Docker Composeを使うには...のHowto
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 46
Recommended
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Masahito Zembutsu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
目grep入門 +解説
目grep入門 +解説
murachue
More Related Content
What's hot
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
Naoki Nagazumi
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Naoya Kishimoto
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
例外設計における大罪
例外設計における大罪
Takuto Wada
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Gstreamer Basics
Gstreamer Basics
Seiji Hiraki
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Masahito Zembutsu
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
ニワトリでもわかるECS入門
ニワトリでもわかるECS入門
Yoshiki Kobayashi
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
What's hot
(20)
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Docker Tokyo
Docker Tokyo
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
例外設計における大罪
例外設計における大罪
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
TLS, HTTP/2演習
TLS, HTTP/2演習
Gstreamer Basics
Gstreamer Basics
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
ニワトリでもわかるECS入門
ニワトリでもわかるECS入門
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
Similar to Docker超入門
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
Kento Aoyama
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Masahito Zembutsu
Docker & Kubernetes基礎
Docker & Kubernetes基礎
Daisuke Hiraoka
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見る
zhengen lin
Docker入門
Docker入門
Keita Midorikawa
コンテナ on Windows
コンテナ on Windows
Tsubasa Nomura
Circle ci and docker+serverspec
Circle ci and docker+serverspec
Tsuyoshi Yamada
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
Masahito Zembutsu
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
Masahito Zembutsu
Dockerハンズオン
Dockerハンズオン
Kazuyuki Mori
Docker講習会資料
Docker講習会資料
teruyaono1
Docker実践入門
Docker実践入門
hiro nemu
Dockerハンズオン
Dockerハンズオン
Kon Yuichi
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Naoki Nagazumi
Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月
Emma Haruka Iwao
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
Masahito Zembutsu
社内勉強会(Docker)
社内勉強会(Docker)
Shinya Sasaki
Docker handson
Docker handson
koda3
[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能
Akihiro Suda
Similar to Docker超入門
(20)
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker & Kubernetes基礎
Docker & Kubernetes基礎
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見る
Docker入門
Docker入門
コンテナ on Windows
コンテナ on Windows
Circle ci and docker+serverspec
Circle ci and docker+serverspec
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
Dockerハンズオン
Dockerハンズオン
Docker講習会資料
Docker講習会資料
Docker実践入門
Docker実践入門
Dockerハンズオン
Dockerハンズオン
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
社内勉強会(Docker)
社内勉強会(Docker)
Docker handson
Docker handson
[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能
More from VirtualTech Japan Inc.
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
VirtualTech Japan Inc.
エンジニアが幸せになれる会社を目指します
エンジニアが幸せになれる会社を目指します
VirtualTech Japan Inc.
KubeVirt 201 How to Using the GPU
KubeVirt 201 How to Using the GPU
VirtualTech Japan Inc.
KubeVirt 101
KubeVirt 101
VirtualTech Japan Inc.
今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門
VirtualTech Japan Inc.
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
VirtualTech Japan Inc.
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
VirtualTech Japan Inc.
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
VirtualTech Japan Inc.
5G時代のアプリケーション開発とは
5G時代のアプリケーション開発とは
VirtualTech Japan Inc.
hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計
VirtualTech Japan Inc.
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
VirtualTech Japan Inc.
Kubernetes雑にまとめてみた 2019年12月版
Kubernetes雑にまとめてみた 2019年12月版
VirtualTech Japan Inc.
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
VirtualTech Japan Inc.
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
VirtualTech Japan Inc.
KubeCon China & MWC Shangai 出張報告
KubeCon China & MWC Shangai 出張報告
VirtualTech Japan Inc.
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
VirtualTech Japan Inc.
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
VirtualTech Japan Inc.
Multi-access Edge Computing(MEC)における”Edge”の定義
Multi-access Edge Computing(MEC)における”Edge”の定義
VirtualTech Japan Inc.
Edge Computing Architecture using GPUs and Kubernetes
Edge Computing Architecture using GPUs and Kubernetes
VirtualTech Japan Inc.
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド (更新版) - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド (更新版) - OpenStack Day Tokyo 2018講演資料
VirtualTech Japan Inc.
More from VirtualTech Japan Inc.
(20)
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
エンジニアが幸せになれる会社を目指します
エンジニアが幸せになれる会社を目指します
KubeVirt 201 How to Using the GPU
KubeVirt 201 How to Using the GPU
KubeVirt 101
KubeVirt 101
今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
5G時代のアプリケーション開発とは
5G時代のアプリケーション開発とは
hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
Kubernetes雑にまとめてみた 2019年12月版
Kubernetes雑にまとめてみた 2019年12月版
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
KubeCon China & MWC Shangai 出張報告
KubeCon China & MWC Shangai 出張報告
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Multi-access Edge Computing(MEC)における”Edge”の定義
Multi-access Edge Computing(MEC)における”Edge”の定義
Edge Computing Architecture using GPUs and Kubernetes
Edge Computing Architecture using GPUs and Kubernetes
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド (更新版) - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド (更新版) - OpenStack Day Tokyo 2018講演資料
Docker超入門
1.
Docker 超入門 v18.09 対応版 日本仮想化技術株式会社
2.
前提要件 • Docker CE
18.09以降のバージョン • Managementコマンドを使う • Docker Compose 1.24.1以降のバージョン 2
3.
色々なDocker • Docker Engine •
dockerコマンドで色々するそれ • Docker Compose • アプリケーションの展開 • Docker Machine • Docker Engineをセットアップ • Docker Swarm • クラスター構成するときに使う 3 青字のコンポーネントが対象
4.
Dockerの概要 4
5.
Dockerとは • 「コンテナー」と呼ばれるOSレベルの仮想化環境を提供する もの • 利点はハイパーバイザー型仮想化ソフトウェアと比べて 1.
すぐ使い始めることができる 2. 起動が速い 3. 異なる環境で動かすのが容易である 5
6.
「仮想マシン」との比較 6 カーネル ハイパーバイザー OS アプリ カーネル Docker Engine OS アプリ OS アプリ OS アプリ カーネル OS アプリ カーネル OS アプリ カーネル ハードウェア ハードウェア 仮想化の場合
Dockerの場合 カーネルは ホストと共存カーネルは ホストと独立
7.
すぐ使い始めることができる 1. ハイパーバイザーのインストール 2. 仮想マシンの作成 3.
仮想マシンにOSのインストール 4. アプリケーション実行環境のインスト ール 5. アプリケーションの配備 6. コンテンツの配備 1. Dockerのインストール 2. アプリケーションを動かすためのイメ ージを使ってコンテナーを作成 3. コンテンツの配備 7 仮想化の場合 Dockerの場合 NGINX、Apache2、 Node.js、Python、Ruby、 PHP Golang、Java etc...
8.
起動が速い • インストール済の状態 • 仮想マシンを起動 •
だいたい10秒 • イメージインポート済の状態 • コンテナーを作成 • だいたい1秒 8 仮想化の場合 Dockerの場合
9.
異なる環境で動かすのが容易 • マシンのアーキテクチャーは考慮が必要(amd64、arm64) • Aの環境で動いたものをBで動かすといったことはだいたい可能 9 カーネル Docker
Engine カーネル Docker Engine OS アプリ ハードウェア ハードウェア ホストA ホストB OS アプリ
10.
Dockerの使いかた 10
11.
Docker Engineの種類 • ディストリビューション標準のDockerパッケージ •
aptやyum、snapコマンドなどですぐインストール可能 • バージョンが古い(もしくは提供されていない)場合がある • Docker CE • 無料で使えるコミュニティー版 • Docker EE • 商用向け。有料 11
12.
Dockerのインストール • CentOS 7
/ Fedoraの場合 • sudo yum install docker • sudo systemctl start docker • sudo systemctl enable docker • Ubuntu / Debianの場合 • sudo apt update • sudo apt install docker.io 12 ディストリビューション版 パッケージを使う場合
13.
Docker利用の基本 • イメージを検索(search) • イメージを取り込む(pull) •
イメージを使ってコンテナーを作成する(run) • コンテナーをセットアップ • 動かしたいアプリケーションを配置 • 適宜環境を修正(インストール&設定) • コンテナーの上でアプリケーションが動く 13
14.
Dockerコンテナーの検索 • 「docker search
〜」コマンドでコンテナーイメージを検索できる • docker search centos • docker search ubuntu • 「-f」オプションでフィルターできる • 例えばオフィシャルイメージのみ表示するとか • docker search centos -f is-official=true 14
15.
Dockerイメージとセキュリティ • Dockerのイメージは色々なユーザーが公開している • セキュリティ的な穴があるかも? •
脆弱性とかキーロガーとか • 基本的にはDocker Certifiedもしくはオフィシャルイメージを使う • かつメンテナンスがしっかりしているものを利用する • 自動ビルドイメージだとなお良し • 人の手によって作成されていない • イメージの透明性 15
16.
Dockerとroot権限 • デフォルトはdockerコマンドはrootユーザーしか許可されていない • ユーザーをdockerグループに追加するとsudoが不要になる •
sudo gpasswd -a $USER docker • ただ、上の設定の実行はあまりオススメしない • sudo docker 〜 • sudo -iを実行してからdockerコマンドを利用 16
17.
Dockerイメージのおすすめ • busybox • 一通りのコマンドが入っている •
テスト用およびベースイメージとして使うなど • alpine • 軽量かつパッケージ管理ツールでカスタム可能 • 他のイメージのalpineイメージもおすすめ • debian:stable-slim • slimつきイメージはサイズが小さい(約1/2) 17 Ubuntu、CentOS、Debian など色々イメージがある。 hub.docker.comで検索できる
18.
Dockerコンテナータグの検索 • 「docker search」コマンドではタグ(バージョン)までは確認できない •
例えばCentOS 7とか、6とか • curlで頑張るか、ブラウザーでDocker hubを検索 • ex1: curl -s https://registry.hub.docker.com/v1/repositories/centos/tags | sed "s/,/¥n/g" | grep name | cut -d '"' -f 4 • ex2: curl -s https://registry.hub.docker.com/v1/repositories/centos/tags | jq 18 要 GNU sed 要 jq
19.
Dockerコンテナーの作成 • 「docker container
run」で新規作成 • 基本 • docker container run --name=cont1 -it busybox sh • 実行して結果を出力したらコンテナーを削除(使い切りコンテナー) • docker container run --name=cont2 --rm -it busybox ping -c3 9.9.9.9 • 起動を継続(デーモンとして実行)するコンテナー • docker container run --name=cont3 -d -it busybox sh 19
20.
docker container run補足 •
アプリケーションによって指定するオプションは異なる • 基本の使いかたはこんな感じ • コンテナー名を指定しない場合はランダム 20 docker container run -it--name=cont1 sh コンテナを作成 する場合 対話モード (Interactive) ttyを開く コンテナ名 コマンド busybox Docker イメージ
21.
作成したコンテナー一覧の表示 • 「docker container
ls」で実行中のコンテナーを表示 • 「docker container ls -a」で存在するコンテナーを表示 • cont2は使い切りコンテナーとして作成したので一覧にはない 21
22.
Dockerコンテナーにアクセス • 「docker container
exec」コマンドで指定したコンテナーに入る • 「docker container ls」で該当のコンテナーを検索 • コマンド「docker container exec -it cont1 sh」のように実行してコ ンテナーにアクセス 22
23.
docker container exec
補足 • 「docker container run」した時のオプションを指定する 23 docker container exec -it cont1 sh コンテナにアクセス する場合 対話モード ttyを開く コンテナ名 コマンド
24.
Dockerコンテナーを再開 • 終了状態のコンテナーは再利用(起動)可能 • コマンドとして「docker
container start cont1」のように実行 24
25.
Dockerコンテナーを停止 • 実行状態のコンテナーは停止可能 • コマンドとして「docker
container stop cont1」のように実行 25
26.
コンテナーでサービスを起動 • 例えばWebサーバーを実行するには • docker
container run --name=cont4 -d -p 8080:80 -it httpd:alpine • http://localhost:8080 でコンテナーの80ポートを使っているWebサー バーにアクセス可能 26
27.
コンテナーを削除 • いらなくなったコンテナーはrmオプションで削除可能 • コンテナーを削除する前に停止が必要 •
コマンド実行例 • 「docker container stop cont1」で停止 • 「docker container rm cont1」で削除 • 「--force」オプションも使える • docker container rm cont1 --force 27
28.
コンテナーイメージを削除 • いらなくなったコンテナーイメージは削除可能 • コマンド実行例 •
「docker image ls」でイメージ一覧を出して • 「docker image rm centos:7」でイメージを消す 28
29.
Docker応用編 29
30.
ディレクトリーをマウントして起動 • データを永続化したい時の手段の一つ • -vオプションでコンテナーにローカルディレクトリーをマウント可能 •
-wオプションでカレントディレクトリーを指定可能 • ローカルのディレクトリーのほか、NFS、iSCSI、FCなどのボリューム をコンテナーにマウントも可能 • 「Docker Volume Plugins」で検索してみよう 30
31.
ディレクトリーのマウント実行例 • ローカルディレクトリーをコンテナーの/root/workにマウント • docker
container run -v /root/work:/root/work -w /root/work - it python:3.6-slim bash • データボリュームコンテナーを作って別のコンテナーで利用 • docker container run -it -d -v /data --name datavol busybox • docker container run -it --volumes-from datavol --name test centos:7 bash 31 カレントディレク トリーを指定
32.
カスタムイメージ作成 • Dockerイメージは好きなようにカスタマイズして使える • docker
container commit • 作成したコンテナーをイメージに変換 • docker image build • dockerfileに記述した通りのイメージを作る 32
33.
docker container commitでイメージ化 •
CentOS7 + Webサーバーコンテナーをイメージとしてコミット • docker container run --privileged --name=cont1 -it centos:7 bash • yum install -y httpd && exit • docker container commit cont1 httpd-template 33 特権モード
34.
docker container commitイメージを使う •
コミットしたイメージでWebサーバーを動かす例 • docker container run --privileged -d -p 50080:80 --name cont2 httpd-template:latest /sbin/init • docker container exec -it cont2 bash -c "systemctl start httpd" • curl http://localhost:50080 34
35.
docker image buildによるイメージ生成 •
作成したいコンテナーイメージはdockerfileに記述する • インストールしたいパッケージ • 設定 • 起動するプロセス • ファイルコピー etc... 35
36.
docker image build実行例 •
docker image build --compress -t apache:latest -f dockerfile- apache . • docker container run --privileged -d --name=cont1 -p 58080:80 -it apache:latest • curl http://localhost:58080 36 FROM centos:7 RUN yum install -y httpd && ¥ yum clean all && ¥ systemctl enable httpd.service CMD /sbin/init EXPOSE 80 dockerfile-apache 最後にドットをつける
37.
イメージ作成のHowto • Alpineイメージを使うと軽量化できる • 例えばPython3のイメージ 37
38.
カスタムイメージの登録 • Docker Hubにカスタムイメージを登録できます。 •
アカウントを作成(無料)します • 作成したイメージをアップロード • Gitにdockerfileを置いて、イメージの自動ビルドも可能 • 利用方法は「Docker Hub イメージ登録」などで検索 • https://docs.docker.com/docker-hub/ 38
39.
ローカルリポジトリーの作成と利用 • Docker Hubに「Docker
Registry」イメージがある • https://hub.docker.com/_/registry • http://docs.docker.jp/registry/toc.html • これを使うと独自のDockerリポジトリーを立ち上げられる • 繰り返し使うイメージのキャッシュ • 非公開にしたいイメージの管理 • 常時オンラインではない環境での利用 39
40.
Docker Composeとは • アプリケーションコンテナー作成を自動化するDockerのツール •
環境構築を自動化 • 構築、停止、再構築が自由自在 • 冪等性 • サービスの状態を表示 • ログ出力 40 OS MySQL Webサーバー WordPressサイト
41.
docker-composeのインストール • 方法はいくつかある • yumやaptなどを使ってパッケージをインストール •
Pythonモジュールを使う • バイナリーをGitHubからダウンロードして展開 41
42.
Docker Composeの使いかた概要 • プロジェクトディレクトリーを作成 •
「docker-compose.yml」を作成して記述 • 「docker-compose up -d」で構築開始 • YAMLの内容に沿ってアプリケーションをデプロイ • 「docker-compose logs」でログを確認 • 「docker-compose down」でアプリケーションを削除 42
43.
YAML記述例 version: '2' services: db: image: mysql:5.7 volumes: -
"./.data/db:/var/lib/mysql" restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest links: - db ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress 43 MySQLとWebサーバーをデプロイし ている。わかりやすい
44.
Docker Compose実行例 # tree
docker-compose/ docker-compose/ └── docker-compose.yml ←デプロイするアプリケーションを定義したYAMLファイル 0 directories, 1 file # docker-compose up -d ←デプロイ実行 # docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------ docker-compose_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp docker-compose_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8000->80/tcp # docker-compose down ←アプリケーションの終了 44
45.
少々待てばデプロイ完了 45
46.
まとめ • Dockerは便利ですね • シングルホストでDockerを活用するのは簡単 •
マルチホストでは?...例えば • Docker Swarm • Kubernetes • Rancher 46
Editor's Notes
PowerPoint版
https://hub.docker.com/search/?type=edition&offering=community
円マークではなくバックスラッシュ