SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Docker
ことはじめ的なはなし
2016.05.10
@pinmarch_t
アジェンダ
● Dockerとは
● Dockerにいたるまで
● DockerイメージとDockerコンテナ
● Dockerコンテナを動かす
● Dockerイメージを作る
2
Dockerとは
もともとはDotCloud(PaaS)で使用するために開発された。
デプロイメントシステム。
DotCloud社がDocker社に社名変更。
3
Dockerはいったい何をするのか
よく比較されるのがVM(仮想マシン)。
Dockerはコンテナを提供する。
物理マシンへの負荷は完全仮想化>コンテナ型
4
OS Kernel OS Kernel
物理ハードウェア 物理ハードウェア
仮想ハードウェア
VM VM VM
コン
テナ
コン
テナ
コン
テナ
仮想マシン(完全仮想化) Docker(コンテナ型)
OS Kernel
各コンテナはプロセスとして
稼働している
Dockerデーモン
※完全仮想化よりコンテナ型に近い仮想化に準仮想化がある
Dockerにいたるまで
Dockerのような仕組みは昔からある。
● chroot
○ ファイルシステムのルート (/)を変える
○ クロスコンパイル(他のOS、アーキテクチャ用のバイナリ生成 )をするのに便利
● Jail (FreeBSD jail)
○ OSレベル仮想化(Dockerと同じ)
○ 独立したファイルシステム
○ 独立したプロセス空間
○ 独立したユーザーアカウント
5
DockerイメージとDockerコンテナ
DockerはDockerイメージを起動させて、Dockerコンテナとして実行する。
(クラスのオブジェクトとインスタンスのような関係)
イメージの一覧を出す
$ docker images
イメージをDocker Hubからダウンロードする
$ docker pull ubuntu:latest
イメージを削除する
$ docker rmi ubuntu:latest
6
DockerイメージとDockerコンテナの関係
7
Dockerイメージ
Dockerコンテナ
docker run some-image
1つのdockerイメージからいく
つもコンテナを走らせることが
できる。
1イメージIDに対して複数コン
テナIDが生成される。
● Dockerは透過的にマウントするファイ
ルシステムを採用している。
● DockerコンテナはDockerイメージの
ファイルシステムをマウントする。
● Dockerイメージのファイルシステムを
直接書き換えすることはない。
● 各dockerコンテナのファイルシステム
は互いに干渉しない (書き換え可能な
共有ボリュームを除く )。
Dockerコンテナを動かす
$ docker run “image name”
例 $ docker run centos:centos7 ⇒ すぐ終わる
$ docker run -it ubuntu /bin/bash ⇒ インタラクティブシェルに入る
動いているコンテナを列挙
$ docker ps
終了したコンテナも含めて列挙
$ docker ps -a
実行したコンテナを削除する
$ docker rm “container id”
$ docker rm $(docker ps -aq) ⇒ 終了したコンテナを全部削除 (動いているものはエラーになる )
$ docker run --rm -it ubuntu /bin/bash ⇒ コンテナが終了したら自動で削除
8
Dockerコンテナのライフサイクル
9
Dockerイメージ
Dockerコンテナ
docker run some-image
docker ps で見える
docker ps -a で見える
docker commit container-ID
docker stop container-ID
(自然に終了)
docker サブコマンドはほかにもいろいろある。
https://docs.docker.com/engine/reference/commandline/cli/
docker rm container-ID
docker start container-ID
docker attach container-ID
ボリュームを共有する
コンテナが起動したとき、中のファイルシステムは書き換えても外に影響しない。
コンテナの外とファイルシステムを共有する
$ docker run -v /path/to/outside:/path/to/inside “image name”
$ docker run -v /path/to/outside:/path/to/inside:ro “image name” ⇒ read onlyで共有
USBなどのデバイスもコンテナ内からアクセスするためには共有する必要がある。
$docker run --device /dev/sdc1:/dev/sdc1 “image name”
(GPUをコンテナ内から使う場合などに必要 )
10
ポートを共有する
Dockerコンテナはdocker01というブリッジを介して NATを構成している。
ネットワーク構成を列挙する
$ docker network ls
https://docs.docker.com/engine/userguide/networking/dockernetworks/
接続構成を列挙する
$ docker network inspect bridge
“bridge”はdocker network lsで出力された名前
コンテナ内のポートに外のポートと繋げる
$ docker run -p 8888:8080 “image name”
⇒ ホストのポート8888とコンテナの8080を繋ぐ
11
192.168.0.4
172.17.0.3172.17.0.4
container1 container2
host
Dockerイメージを作る
Dockerfileを作成する。
基本的な書き方(例):
# コメント
FROM ubuntu:latest
FROM … 既存のdockerイメージを参照する、というディレクティブ
ubuntu:latest … 既存のdockerイメージ
$ docker build -t “image name” <path or dockerfile>
12
Dockerfileの例
curlをインストールしたイメージを作り、 runするとバージョン情報を表示して終了する。
FROM ubuntu:latest
MAINTAINER pinmarch <pinmarch@email.com>
RUN apt-get -y update && 
apt-get -y install curl
CMD /usr/bin/curl -V
13
ENTRYPOINT vs. CMD
いろいろあるんですよこれが
14
fin.
Let’s enjoy docker!
15

