SlideShare a Scribd company logo
1 of 52
Download to read offline
OpenStackをさらに”使う”技術
Docker/Ansible編
パート2 OpenStack&Docker活用テクニック
中井悦司
openstackOpen source software to build public and private clouds.
2015/12/10 ver1.1
2
OpenStack&Docker活用テクニック
自己紹介
 中井悦司(なかいえつじ)
– Twitter @enakai00
 日々の仕事
– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K.
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。
 昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
好評発売中!
3
OpenStack&Docker活用テクニック
Contents
 Dockerの概要
 OpenStackとDockerの組み合わせ
 ハンズオン① コンテナイメージ作成
 ハンズオン② イメージの動作確認
 ハンズオン③ イメージのアップロード
 ハンズオン④ 複数VMの連携
 ハンズオン⑤ Userdataによる自動化
 後片付け(次の演習に向けて)
 参考資料
OpenStack&Docker活用テクニック
4
4
Dockerの概要
5
OpenStack&Docker活用テクニック
Dockerが提供する基本機能
Dockerfile
① Dockerイメージを自動作成
OSイメージ
アプリケーション
ライブラリー
アプリケーション
フレームワーク
イメージの
作成手順を記載
Docker
イメージ
OS上にインストール可能な
ものはすべてイメージ化可能
② Dockerイメージを保存・公開
③ Dockerサーバーに
 イメージを配布・実行
6
OpenStack&Docker活用テクニック
Linuxコンテナの仕組み
コンテナ
物理サーバー/仮想マシン
Linuxカーネル
アプリケーション
アプリケーション
・・・
物理サーバー/仮想マシン
Linuxカーネル
・・・
コンテナ
通常のLinux環境 コンテナで分割した環境
コンテナごとに
見える環境が異なる
すべてのアプリケーション
から同じ環境が見える
 「Linuxコンテナ」は、プロセスグループごとに独立したOS環境を見せる技術
– ローカルディスクの内容(ディレクトリー内のファイル)
– ネットワーク環境(NIC、IPアドレス)
– CPU、メモリー割り当て
※ Dockerよりもずっと古くから存在する技術です。
アプリケーション
アプリケーション
7
OpenStack&Docker活用テクニック
Dockerとコンテナの関係
コンテナ
アプリケーション
ディレクトリーツリー
Linux上にマウント
ルートディレクトリー
として割り当て
 「Dockerイメージ」の実体は、コンテナに割
り当てるディスクイメージに、ネットワーク
設定などの環境情報を付与したものにすぎま
せん。
 Dockerの真の価値は、次のような「イメージ
管理機能」にあります。
– Dockerfile:
Dockerイメージを自動作成する仕組み
– Docker Hub:
Dockerイメージを共有・配布する仕組み
Dockerイメージ
8
OpenStack&Docker活用テクニック
フレームワーク
データベース
アプリケーション
フレームワーク
ライブラリー
Dockerイメージを
本番環境に展開!
 テストが実施された「確実動くアプリケーション」をそのままDockerイメージに
固めて、本番環境に自動デプロイするという運用を想像してみましょう・・・。
サービス環境へのDocker適用のメリット
9
OpenStack&Docker活用テクニック
Immutable Infrastructureとは?
– アプリケーションの設定変更、バージョンアップなどは、稼働中の本番環境を
いじるのではなく、大元のコードを変更して再テストした後に、本番環境を新
規構築してそっくり置き換えるという運用手法。
– 運用中の環境変更するリスク(想定外の不具合)を回避して、常にテスト済み
の環境を本番提供可能に。
– 同一構成のサーバーを大量に並べるスケールアウト環境で、多数のサーバーの
構成を常に同一に保ち続ける。
 Dockerイメージによる自動デプロイにより、これまで実現困難と言われていた
「Immutable Infrastructre」がついに実現可能になります。
Dockerによる自動デプロイのメリット
「Immutable Infrastructre」を実現して
構成管理を容易に!
10
OpenStack&Docker活用テクニック
 コンテナは、起動(run)、停止(stop)、再開(start)、保存(commit)、削除(rm)
などの操作が実施できます。
– コンテナ起動時は指定イメージのスナップショットを自動作成します。
– コンテナを削除すると、使用中のイメージは破棄されます。(イメージ内の保存データは失われま
す。)
コンテナのライフサイクル
保存イメージ
スナップ
ショット
コンテナ起動時に
スナップショットを作成
×
run
commit
rm
プロセス
スナップ
ショット
stop
start
保存イメージ
コンテナを停止するとプロセスが停止
(コンテナイメージは残っている)
コンテナを削除すると
コンテナイメージを破棄
コンテナイメージを複製して
保存イメージとして登録
OpenStack&Docker活用テクニック
11
11
OpenStackとDockerの組み合わせ
12
OpenStack&Docker活用テクニック
OpenStackによる自動化(オーケストレーション)手法
 Dockerが無かった時代は・・・
