Docker hands on nifty sakura jul19

Post on 24-May-2015

3.117 views 2 download

description

Part1 環境構築編 [p.1~] Part2 鯨でもわかる Docker 入門 [p.54~] クラウドを渡り歩け! さくら×ニフティ 合同ハンズオン勉強会!! Dockerを利用したクラウド間移行のポテンシャル?運用に変化は?みんなで考えよう!! #ncstudy 2014年7月19日(土) 10:00 – 17:00 会場:ニフティ株式会社 セミナールーム (東京新宿) July 19, 2014, @ Nifty Shinjyuku, Tokyo, Japan

Transcript of Docker hands on nifty sakura jul19

クラウドを渡り歩け! さくら×ニフティ 合同ハンズオン勉強会!! Dockerを利用したクラウド間移行のポテンシャル?運用に変化は?みんなで考えよう!! #ncstudy 2014年7月19日(土) 10:00 – 17:00 会場:ニフティ株式会社 セミナールーム (東京新宿)

今日のハンズオン

北海道 石狩第一ゾーン

Dockerhub https://hub.docker.com

東日本 east-1 リージョン

技術検証 Creationline, Inc.

環境構築資料 Preparation

クラウド準備

1. さくらのクラウド編 10:40 – 11:10 2. ニフティクラウド編 11:10 – 11:40 3. SSH鍵の相互認証 11:40 – 11:50

準備段階として、クラウド上でマシンの起動を

試みます。更に、自分の PC から各クラウドに

リモート接続を行い、動作を確認します。

更に、相互のクラウド環境で、SSH 鍵を交換し

互いに行き来できるようにします。

準備1/3 さくらのクラウド編

さくらのクラウド

http://cloud.sakura.ad.jp/ 運営:さくらインターネット株式会社 http://www.sakura.ad.jp/

料金体系はサーバ料金のみで、データ転送料なし 1台1,900円から お使いのVPSから1クリックでクラウドに移行可能

「さくらのクラウド」でCoreOS リリース

7月18日よりDocker専用OS、「CoreOS」に対応いたしました。 無料クーポンを配りますので、今日勉強したことをCoreOSを使って復習しましょう。

さくらのクラウド手順(所要30分)

環境構築手順 ➡ 1. コントロールパネルにアクセス ➡ 2. サーバの起動 ➡ 3. SSH ログインと鍵ペア作成

[1/3] さくらのコントロールパネルにアクセス

https://secure.sakura.ad.jp/cloud/

お配りした、紙に書かれている「アカウント」「会員ID」「パスワード」を記入してください。

記入については

「アカウント名」@「会員ID」 「パスワード」 といった順番です。

[1/3] さくらのコントロールパネルにアクセス

https://secure.sakura.ad.jp/cloud/

このように、 ログイン出来る事を確認します。

[2/3] サーバの起動

【サーバ】→【追加】

[2/3] サーバの起動

所定項目を入力します

名前:画面に表示する管理上の名称

[2/3] サーバの起動

所定項目を入力します

アーカイブ: 【CentOS 6.5 64bit (基本セット)】を選択

ホスト名:内部で使用する名称

パスワード:rootのパスワードです ※ 実際には公開鍵認証も可能ですが、 今回はまず、パスワード指定します。 最後に【作成】を押します

[2/3] サーバの起動

もう一息です

【作成】を押します

あとは作業が進行するのを待ちます

[2/3] サーバの起動

できました!

完了が表示されたら、ここを押します

このようにサーバ情報が表示されます

[2/3] サーバの起動

仕上げに【電源操作】→【起動】

まだ準備が終わった段階 ログインのためには、起動が必要です

【実行】を押します

[2/3] サーバの起動

起動が完了しました

【閉じる】を押します

[3/3] SSHログインと鍵ペア作成

接続先IPアドレスを確認します

【 NIC 】を押します

【 IPv4 】アドレスを控えます

[3/3] SSHログインと鍵ペア作成

TeraTerm 等でログインします

接続先は、先ほど確認した 【IPv4 アドレス】です

[3/3] SSHログインと鍵ペア作成

TeraTerm 等でログインします

接続先は、先ほど確認した 【IPv4 アドレス】です

[3/3] SSHログインと鍵ペア作成