Más contenido relacionado

La actualidad más candente

Jenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCIJenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCIshigeyuki azuchi
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introductionDAEBUM LEE
 
コンテナ on Windows
コンテナ on Windowsコンテナ on Windows
コンテナ on WindowsTsubasa Nomura
 
Docker Hello World
Docker Hello WorldDocker Hello World
Docker Hello WorldTakao Fukui
 
V12 の DAOS はさらに使いやすくなるかも⁉
V12 の DAOS はさらに使いやすくなるかも⁉V12 の DAOS はさらに使いやすくなるかも⁉
V12 の DAOS はさらに使いやすくなるかも⁉Haruyuki Nakano
 
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」Takuya ASADA
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Takuya ASADA
 
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)Akira Yoshiyama
 
Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!Etsuji Nakai
 
#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会Etsuji Nakai
 
ローカル環境にCent OSサーバをVirtualBoxで作ろう!
ローカル環境にCent OSサーバをVirtualBoxで作ろう!ローカル環境にCent OSサーバをVirtualBoxで作ろう!
ローカル環境にCent OSサーバをVirtualBoxで作ろう!Ikuo Degawa
 
20120609 cod ws2012概要
20120609 cod ws2012概要20120609 cod ws2012概要
20120609 cod ws2012概要Osamu Takazoe
 
Red Hat Enterprise Linux 7.1 Kubernetes入門
Red Hat Enterprise Linux 7.1 Kubernetes入門Red Hat Enterprise Linux 7.1 Kubernetes入門
Red Hat Enterprise Linux 7.1 Kubernetes入門Etsuji Nakai
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークTakuya ASADA
 
年納めにDockerやろうず
年納めにDockerやろうず年納めにDockerやろうず
年納めにDockerやろうずKeita Neriai
 

La actualidad más candente (19)

Jenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCIJenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCI
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 
コンテナ on Windows
コンテナ on Windowsコンテナ on Windows
コンテナ on Windows
 
Docker Hello World
Docker Hello WorldDocker Hello World
Docker Hello World
 
V12 の DAOS はさらに使いやすくなるかも⁉
V12 の DAOS はさらに使いやすくなるかも⁉V12 の DAOS はさらに使いやすくなるかも⁉
V12 の DAOS はさらに使いやすくなるかも⁉
 
Inside wsl
Inside wslInside wsl
Inside wsl
 
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
 
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)
 
Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!
 
#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会
 
ODS ってなんだ?
ODS ってなんだ?ODS ってなんだ?
ODS ってなんだ?
 
DockerがYAVAY!
DockerがYAVAY!DockerがYAVAY!
DockerがYAVAY!
 
ローカル環境にCent OSサーバをVirtualBoxで作ろう!
ローカル環境にCent OSサーバをVirtualBoxで作ろう!ローカル環境にCent OSサーバをVirtualBoxで作ろう!
ローカル環境にCent OSサーバをVirtualBoxで作ろう!
 
20120609 cod ws2012概要
20120609 cod ws2012概要20120609 cod ws2012概要
20120609 cod ws2012概要
 
Red Hat Enterprise Linux 7.1 Kubernetes入門
Red Hat Enterprise Linux 7.1 Kubernetes入門Red Hat Enterprise Linux 7.1 Kubernetes入門
Red Hat Enterprise Linux 7.1 Kubernetes入門
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
 
Docker Chronicle 2021.09
Docker Chronicle  2021.09Docker Chronicle  2021.09
Docker Chronicle 2021.09
 
年納めにDockerやろうず
年納めにDockerやろうず年納めにDockerやろうず
年納めにDockerやろうず
 

Similar a Dockerことはじめ的なはなし

そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と DockerのキホンNaoki Nagazumi
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Microsoft Corporation
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Masahito Zembutsu
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようTakashi Makino
 