– 仮想マシン、ストレージ、ネットワークなどのインフラは、OpenStackで自動構成
– ゲストOS上のアプリはChef/Ansible/Puppetなどの構成管理ツールで自動構成
 ゲストOSとアプリの管理が別れているため「Immutable」な運用が困難!
– ゲストOSのテンプレートはOpenStack側で管理
– 仮想マシン起動時に動的にアプリの導入・設定を実施
「第14章 Dockerを利用したアプリケーション展開」より引用
ゲストOSの変更に起因する
アプリ導入の失敗が発生
13
OpenStack&Docker活用テクニック
OpenStackとDockerの組み合わせ手法
 Dockerを用いた運用だと・・・
– OpenStackは、「インフラ+DockerホストOS」の提供に専念
– アプリの実行環境は、Dockerイメージで作成・管理・デプロイ
 インフラとアプリの管理を分離することで「Immutable」な運用が容易に!
– ゲストOSのテンプレートはDockerの稼働環境を提供
– 事前作成済みのDockerイメージを配布してアプリを起動
「第14章 Dockerを利用したアプリケーション展開」より引用
アプリの導入・管理を
OpenStackから分離可能
14
OpenStack&Docker活用テクニック
Docker用仮想マシンの構成例
永続データ
領域
OS領域Docker導入済み
VMテンプレート
ホストLinuxの
/dataにマウント
仮想マシン
ブロックボリューム
コンテナ
(アプリケーション)
/data
コンテナ
イメージ
Dockerデーモン
ゲストOS
(ホストLinux)
/var/lib/mysql
永続データは特定の
ディレクトリに保存
Dockerで管理
OpenStackで管理
15
OpenStack&Docker活用テクニック
MySQLにアクセスするコンテナの構成例
永続データ
領域
OS領域
コンテナ
(MySQL)
/data
コンテナ
イメージ
Dockerデーモン
/var/lib/mysql
フローティングIP
OS領域
コンテナ
(node.jsアプリ)
コンテナ
イメージ
Dockerデーモン
フローティングIP フローティングIPにアクセス
フローティングIPにアクセス
接続先DBのIP/ポートは
環境変数で参照
16
OpenStack&Docker活用テクニック
コンテナ
コンテナへのネットワーク接続経路
 それぞれのコンテナには独立した仮想NICとプライベートIPアドレスが割り当てられて、ホス
トLinuxの仮想ブリッジ(docker0)に接続します。
– IPアドレスは自動で割り当てられますが、他のコンテナーからは環境変数で参照できるように設定が
可能です。
 外部ネットワークからアクセスする際は、ホストLinuxで受信したパケットをコンテナ内に転
送するように設定します。
ホストLinux
vethXX
eth0
docker0
eth0
– 外部のクライアントはホストLinuxにアクセスするので、コン
テナの存在を意識することはありません。
– OpenStack環境の場合、外部からは、仮想マシンに割り当てた
「フローティングIP」にアクセスします。
172.17.42.1
# docker run -it -p 8000:80 ...
ホストLinuxの
IPアドレスに接続
TCP 8000
TCP 80
ポート
フォワー
ディング
フローティングIP
OpenStack&Docker活用テクニック
17
17
ハンズオン① コンテナイメージ作成
18
OpenStack&Docker活用テクニック
セキュリティグループの作成
 Etherpad-Liteの利用に必要なセキュリティグループを作成します。
– 次の手順で、以下の接続を許可したセキュリティグループ「eplite」を作成します。
• SSH(TCP22番)、HTTP(TCP80番)、MySQL(TCP3306番)
– 「アクセスとセキュリティー」の画面で、「セキュリティグループの作成」から、名前
「eplite」でセキュリティグループを作成します。
– 作成された「eplite」の「ルールの管理」から管理画面を表示した後、「ルールの追加」を押して、
ルール「SSH」を追加します。
– 再度、「ルールの追加」を押して、同様に、ルール「HTTP」とルール「MYSQL」を追加します。
19
OpenStack&Docker活用テクニック
イメージ作成用インスタンスの起動
– 次を用いてインスタンスを起動します。
• インスタンス名「docker01」
• フレーバー「m1.small」
• イメージ「Docker01」
• セキュリティグループ「eplite」
– インスタンスにフローティングIPを割り当
てておきます。
 Dockerをインストール済みのVMイメージからインスタンスを起動します。
20
OpenStack&Docker活用テクニック
イメージ作成用インスタンスの起動
 起動したインスタンスにログインして、Dockerの稼働を確認します。