TeraTerm 等でログインします

初回接続時なので警告が出ます

[3/3] SSHログインと鍵ペア作成

TeraTerm 等でログインします

ユーザ名【 root 】と パスワードを入力

【 OK 】を押します

[3/3] SSHログインと鍵ペア作成

root でログインできました

ログインできない場合は、接続先の IP アドレスが正しいかどうか確認します。IPアドレスが正常な場合は、パスワードが正しいかどうかや、パスワード入力に時間がかかりタイムアウトしていないか確認します。

[3/3] SSHログインと鍵ペア作成

ssh-keygen で鍵ペアを作成します

【 ssh-keygen 】コマンドを使い、鍵ペアを作成します。パスフレーズの指定も可能ですが、ここでは作業を分かりやすくするため、空白で作成します。

途中の問い合わせは「すべてエンター」を押します。

[3/3] SSHログインと鍵ペア作成

公開鍵と秘密鍵を控えます

【 cat ~/.ssh/id_rsa.pub 】で表示される

内容が公開鍵です。 この次で取得する秘密鍵が手元にあれば、 接続先のリモートに公開鍵を置くことで、 SSH 接続時にパスワードではない認証を行う事ができます。この接続方式が、 SSH 公開鍵認証であり、クラウドの接続では比較的一般に見受けられます

【 cat ~/.ssh/id_rsa 】で表示される内容が秘密鍵です 。取り扱いには細心の注意を払う必要があります。サーバ上に置く場合は、パーミッションは 600(rw-------)にするなど、配慮が必要です

[3/3] SSHログインと鍵ペア作成

SSH の鍵認証(RSA方式)を試しましょう ➡ 事前 sshd 準備

• # vi /etc/ssh/sshd_config 47 #RSAAuthentication yes 47 RSAAuthentication yes

• # service sshd restart

➡ 公開鍵の設置 • # cat .ssh/id_rsa.pub > .ssh/authorized_keys

➡ SSH ログインを試みる • [root@sakura1 ~]# ssh -l root localhost • Last login: Tue Jul 15 13:11:18 2014 from xxx.jp • [root@sakura1 ~]#

自分で自分に対してログインします

初期状態では鍵認証を行えません。コメントを削除し、設定ファイルを書き換えたら、sshd の restart を行います

今回は「authorized_keys」に自分自身の公開鍵を置きました。同様に、接続したいリモートホスト上に authorized_keysを置くことで、認証が通るようになります

準備2/3 ニフティクラウド編

ニフティクラウド

http://cloud.nifty.com/ 運営:ニフティ株式会社 http://www.nifty.com/

ニフティクラウド手順(所要30分)

環境構築手順 ➡ 1. コントロールパネルにアクセス ➡ 2. サーバの起動 ➡ 3. SSH ログイン

[1/3] ニフティクラウドにアクセス

https://pa.mon.cloud.nifty.com/

【ログインID】と【パスワード】を入力し、【コントロールパネルにログイン】を押します

https://pa.mon.cloud.nifty.com/

[1/3] ニフティクラウドにアクセス

このようにログインできることを確認します

サーバ作成

[2/3] サーバの起動

左メニューの【サーバー】から 【サーバー作成】を選びます

ゾーン選択

[2/3] サーバの起動

ゾーンは【west-11】を選び、 【イメージ選択へ】をクリックします

ゾーン選択

[2/3] サーバの起動

ゾーンは【west-11】を選び、 【イメージ選択へ】をクリックします

イメージ選択

[2/3] サーバの起動

“Ubuntu 12.04 64bit Plain”の 【選択】をクリックします

サーバ名の入力

[2/3] サーバの起動

任意のサーバ名を入力

【タイプ・料金設定へ】をクリックします

タイプと料金設定

[2/3] サーバの起動

スペックは【mini】

料金コースは【従量】

【アカウント設定へ】をクリックします

アカウント設定

[2/3] サーバの起動

【SSHキーを新規作成】

アカウント設定

[2/3] サーバの起動

パスフレーズを入力後、【SSHキーを作成する】をクリックします

SSH鍵の取得

[2/3] サーバの起動

ダウンロードしてくださいをクリックし、【スクリプト設定へへ進みます】

ダウンロードした .pem ファイルが秘密鍵です