DrupalをDockerで起動してみる
DrupalをDockerで起動してみるDrupalをDockerで起動してみる
DrupalをDockerで起動してみるiPride Co., Ltd.
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもんMasahito Zembutsu
 
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーWeb系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーYosuke INOUE
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
Getting started with Windows Containers
Getting started with Windows ContainersGetting started with Windows Containers
Getting started with Windows ContainersKazuki Takai
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker雄哉 吉田
 
Docker 入門
Docker 入門Docker 入門
Docker 入門itatyo
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念Masahito Zembutsu
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門hiro nemu
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようmookjp
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見るzhengen lin
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門Tsukasa Kato
 

Similar a Dockerことはじめ的なはなし (20)

そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
DrupalをDockerで起動してみる
DrupalをDockerで起動してみるDrupalをDockerで起動してみる
DrupalをDockerで起動してみる
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーWeb系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Getting started with Windows Containers
Getting started with Windows ContainersGetting started with Windows Containers
Getting started with Windows Containers
 
Docker入門
Docker入門Docker入門
Docker入門
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
Docker 入門
Docker 入門Docker 入門
Docker 入門
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
 
Docker v14
Docker v14Docker v14
Docker v14
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 
Docker入門
Docker入門Docker入門
Docker入門
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見る
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 

Más de pinmarch_t Tada

SNPのオープンデータを覗き見る TokyoWebmining #47 (2015.06.27)
SNPのオープンデータを覗き見る TokyoWebmining #47 (2015.06.27)SNPのオープンデータを覗き見る TokyoWebmining #47 (2015.06.27)
SNPのオープンデータを覗き見る TokyoWebmining #47 (2015.06.27)pinmarch_t Tada
 
Angularを使ってみる実例いくつか (2015/4/29 GDGKobe)
Angularを使ってみる実例いくつか (2015/4/29 GDGKobe)Angularを使ってみる実例いくつか (2015/4/29 GDGKobe)
Angularを使ってみる実例いくつか (2015/4/29 GDGKobe)pinmarch_t Tada
 
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)pinmarch_t Tada
 
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)pinmarch_t Tada
 
Google Prediction APIを使う前に知っておきたい統計のはなし
Google Prediction APIを使う前に知っておきたい統計のはなしGoogle Prediction APIを使う前に知っておきたい統計のはなし
Google Prediction APIを使う前に知っておきたい統計のはなしpinmarch_t Tada
 
facebookアプリ開発あれこれ
facebookアプリ開発あれこれfacebookアプリ開発あれこれ
facebookアプリ開発あれこれpinmarch_t Tada
 
ふぇいすぶっくをたしなむ(2011/5/13Facebook講義資料)
ふぇいすぶっくをたしなむ(2011/5/13Facebook講義資料)ふぇいすぶっくをたしなむ(2011/5/13Facebook講義資料)
ふぇいすぶっくをたしなむ(2011/5/13Facebook講義資料)pinmarch_t Tada
 

Más de pinmarch_t Tada (7)

SNPのオープンデータを覗き見る TokyoWebmining #47 (2015.06.27)
SNPのオープンデータを覗き見る TokyoWebmining #47 (2015.06.27)SNPのオープンデータを覗き見る TokyoWebmining #47 (2015.06.27)
SNPのオープンデータを覗き見る TokyoWebmining #47 (2015.06.27)
 
Angularを使ってみる実例いくつか (2015/4/29 GDGKobe)
Angularを使ってみる実例いくつか (2015/4/29 GDGKobe)Angularを使ってみる実例いくつか (2015/4/29 GDGKobe)
Angularを使ってみる実例いくつか (2015/4/29 GDGKobe)
 
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
 
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
 
Google Prediction APIを使う前に知っておきたい統計のはなし
Google Prediction APIを使う前に知っておきたい統計のはなしGoogle Prediction APIを使う前に知っておきたい統計のはなし
Google Prediction APIを使う前に知っておきたい統計のはなし
 
facebookアプリ開発あれこれ
facebookアプリ開発あれこれfacebookアプリ開発あれこれ
facebookアプリ開発あれこれ
 
ふぇいすぶっくをたしなむ(2011/5/13Facebook講義資料)
ふぇいすぶっくをたしなむ(2011/5/13Facebook講義資料)ふぇいすぶっくをたしなむ(2011/5/13Facebook講義資料)
ふぇいすぶっくをたしなむ(2011/5/13Facebook講義資料)
 

Dockerことはじめ的なはなし