– ログインユーザーは「centos」を使用します。
$ ssh centos@192.168.253.18
Last login: Fri Dec 4 05:54:00 2015 from 192.168.251.36
$ sudo -i
# docker info
Containers: 1
Images: 13
Storage Driver: devicemapper
Pool Name: docker-253:1-33559298-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 2.249 GB
Data Space Total: 107.4 GB
Data Space Available: 18.01 GB
Metadata Space Used: 2.163 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.145 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.20.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 1
Total Memory: 1.797 GiB
Name: docker01
ID: APIU:AY72:ELLU:WBVM:AFRL:2NPW:KM46:5OZF:CH7K:AS5Q:5GJ3:JG7A
21
OpenStack&Docker活用テクニック
(参考)VMイメージの作成手順
 VMイメージ「Docker01」は次の手順で作成してあります。
– CentOS7のVMイメージからインスタンスを起動して、dockerのRPMパッケージを導入します。
– Dockerの設定ファイル/etc/sysconfig/dockerに下記のオプションをセットします。
– docker.serviceを起動して、ローカルのイメージ保存領域を初期化しておきます。
– docker-storage-setup.serviceをmaskで完全無効化します。(これは、Userdataの実行前に
docker.serviceを起動させるために必要となります。)
– インスタンスを停止して、インスタンスのスナップショットを取得します。
# yum -y update
# yum -y install docker
OPTIONS='--selinux-enabled --storage-opt dm.no_warn_on_loop_devices=true'
INSECURE_REGISTRY='--insecure-registry 192.168.253.13:5000'
# systemctl enable docker.service
# systemctl start docker.service
本環境に用意してあるプライベート
レジストリーを使用するための設定
# systemctl mask docker-storage-setup.service
ハンズオンでは、この作業は
実施する必要はありません。
22
OpenStack&Docker活用テクニック
MySQLのコンテナイメージ作成
 Dockerfileを用いて、MySQLのコンテナイメージを作成します。
– Dockerfile一式をダウンロードして展開します。
– MySQLイメージ作成用のDockerfileを開いて、下記の部分を編集します。
– Dockerfileを用いてコンテナイメージを作成します。
# yum -y install git
# cd ~
# git clone https://github.com/enakai00/docker_eplite
# cd docker_eplite/build_epmysql
# vi Dockerfile
FROM 192.168.253.13:5000/library/centos:6.7
MAINTAINER Docker Tarou
RUN yum -y install mysql-server
ADD init.sh /usr/local/bin/init.sh
RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 3306
CMD ["/usr/local/bin/init.sh"]
CentOS6.7のイメージを本環境の
プライベートレジストリーから取得
あなたの名前(任意)を記載します。
# docker build -t epmysql:ver1.0 ./
...(完成までしばらく待ちます)...
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
epmysql ver1.0 81700756f51a 11 minutes ago 339.3 MB
192.168.253.13:5000/library/centos 6.7 3fba1048142f 7 weeks ago 190.6 MB
23
OpenStack&Docker活用テクニック
EP-Liteのコンテナイメージ作成
 Dockerfileを用いて、EP-Liteのコンテナイメージを作成します。