ファイアウォール設定

[2/3] サーバの起動

今回は【ファイアウォールを適用しな

い】を選び、【確認へ】クリックします

確認

[2/3] サーバの起動

最後に確認して【作成する】をクリックします

作成開始

[2/3] サーバの起動

作成を開始しましたと表示される

暫く待つと、画面に情報が出てきます。 これで起動完了しました。

ログインするために IP アドレスを控えておきます

TeraTerm等でログインします

[3/3] SSHログイン

先ほど控えた IP アドレスに接続します

初回接続の確認

[3/3] SSHログイン

初回接続の確認

[3/3] SSHログイン

ユーザ名は【 root 】 パスフレーズは【 SSH鍵作成時のもの 】

“Use RSA/DSA/ECDSA …” をクリックし、 【 Private key file: 】で先ほどダウンロードした秘密鍵 (~.pem)を指定する。 ※ TeraTerm では「全てのファイルを表示」にすること。

最後に 【 OK 】をおすと

Ubuntu 12.04 にログインできました

[3/3] SSHログイン

準備3/3 SSH鍵の相互認証

これまでの鍵の状態 重要な点は「公開鍵」と「秘密鍵」の

セットがあればログイン出来るようになる点です。

さくらのクラウドでは、サーバの中にログインして、「公開鍵」と「秘密鍵」のセットを作成しました。

ニフティクラウドでは、クラウド上でサーバを作成する時点で「公開鍵」と「秘密鍵」のセットを作成し、「秘密鍵」は自分の PC にダウンロードしました。

秘密鍵2.pem

公開鍵2 (authorized_keys)

公開鍵1 (authorized_keys)

秘密鍵1 id_rsa

相互の鍵のやりとり:相互 ssh

さくら ニフティ – さくらの公開鍵 id_rsa.pub を、

ニフティの ‘authorized_keys’ に 入れます

ニフティ -> さくら

– 新しく鍵ペアを作成し、 ニフティの公開鍵 id_rsa.pub を さくらの ‘authorized_keys’ に 入れます

この作業の目的は、後ほど Docker 検証の際に、相互のクラウド間で行き来できるようにするためです。

秘密鍵2.pem

公開鍵2 (authorized_keys)

公開鍵1 (id_rsa.pub)

秘密鍵1 id_rsa

公開鍵 (authorized_keys)

公開鍵3 (authorized_keys)

公開鍵3 (authorized_keys) 秘密鍵3

(id_rsa)

さくらニフティ手順

1. さくら公開鍵をコピー # cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3Nza……8AwAVw== root@sakura

2. ニフティの authorized_keys に追加 # vi ~/.ssh/authorized_keys ファイルの中に「1.」でコピーした内容を入れる

3. さくら ニフティにログイン

メモ帳などに貼り付けます

[root@sakura2 ~]# ssh 175.184.21.115 The authenticity of host '175.184.21.115 (175.184.21.115)' can't be established. RSA key fingerprint is 4b:51:2a:28:20:9b:ab:c2:61:d2:c7:cc:07:82:db:2c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '175.184.21.115' (RSA) to the list of known hosts. Enter passphrase for key '/root/.ssh/id_rsa': Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.5.0-23-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Fri Jul 18 11:32:03 JST 2014 System load: 0.0 Processes: 68 Usage of /: 5.2% of 27.13GB Users logged in: 1 Memory usage: 29% IP address for eth0: 175.184.21.115 Swap usage: 0% IP address for eth1: 10.100.74.33 Graph this data and manage this system at https://landscape.canonical.com/ 142 packages can be updated. 79 updates are security updates. Last login: Fri Jul 18 10:37:50 2014 from 153.121.40.37 root@ubuntu:~#

ssh <ニフティのIPアドレス>

初回接続時に表示、【yes】

パスフレーズ指定時は入力

ニフティさくら手順

1. ニフティの秘密鍵作成 # ssh-keygen

2. ニフティ公開鍵をコピー # cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3Nza……8AwAVw== root@ubuntu

3. さくらの authorized_keys に追加 # vi ~/.ssh/authorized_keys ファイルの中に「2.」でコピーした内容を入れる

4. さくら ニフティにログイン

メモ帳などに貼り付けます

