Docker 入門
NaITE #13
2016.4.27
自己紹介
名前:角田 俊(つのだ しゅん)
コミュニティ:NaITE など
Twitter:いむてん@imtnd
勤務先:通信系製造業
業務:ソフトウェア開発 5年目
本セッションの目的
Dockerをなんとなく理解する
Dockerを最低限使えるようになる
Docker
Dockerについて
Dockerとは、仮想化技術の一つ
コンテナという単位で仮想化することにより
、OSなどに依存しないシステムを提供
Dockerについて
Virtual Machine container
https://www.docker.com/what-docker
Dockerのメリット
VMと違い軽量であり、起動、終了が高速で
ある
CIなどで使い捨てながらクリーンな環境でテ
ストすることができる
パッケージイメージが共有でき、すぐに使用
する仕組みがある
Docker Toolbox
Docker Toolbox
Dockerに関連するツールがパッケージ化され
たもの
Docker Engine
Docker Machine
Docker Compose
Kitematic
Dockerのインストール方
法
Cent OS 7 以上
yum でインストール可能
Ubuntu 15.04 以上
パッケージを追加して、apt-getでインスト
ール可能
https://docs.docker.com/engine/installation/linux/ubuntulinux/
Dockerのインストール方
法
コンテナ専用OS
https://coreos.com/using-coreos/containers/
Dockerのインストール方
法
コンテナ専用OS
CoreOS
Project Atomic
Red Hat Enterprise Linux Atomic Host
Snappy Ubuntu Core
Dockerのインストール方
法
Windows、Mac OSの場合
Virtual Box
Docker Toolbox
※ 2016/04/27現在のメジャーな方法
Dockerのインストール方
法
MacOSとWindowsのネイティブ仮想化を用いた
Docker純正ツール「Docker for Mac/Windows」登場、
VirtualBoxは不要に
http://www.publickey1.jp/blog/16/docker_for_macwindows.html
Windows、Mac OSで何も考えないでインス
トールすると、VIrtual Box上に”default”とい
う仮想マシンができている
Linuxの場合はコマンドで、Docker用の仮想
マシンを作成する
Dockerのインストール方
法
Docker Machine
Docker Machine
Docker ホストをマネジメントするツール
Docker ホストの作成
Docker ホストの起動
Docker ホストの終了 など
Docker Machineコマンド
Docker MachineをVirtual Box上に作成
Docker Machineの削除
$docker-machine create —driver virtualbox vmD(仮想マシン名)
$docker-machine rm vmD(仮想マシン名)
Docker Machineコマンド
Dockerホストの起動
Dockerホストの終了
Dockerホストの一覧表示
$docker-machine start default(仮想マシン名)
$docker-machine stop default(仮想マシン名)
$docker-machine ls
Docker Machineコマンド
DockerホストのIPアドレス確認
Dockerホストへのログイン
Dockerホストの環境変数確認
$docker-machine ip default(仮想マシン名)
$docker-machine ssh default(仮想マシン名)
$docker-machine env default(仮想マシン名)
Dockerコマンド
Dockerのイメージの取得
$docker pull centos:centos6
リポジトリ名 タグ
Dockerコマンド
$docker pull centos:centos6
Dockerレジストリに
公開された
Dockerイメージ
pull
Dockerレジストリ
Dockerレジストリとは、Dockerのイメージを
管理しておく場所
公式で用意しているDockerレジストリは
Docker Hub
https://hub.docker.com/
Dockerコマンド
Docker イメージの一覧表示
Docker イメージの削除
$docker images
$docker rmi centos:centos6(リポジトリ名:タグ)
Dockerコマンド
Cent OSのDockerイメージを動かしてみる
$docker run -t -i —name centos centos:centos6 /bin/bash
コンテナ名を付けられる
Dockerコマンド
Docker コンテナの一覧表示
Docker コンテナの削除
$docker ps -a
$docker rm centos6(コンテナ名)
Dockerコマンド
nginx(エンジンエックス)のイメージ取得
ポートに割り付けて起動
$docker pull nginx:latest
$docker run -d -p 8080:80 —name nginx nginx:latest
Webサーバを動かしてみる
Dockerコマンド
Docker コンテナの終了
Docker コンテナの起動
$docker stop nginx(コンテナ名)
$docker start nginx(コンテナ名)
Dockerfile
Dockerfileとは、Dockerイメージを作成する
元となるファイル
makeファイルのような物で、一コマンドで
Dockerイメージが作成出来る
簡単に記述でき、見た目も理解しやすいのが
特徴
Dockerfile
Dockerfileサンプル
$git clone https://github.com/imtnd/httpd.git
httpd
+- Dockerfile
+- index.html
※ Gitがない人はブラウザから直接アクセス
Dockerfile
httpdディレクトリに移動
$cd httpd
Dockerfileを元にDockerイメージの作成
$docker build -t httpd ./
Dockerfile
コンテナの起動
$docker run -d -p 80:80 httpd(リポジトリ名)
ブラウザでホストのIPアドレスにアクセスし
てみると、”hello docker”と見える
Dockerfile
FROM	 centos:centos6
MAINTAINER	 imtnd
RUN	 yum	 install	 -y	 httpd
ADD	 index.html	 /var/www/html/index.html
EXPOSE	 80/tcp
CMD	 ["/usr/sbin/httpd","-D","FOREGROUND"]
Dockerfile
FROM	 centos:centos6
MAINTAINER	 imtnd
RUN	 yum	 install	 -y	 httpd
ADD	 index.html	 /var/www/html/index.html
EXPOSE	 80/tcp
CMD	 ["/usr/sbin/httpd","-D","FOREGROUND"]
ベースのDockerイメージ
Dockerfile
FROM	 centos:centos6
MAINTAINER	 imtnd
RUN	 yum	 install	 -y	 httpd
ADD	 index.html	 /var/www/html/index.html
EXPOSE	 80/tcp
CMD	 ["/usr/sbin/httpd","-D","FOREGROUND"]
Dockerイメージ作成者
Dockerfile
FROM	 centos:centos6
MAINTAINER	 imtnd
RUN	 yum	 install	 -y	 httpd
ADD	 index.html	 /var/www/html/index.html
EXPOSE	 80/tcp
CMD	 ["/usr/sbin/httpd","-D","FOREGROUND"]
コマンドの実行指示
Dockerfile
FROM	 centos:centos6
MAINTAINER	 imtnd
RUN	 yum	 install	 -y	 httpd
ADD	 index.html	 /var/www/html/index.html
EXPOSE	 80/tcp
CMD	 ["/usr/sbin/httpd","-D","FOREGROUND"]
ファイルの追加指示
Dockerfile
FROM	 centos:centos6
MAINTAINER	 imtnd
RUN	 yum	 install	 -y	 httpd
ADD	 index.html	 /var/www/html/index.html
EXPOSE	 80/tcp
CMD	 ["/usr/sbin/httpd","-D","FOREGROUND"]
ポート番号の登録
Dockerfile
FROM	 centos:centos6
MAINTAINER	 imtnd
RUN	 yum	 install	 -y	 httpd
ADD	 index.html	 /var/www/html/index.html
EXPOSE	 80/tcp
CMD	 ["/usr/sbin/httpd","-D","FOREGROUND"]
コンテナ起動時の
実行コマンド指示
Docker Compose
Docker Compose
コンテナはサービス単位で構築していくと管
理が楽になる(アプリ、DBなど)
サービスは複数のコンテナによって構築され
ることになるため一括で管理する必要がある
複数のコンテンを管理出来る仕組みが、
Docker Compose
Docker Compose
Docker Composeは、YMLファイルでコンテナを管理
する
YMLファイルサンプル(TestLinkというサービスが動く)
$git clone https://github.com/imtnd/testlink_yml.git
※ Gitがない人はブラウザから直接アクセス
Docker Compose
YMLファイルを元にサービスを起動
コンテナの状態確認
$docker-compose up -d
$docker-compose ps
下記アドレスにブラウザからアクセルできる
http://xxx.xxx.xxx.xxx(ホストのIPアドレス)/testlink/
初期設定などは下記サイトを参照
http://qiita.com/imtnd/items/a58a707db08c3710d963
Docker Compose
サービスの停止
$docker-compose stop
一コマンドで、MySQL、TestLinkのサービス
のコンテナが起動してる。
busyboxというのは、データを永続化するた
めのコンテナ
Docker Compose
Docker hubにあるイメージを使用すると面倒
くさいインフラ構築をしないで、環境をセッ
トアップすることができる。
興味を持ったツールを簡単に使用してみたい
時などに最適
(ツール名) docker compose
その他ツール
Docker Swarm
Docker Registory
Kitematic
コンテナ関連サービス
tutum Kubernates
最後に
Docker はまだまだまだまだ発展途中なツー
ルです。
このスライドの情報も過去の物になっていき
ます。
発展途中であるが故に、最新動向を追ってみ
ると面白いと思います。
Let’s Run Container

Docker入門