– EP-Liteイメージ作成用のDockerfileを開いて、下記の部分を編集します。
– Dockerfileを用いてコンテナイメージを作成します。
# cd ~/docker_eplite/build_eplite
# vi Dockerfile
FROM 192.168.253.13:5000/library/centos:6.7
MAINTAINER Docker Tarou
ADD setup.sh /usr/local/bin/setup.sh
RUN chmod u+x /usr/local/bin/setup.sh
RUN /usr/local/bin/setup.sh
ADD settings.json /opt/etherpad/etherpad-lite/settings.json
ADD eplite.conf /etc/nginx/conf.d/eplite.conf
ADD etherpad-lite /etc/init.d/etherpad-lite
RUN chmod 755 /etc/init.d/etherpad-lite
ADD init.sh /usr/local/bin/init.sh
RUN chmod u+x /usr/local/bin/init.sh
CMD ["/usr/local/bin/init.sh"]
CentOS6.7のイメージを本環境の
プライベートレジストリーから取得
あなたの名前(任意)を記載します。
# docker build -t eplite:ver1.0 ./
...(完成までしばらく待ちます)...
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
epmysql ver1.0 81700756f51a 50 minutes ago 339.3 MB
eplite ver1.0 c48a3b84249b 11 minutes ago 729.1 MB
192.168.253.13:5000/library/centos 6.7 3fba1048142f 7 weeks ago 190.6 MB
24
OpenStack&Docker活用テクニック
(参考)Dockerfileの処理内容:MySQLイメージ
#!/bin/bash
service mysqld start
if [[ ! -f ~/.trap_in_bashrc ]]; then
cat <<EOF >>~/.bashrc
trap 'service mysqld stop; exit 0' TERM
EOF
touch ~/.trap_in_bashrc
fi
if [[ ! -d /var/lib/mysql/epdb ]]; then
mysqladmin -u root password 'password'
cat << EOF > /tmp/sql.txt
DELETE FROM mysql.user WHERE user = '' OR ( user = 'root' AND host != 'localhost' );
FLUSH PRIVILEGES;
CREATE DATABASE epdb CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON epdb.* TO 'epuser'@'%' IDENTIFIED BY 'eppasswd';
FLUSH PRIVILEGES;
SELECT user, password, host FROM mysql.user;
EOF
mysql -uroot -ppassword < /tmp/sql.txt
fi
exec /bin/bash
FROM centos:6.7
MAINTAINER Etsuji Nakai
RUN yum -y install mysql-server
ADD init.sh /usr/local/bin/init.sh
RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 3306
CMD ["/usr/local/bin/init.sh"]
Dockerfile
init.sh
MySQLをインストールして、
起動スクリプト init.sh をイメージ内にコピー
MySQLを起動
コンテナ停止時のMySQL停止処理を設定
データベース「epdb」が存在しなければ、作成して初期化する
bashを起動
init.shを起動スクリプトに指定
25
OpenStack&Docker活用テクニック
(参考)Dockerfileの処理内容:Etherpad-Liteイメージ
#!/bin/bash -x
sed -i "s/__FIP__/${FIP}/" /etc/nginx/conf.d/eplite.conf
sed -i "s/__DBIP__/${DB_PORT_3306_TCP_ADDR}/" /opt/etherpad/etherpad-lite/settings.json
service etherpad-lite start
service nginx start
if [[ ! -f ~/.trap_in_bashrc ]]; then
cat <<EOF >>~/.bashrc
trap 'service nginx stop; service etherpad-lite stop; exit 0' TERM
EOF
touch ~/.trap_in_bashrc
fi
exec /bin/bash
FROM centos:6.7
MAINTAINER Etsuji Nakai
ADD setup.sh /usr/local/bin/setup.sh
RUN chmod u+x /usr/local/bin/setup.sh
RUN /usr/local/bin/setup.sh
ADD settings.json /opt/etherpad/etherpad-lite/settings.json
ADD eplite.conf /etc/nginx/conf.d/eplite.conf
ADD etherpad-lite /etc/init.d/etherpad-lite
RUN chmod 755 /etc/init.d/etherpad-lite
ADD init.sh /usr/local/bin/init.sh
RUN chmod u+x /usr/local/bin/init.sh
CMD ["/usr/local/bin/init.sh"]
Dockerfile
各種設定ファイルの雛形とEtherpad-Lite
起動スクリプトをイメージ内にコピー
Etherpad-Liteのインストールスクリプトを
イメージ内にコピーして実行
コンテナ停止時の
アプリケーション停止処理を設定
Etherpad-Liteとnginxを起動
bashを起動
init.shをイメージ内にコピーして
起動スクリプトに指定
init.sh
各種設定ファイル内の
パラメータを環境変数から設定
FIP : Etherpad-LiteのIPアドレス
DB_PORT_3306_TCP_ADDR : MySQLのIPアドレス
OpenStack&Docker活用テクニック
26
OpenStack&Docker活用テクニック 26
ハンズオン② イメージの動作確認
27
OpenStack&Docker活用テクニック
動作確認方法
 先ほどコンテナイメージを作成したホストLinux上で、MySQLとEP-Liteのそれぞれのコン
テナをまとめて起動して動作確認します。
– EP-LiteにはフローティングIPで接続します。
– EP-LiteからMySQLは、ホストLinux上の内部ネットワーク経由で接続します。
– MySQLのテーブル領域は、コンテナイメージ内に用意します。(永続保存はしません。)
コンテナ
ホストLinux
TCP 80
TCP 80
フローティングIP
EP-Lite
コンテナ
MySQL
TCP 3306
28
OpenStack&Docker活用テクニック
MySQLをコンテナで起動
 MySQLのコンテナを起動します。
– 次のコマンドでローカルイメージを指定してコンテナを起動します。
– 次のコマンドでコンテナの稼動状態を確認します。
# docker run -itd --name epmysql --expose 3306 epmysql:ver1.0
同じホストのコンテナから
3306番ポートへの接続を許可
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
67fb2201191a epmysql:ver1.0 "/usr/local/bin/init." 7 seconds ago Up 5 seconds
3306/tcp epmysql
# docker top epmysql | unexpand -t20
UID PID PPID C STIME TTY TIME CMD
root 25818 3557 0 08:38 pts/1 00:00:00 /bin/bash
root 25915 25818 0 08:38 pts/1 00:00:00 /bin/sh
/usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-
file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
27 26017 25915 0 08:38 pts/1 00:00:00 /usr/libexec/mysqld
--basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-
file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
29
OpenStack&Docker活用テクニック
EP-Liteをコンテナで起動
 EP-LiteLのコンテナを起動します。