先ほどと同じ手順です 以上で、ハンズオンの下準備は完了です

root@ubuntu:~/.ssh# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: ac:ae:0b:c8:ff:d2:74:7b:c4:cf:d5:a8:c5:b1:32:ac root@ubuntu The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | . . | | S . . = | |.. . o o + * . | |... o o o + * | | .o o . E + | | .=+. . | +-----------------+

クラウド準備編 ~完~

鯨でもわかるDocker 入門 さぁ、Docker をはじめよう No Docker, No Life @zembutsu Jul 19, 2014 #ncstudy

クラウドを渡り歩け! さくら×ニフティ 合同ハンズオン勉強会!! Dockerを利用したクラウド間移行のポテンシャル?運用に変化は?みんなで考えよう!! #ncstudy 2014年7月19日(土) 10:00 – 17:00 会場:ニフティ株式会社 セミナールーム (東京新宿)

わかる!! できる!?

Docker 入門 “さぁ、 Docker を始めよう” NO Docker, No Life

目次

1. なぜ Docker なのか? 2. Docker とは何なのか? 3. Dockerで何ができるのか? 4. Docker を使う

技術的な要素ではなく、Dockerは何処で使えて

何が出来るのか?という点が主眼です。

今日のハンズオン

北海道 石狩第一ゾーン

Dockerhub https://hub.docker.com

東日本 east-1 リージョン

技術検証 Creationline, Inc.

ハンズオンの資料です。 http://www.zusaar.com/event/14467015

@zembutsu 前佛 雅人 ・Technology Evangelist クリエーションライン株式会社 頭の悪い残念なスライド作りに定評 ←?

・経歴;ホスティングの運用部隊 10年近く, 物理 10,000 台の環境 メインは Linux 系運用監視・サポート 所謂インフラエンジニア的な 運用保守(一次,二次)データセンタ常駐企画営業広報宣伝検証開発

http://slideshare.net/zembutsu

自己紹介 Why am I here?

Docker #とは、業界の侵略者!? WHY DOCKER?

1 「鯨が死ぬか、ボートが沈むか、でーす」

はじめに

INTRODUCTION

?「あーあ、猫も杓子も Docker 、Dockerか」 ?「みな平和なもんや」

あの日見た鯨の名前を 僕達はまだ知らない。

The Docker We Saw That Day

今日、話すこと 今日、話さないこと ・ 今日話すこと - 鯨はどこから来たのか - 鯨とは何者か - 鯨はどこへ行くのか

・ Docker 技術背景や自動化、監視 - control group - namespace - aufs - devicemapper @enakai00先生の資料や いろいろな所で語られています。 それに自分はさほど詳しくないので、 興味があれば、自分で調べて下さいねっ

「いまからでも遅くはありません。ご覧ください!鯨はあなたを求めてはいません。 やつを狂ったように求めているのは、あなた、あなたなのです!」(白鯨)

みなさんと共有する内容 興味があれば、帰って自習して欲しい

「鯨」とは、 dockerであり 我々エンジニア でもある

理論や技術背景よりも いかに道具として使うか

Docker #とは

Docker エコシステム ( 生態系 )

エコシステムって格好いいけど、事実上の囲い込み、閉鎖系ですよね、あれ

コンテナの歴史 流通革命

ツールとしてのDocker せっかくあるなら使おう

Docker は使えない?

話は聞かせてもらった 同じ事はクラウドでも聞いた

どこで?いつ使うの? いまでしょ?

使える所があるんだったら、使えば良いのではないでしょうか。

いまそこにある機器 システム

「ヤツはまさに巨大な・・・白い青い悪魔だ・・・!」

Docker 入門 HOW TO USE DOCKER

2 「スターバックの夜食」…鯨を料理しよう

Docker の構造 アーキテクチャ

重要な機能・特長

コンテナを管理するシステム ➡ 軽量・速い ➡ どこでも動く ( Linux 標準 )

レポジトリ ➡ イメージを階層的に管理する

• 差分情報の記録

➡ Dockerhub • イメージの検索 • ダウンロード • 公開

Docker を使う

事前準備

Dokcer の動くパッケージを入れる ➡ ニフティクラウド