– 次のコマンドでローカルイメージを指定してコンテナを起動します。
• 「FIP=192.168.253.17」の部分は、このインスタンスのフローティングIPを指定します。
– 次のコマンドでコンテナの稼動状態を確認します。
# docker run -itd --name eplite -p 80:80 -e FIP=192.168.253.17 --link epmysql:db eplite:ver1.0
ホストの80番ポートへのアクセスを
コンテナ内の80番ポートに転送
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
f1cb2952c0d0 eplite:ver1.0 "/usr/local/bin/init." 6 seconds ago Up 4 seconds
0.0.0.0:80->80/tcp eplite
67fb2201191a epmysql:ver1.0 "/usr/local/bin/init." 13 minutes ago Up 13 minutes
3306/tcp epmysql
# docker top eplite | unexpand -t20
UID PID PPID C STIME TTY TIME CMD
root 26183 3557 0 08:52 pts/2 00:00:00 /bin/bash
500 26216 26183 18 08:52 ? 00:00:02 /usr/bin/node
node_modules/ep_etherpad-lite/node/server.js
root 26238 26183 0 08:52 ? 00:00:00 nginx: master
process /usr/sbin/nginx -c /etc/nginx/nginx.conf
499 26241 26238 0 08:52 ? 00:00:00 nginx: worker process
nginxの設定に必要な環境変数
(外部からのアクセス先IP)を指定
MySQLのコンテナのIPアドレスを
環境変数に設定(次ページ参照)
30
OpenStack&Docker活用テクニック
(参考)コンテナ起動時の環境変数の設定
 EP-Liteのコンテナでは、コンテナ起動時に実行するスクリプト「init.sh」の中で、環境変
数を使って、次の2つのパラメーターを設定しています。
– FIP : nginx の設定ファイルに、外部クライントがアクセスしてくるIPアドレスを記載
– DB_PORT_3306_TCP_ADDR : node.jsの設定ファイルに、MySQLの接続先IPアドレスを記載
 これらの環境変数は、コンテナ起動時の次のオプションで設定しています。
– 「-e FIP=192.168.253.17」: 環境変数を明示的に指定するオプションです。
– 「--link epmysql:db」: コンテナ「epmysql」のexpose指定されたポート(今の場合は、3306)に
到達可能な内部IPアドレスを環境変数「DB_PORT_3306_TCP_ADDR」に自動設定します。
sed -i "s/__FIP__/${FIP}/" /etc/nginx/conf.d/eplite.conf
sed -i "s/__DBIP__/${DB_PORT_3306_TCP_ADDR}/" /opt/etherpad/etherpad-lite/settings.json
31
OpenStack&Docker活用テクニック
動作確認とコンテナの停止
 WebブラウザーからフローティングIPに接続すると、Etherpad-Liteが利用できます。
 次のコマンドでコンテナを停止・破棄しておきます。
# docker stop eplite epmysql
# docker rm eplite epmysql
OpenStack&Docker活用テクニック
32
OpenStack&Docker活用テクニック 32
ハンズオン③ イメージのアップロード
33
OpenStack&Docker活用テクニック
プライベートレジストリーへのアップロード
 先ほど作成したコンテナイメージを環境内に用意してあるプライベートレジストリーに
アップロードします。
– アップロードするイメージに対して、レジストリーの「IPアドレス:ポート番号」を付与したイメー
ジ名を付けます。演習環境では、「192.168.253.13:5000」になります。
• 「student-xxx」の部分は、各自のユーザー番号(「student-001」など)を指定します。
– レジストリー情報を付与したイメージ名を指定してアップロードします。
# docker tag epmysql:ver1.0 192.168.253.13:5000/student-xxx/epmysql:ver1.0
# docker tag eplite:ver1.0 192.168.253.13:5000/student-xxx/eplite:ver1.0
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
192.168.253.13:5000/student-xxx/epmysql ver1.0 81700756f51a About an hour ago 339.3 MB
epmysql ver1.0 81700756f51a About an hour ago 339.3 MB
192.168.253.13:5000/student-xxx/eplite ver1.0 c48a3b84249b 4 hours ago 729.1 MB
eplite ver1.0 c48a3b84249b 4 hours ago 729.1 MB
docker.io/centos 6.7 3fba1048142f 7 weeks ago 190.6 MB
# docker push 192.168.253.13:5000/student-xxx/epmysql
# docker push 192.168.253.13:5000/student-xxx/eplite
34
OpenStack&Docker活用テクニック
(参考)プライベートレジストリーの検索
 プライベートレジストリーの検索やアップロードイメージの削除は、次のコマンドで行い
ます。
– イメージの検索、および、タグを確認する例です。
– アップロードしたイメージを削除する例です。(誤って実行しないように注意してください。)
# docker search 192.168.253.13:5000/student-xxx
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
192.168.253.13 192.168.253.13:5000/student-xxx/eplite 0
192.168.253.13 192.168.253.13:5000/student-xxx/epmysql 0
# curl -s http://192.168.253.13:5000/v1/repositories/student-xxx/eplite/tags | python -mjson.tool
{
"ver1.0": "c48a3b84249b6f7a4e160bb880da1480ae5e9b0e1c2464a78c4b8910199894a9"
}
# curl -LX DELETE http://192.168.253.13:5000/v1/repositories/student-xxx/epmysql
OpenStack&Docker活用テクニック
35
OpenStack&Docker活用テクニック 35
ハンズオン④ 複数VMの連携
36
OpenStack&Docker活用テクニック
構築する環境の全体像
永続データ
領域
OS領域
コンテナ
(MySQL)
/data
コンテナ
イメージ
Dockerデーモン
/var/lib/mysql
フローティングIP
OS領域
コンテナ
(EP-Lite)
コンテナ
イメージ
Dockerデーモン
フローティングIP フローティングIPにアクセス
フローティングIPにアクセス
37
OpenStack&Docker活用テクニック
イメージ作成用インスタンスの起動
– 次を用いてインスタンスを起動します。
• インスタンス名「eplite」
• フレーバー「m1.small」
• イメージ「Docker01」
• インスタンス数「2」
• セキュリティグループ「eplite」
– それぞれのインスタンスにフローティング
IPを割り当てておきます。
– 1GBのCinderボリュームを作成して、1つ
目のインスタンス「eplite-1」に接続しま
す。
 Dockerをインストール済みのイメージからインスタンスを2個起動します。
38
OpenStack&Docker活用テクニック
MySQLコンテナの起動
 1つ目のインスタンス「eplite-1」にログインして、Cinderボリュームをマウントします。
– ログインユーザーは「centos」を使用します。
• 最後のchconコマンドは、SELinuxでコンテナ内部からのアクセスを許可するために必要です。
 プライベートレジストリーのイメージを指定して、コンテナを起動します。
• 「student-xxx」の部分は、各自のユーザー番号(「student-001」など)を指定します。
– 各オプションの意味は次のとおりです。
• -p 3306:3306 : ホストの3306番ポートへのアクセスをコンテナ内の3306番ポートに転送
• -v /data:/var/lib/mysql : ホストの /data をコンテナ内の /var/lib/mysql にマッピング
$ ssh centos@192.168.253.18
Last login: Fri Dec 4 05:54:00 2015 from 192.168.251.36
$ sudo -i
# mkfs.xfs /dev/vdb
# mkdir /data
# mount /dev/vdb /data
# chcon -Rt svirt_sandbox_file_t /data
# docker run -itd --name epmysql -p 3306:3306 -v /data:/var/lib/mysql 
192.168.253.13:5000/student-xxx/epmysql:ver1.0
39
OpenStack&Docker活用テクニック
MySQLコンテナの起動
 コンテナの稼動状態を確認します。
– コンテナ内でmysqldが稼働しています。
– ホストの /data 以下にMySQLのテーブルデータが保存されています。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
5c889e0ca142 192.168.253.13:5000/enakai/epmysql:ver1.0 "/usr/local/bin/init." 6 minutes ago
Up 6 minutes 0.0.0.0:3306->3306/tcp epmysql
# docker top epmysql | unexpand -t20
UID PID PPID C STIME TTY TIME CMD
root 19164 3590 0 10:04 pts/1 00:00:00 /bin/bash
root 19260 19164 0 10:04 pts/1 00:00:00 /bin/sh
/usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-
file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
27 19362 19260 0 10:04 pts/1 00:00:00 /usr/libexec/mysqld
--basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-
file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
# ls /data
epdb ib_logfile0 ib_logfile1 ibdata1 mysql mysql.sock test
40
OpenStack&Docker活用テクニック
EP-Liteコンテナの起動
 2つ目のインスタンス「eplite-2」にログインして、コンテナを起動します。
– ログインユーザーは「centos」を使用します。
• 「student-xxx」の部分は、各自のユーザー番号(「student-001」など)を指定します。
– 各オプションの意味は次のとおりです。
• -p 80:80 : ホストの80番ポートへのアクセスをコンテナ内の80番ポートに転送
• -e FIP=192.168.253.19 : 外部からアクセスするIPアドレス(つまり、このインスタンスのフ
ローティングIP)を指定します。環境に応じて、値を変更してください。
• -e DB_PORT_3306_TCP_ADDR=192.168.253.18 : MySQLに接続するIPアドレス(つまり、1
つ目のインスタンスのフローティングIP)を指定します。環境に応じて、値を変更してくださ
い。
$ ssh centos@192.168.253.18
Last login: Fri Dec 4 05:54:00 2015 from 192.168.251.36
$ sudo -i
# docker run -itd -p 80:80 
-e FIP=192.168.253.19 
-e DB_PORT_3306_TCP_ADDR=192.168.253.18 
--name eplite 192.168.253.13:5000/student-xxx/eplite:ver1.0
41
OpenStack&Docker活用テクニック
EP-Liteコンテナの起動
 コンテナの稼動状態を確認します。