# apt-get update # apt-get install -y linux-image-generic-lts-raring linux-headers-generic-lts-raring (略) Setting up linux-headers-generic-lts-raring (3.8.0.44.44) ... Setting up linux-image-generic-lts-raring (3.8.0.44.44) ... # reboot # apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys # sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list“

➡ apt-get update apt-get install -y lxc-docker

コンテナの管理

docker run # docker run ubuntu /bin/echo ‘hello world’ # docke run centos /bin/echo ‘hello centos’ -i ( interactive , STDIN ) -t ( tty ) --rm ( remove ) ■ docker pull # docker pull centos:latest

Pulling repository centos 1a7dc42f78ba: Pulling image (latest) from centos, endpoint: https://cdn-registry-1.docker.1a7dc42f78ba: Download complete 511136ea3c5a: Download complete

34e94e67e63a: Download complete

コンテナ ID・イメージ ID

dokcer ps root@ubuntu:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 31a2629738e9 ubuntu:14.04 /bin/bash 3 minutes ago Exited (0) 2 seconds ago cranky_hypatia 2ad166fc3787 ubuntu:14.04 /bin/bash 7 minutes ago Exited (0) 4 minutes ago hopeful_archimedes

■ docker images root@ubuntu:~# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu-test latest b4e346166aea 10 seconds ago 276.5 MB

commit

コンテナの変更内容を確定 ➡ イメージ化

docker export docker import

Dockerfile docker build

FROM centos:centos6 MAINTAINER 0.1. NAME, NAME@example.jp RUN echo 'ZONE="Asia/Tokyo"' > /etc/sysconfig/clock RUN rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 RUN yum -y install httpd RUN echo 'sakura' > /var/www/html/index.html EXPOSE 80 ENTRYPOINT ["/usr/sbin/httpd"] CMD ["-D", "FOREGROUND"]

Docker Hub

役割 ➡ Docker イメージの保管 ➡ 認証 ➡ 自動ビルド ➡ GitHub , BitBuket 投稿

Docker とは何だったのか What was DOCKER

3 「お前がいる限り、私は先に進めない。お前が滅びるか、私が滅びるしかない」

まとめ Docker とは新しい道具

いままで通りでいい? それクラウドでも言えるの?

未来への道標

Dockerは選択肢の一つ 使えるなら使えば良い

Docker ハンズオン資料 DOCKER HANDS-ON REFERENCE

4 「任しとけ。何をどうやりゃいいのか今はさっぱりだが、任しとけ。」

Hands-On Docker ハンズオン本編

ハンズオンの流れ

■ 目的 実際に docker のインストールを行うほか、 コンテナの作成・管理や、クラウド間の移行が出来るように。

■内容 ・ ニフティ … Ubuntu 12.04 に Docker をセットアップ ・ さくら … CentOS 6.5 に Docker をセットアップ ・ コンテナを作成し、相互に移動 1. 静的コンテンツ編 ( Apache + HTML ファイル ) 2. 動的コンテンツ編 ( Apache + PHP + PukiWiki )

1. Dockerのセットアップ (Ubuntu編)

ニフティクラウド上で作業します ➡ 対象サーバに SSH でログイン ➡ Linux kernel のバージョンをあげます

# apt-get update # apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring (略) Do you want to continue [Y/n]? y (略) Setting up linux-headers-generic-lts-raring (3.8.0.44.44) ... Setting up linux-image-generic-lts-raring (3.8.0.44.44) ... # reboot

Ubuntu 12.04 は Linux kernel のバージョ

ンが古い為、kernel 3.8 以上に上げる必要があります。

1. Dockerのセットアップ (Ubuntu編)

reboot後、kernel のバージョンアップを確認 ➡ 対象サーバに SSH でログイン

root@ubuntu:~# uname -a Linux ubuntu 3.8.0-44-generic #66~precise1-Ubuntu SMP Tue Jul 15 04:01:04

UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Docker のセットアップ ➡ # apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.ILmCdlivSB --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-

keyring /etc/apt/trusted.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key ➡ # sh -c "echo deb https://get.docker.io/ubuntu docker main > ¥ /etc/apt/sources.list.d/docker.list"

3.8 であれば正常です

続きは Web で!

➡ http://qiita.com/zembutsu/private/3a396dd1e9d16193b0ba