– コンテナ内でnginxとnode.jsが稼働しています。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
279515d8f5a3 192.168.253.13:5000/enakai/eplite:ver1.0 "/usr/local/bin/init." 5 seconds ago
Up 3 seconds 0.0.0.0:80->80/tcp eplite
# docker top eplite | unexpand -t20
UID PID PPID C STIME TTY TIME CMD
root 19046 3590 0 10:19 pts/1 00:00:00 /bin/bash
500 19078 19046 9 10:19 ? 00:00:01 /usr/bin/node
node_modules/ep_etherpad-lite/node/server.js
root 19100 19046 0 10:19 ? 00:00:00 nginx: master
process /usr/sbin/nginx -c /etc/nginx/nginx.conf
499 19103 19100 0 10:19 ? 00:00:00 nginx: worker
process
42
OpenStack&Docker活用テクニック
動作確認と仮想マシンインスタンスの停止
 Webブラウザーから2つ目のインスタンスのフローティングIPに接続すると、Etherpad-
Liteが利用できます。
 仮想マシンインスタンス「eplite-1」「eplite-2」は、ここで削除しておきます。
OpenStack&Docker活用テクニック
43
OpenStack&Docker活用テクニック 43
ハンズオン⑤ Userdataによる自動化
44
OpenStack&Docker活用テクニック
Userdata(カスタマイズスクリプト)による自動化
 インスタンス起動時にUserdata(カスタマイズスクリプト)として、シェルスクリプトを
受け渡すと、ゲストOS起動後に自動的に実行されます。
– ここでは、dockerコマンドでMySQLとEtherpad-Liteのコンテナを起動して、インスタンスの起動
とアプリケーションの実行をまとめて自動化します。
コンテナイメージ
カスタマイズスクリプト
コンテナ
VMインスタンス
TCP 80
TCP 80
フローティングIP
EP-Lite
コンテナ
MySQL
TCP 3306
レジストリー
Etherpad-Lite
利用者
Docker
① Dockerインストール済みの
 イメージからVMを起動
② カスタマイズスクリプトで
  Dockerコマンドを実行
③ アプリケーションイメージを  
 ダウンロードしてコンテナで起動
45
OpenStack&Docker活用テクニック
カスタマイズスクリプトを用いてインスタンスを起動
 カスタマイズスクリプトを用意します。
– 未使用のフローティングIPを確認して、下記のスクリプトを用意します。
• 「student-xxx」の部分は、各自のユーザー番号(「student-001」など)を指定します。
• 「FIP=192.168.200.105」の部分は、確認したフローティングIPを指定します。
#!/bin/sh -x
docker run -itd --name epmysql --expose 3306 
192.168.253.13:5000/student-xxx/epmysql:ver1.0
sleep 5
docker run -itd --name eplite -p 80:80 
-e FIP=192.168.200.105 --link epmysql:db 
192.168.253.13:5000/student-xxx/eplite:ver1.0
 カスタマイズスクリプトを用いて、イン
スタンスを起動します。
– 次を用いてインスタンスを起動します。
• インスタンス名「eplite」
• フレーバー「m1.small」
• イメージ「Docker01」
• セキュリティグループ「eplite」
• 「作成後」のタブで、カスタマイズス
クリプトに用意したスクリプトを入力
46
OpenStack&Docker活用テクニック
カスタマイズスクリプトの実行ログ確認
 インスタンスのコンソールログから、cloud-intの処理が完了するのを確認します。
– コンテナイメージのダウンロードのログが出力されはじめて、数分後に下記のメッセージが出力さ
れますので、それまでしばらく待ちます。
ec2: #############################################################
ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
ec2: 256 e0:20:2b:57:af:a5:85:e4:78:e4:a6:10:8a:fd:20:78 (ECDSA)
ec2: 256 6d:15:2f:b8:be:d4:f5:d7:01:f2:7e:99:d6:33:e1:c5 (ED25519)
ec2: 2048 74:67:47:2d:06:65:3f:66:66:5d:f9:78:9c:d3:68:78 (RSA)
ec2: -----END SSH HOST KEY FINGERPRINTS-----
ec2: #############################################################
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBE4CSNSsMHMLb6xqSHOJlfcKhCa1Yz2
peSrXqINfivOvn31JxynqNQuXBiWM5BI3StZI/5H1kWAMU6UyptgrrwM=
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHKGd6Z1pEmcpjNuoX3+d25JpQ0+P9AdxbvO+ZnT7cqy
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDMqdEBPxn+pRwo3YtTYn9Nz1PwuQsrqfBJZ7ZFrujqEAQsOeavuUp
UnTS1RjJkV1X7Rc0rSCmDnYOy4PLsqbZaD3kBwUtXtzORtrLbyC7nPKb2Iqx+0/mNwl3xzYg2vNZpyE4CSL
koVShBInPjjaJD2515dfoNEM0+4Yy9cugK7WThchV7q6sz8w7EXWxLebu/ipLCoSlOBpsH1KN4zPBl0foI8
GlH3kuYSUCAS0JhLlEV776MvvFfM12fefNQ+5VHzjVlAdSjtI9OaPSff4KjJ8bAcLdmGMzSj3Ou0HjpuSGy
J+crKjN/y2/twOxBtwL3GNCoUQViEpf2s0AJJBV3
-----END SSH HOST KEY KEYS-----
cloud-init[3477]: Cloud-init v. 0.7.5 finished at Sun, 06 Dec 2015 10:39:42 +0000.
Datasource DataSourceOpenStack [net,ver=2]. Up 392.05 seconds
47
OpenStack&Docker活用テクニック
動作確認
 カスタマイズスクリプトに記載したフローティングIPをインスタンスに割り当てて、Web
ブラウザーからフローティングIPに接続すると、Etherpad-Liteが利用できます。
OpenStack&Docker活用テクニック
48
OpenStack&Docker活用テクニック 48
後片付け(次の演習に向けて)
49
OpenStack&Docker活用テクニック
仮想マシンインスタンスの削除とフローティングIPの解放
 不要な仮想マシンインスタンスを
削除して、未使用のフローティン
グIPを開放しておきます。
– インスタンスの管理画面で「step-
server」以外のインスタンスをすべ
て削除します。
– アクセスとセキュリティーの管理画
面で「Floating IP」のタブから、未
使用(停止中)のフローティングIP
をすべて解放します。
OpenStack&Docker活用テクニック
50
OpenStack&Docker活用テクニック 50
参考資料
51
OpenStack&Docker活用テクニック
参考資料
 Docker実践入門 ― Linuxコンテナ技術の基礎から応用まで
– 中井悦司(著)技術評論社
 OpenStackクラウドインテグレーション ― オープンソースクラウドによるサービス構築入門
– 日本OpenStackユーザ会(著)翔泳社
 OpenStack上でRHEL7のDockerを使う手順
– http://enakai00.hatenablog.com/entry/2015/10/06/194542
 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
– http://www.slideshare.net/enakai/docker-is-not-container-dockerpaas
 Dockerイメージ管理の内部構造
– http://www.slideshare.net/enakai/docker-43975886
openstackOpen source software to build public and private clouds.

More Related Content

What's hot

エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造Etsuji Nakai
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineEtsuji Nakai
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門Etsuji Nakai
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1Etsuji Nakai
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1Etsuji Nakai
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Etsuji Nakai
 
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版VirtualTech Japan Inc.
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1Etsuji Nakai
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2Etsuji Nakai
 
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたVirtualTech Japan Inc.
 
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版VirtualTech Japan Inc.
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月VirtualTech Japan Inc.
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1Etsuji Nakai
 
OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習Etsuji Nakai
 
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016VirtualTech Japan Inc.
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with AnsibleHideki Saito
 
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックRed Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックEtsuji Nakai
 
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたTakashi Umeno
 
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)VirtualTech Japan Inc.
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002Takeshi Kuramochi
 

What's hot (20)

エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介
 
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
 
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
 
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
 
OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習
 
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with Ansible
 
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックRed Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
 
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみた
 
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
 

Similar to OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック

Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Masahito Zembutsu
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコムTomoyaTakegoshi
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Etsuji Nakai
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念Masahito Zembutsu
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門hiro nemu
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術Etsuji Nakai
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と DockerのキホンNaoki Nagazumi
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Yuichi Ito
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 
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入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINARVirtualTech Japan Inc.
 
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンJAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンRyo Nakamaru
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftEtsuji Nakai
 

Similar to OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック (20)

Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
Jenkins with Docker
Jenkins with DockerJenkins with Docker
Jenkins with Docker
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
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入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
 
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンJAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオン
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
 

More from Etsuji Nakai

「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Etsuji Nakai
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowEtsuji Nakai
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスEtsuji Nakai
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモEtsuji Nakai
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsEtsuji Nakai
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English LearningEtsuji Nakai
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2Etsuji Nakai
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersEtsuji Nakai
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterEtsuji Nakai
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginnersEtsuji Nakai
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQNEtsuji Nakai
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかEtsuji Nakai
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜Etsuji Nakai
 
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)Etsuji Nakai
 

More from Etsuji Nakai (20)

PRML11.2-11.3
PRML11.2-11.3PRML11.2-11.3
PRML11.2-11.3
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービス
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English Learning
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application Developers
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with Jupyter
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginners
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQN
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきか
 
PRML7.2
PRML7.2PRML7.2
PRML7.2
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
 
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
 

OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック