読者です 読者をやめる 読者になる 読者になる

時と場合によりけり

日々のアップデートとイノベーションに翻弄され彷徨える IT エンジニアの覚書

Docker for Windows をインストールしようと思ったら Home エディションはダメなんだそうです

概要

Docker for Windows は、Windows 10 Home エディションにはインストールできませんでした。Windows 10 Professional エディションでなければならないようです。しょうがないので、Docker Toolbox を入れて、Windows 10 に、Docker 環境を構築してみました。また、動作確認のため、Alpine 版の 軽量 Jenkins を導入してみました。

Docker for Mac については、こちらのエントリーをご参照ください。

stangler.hatenablog.com

経緯

自宅のクローゼットで眠っていた Windows 10 PC に、Docker for Windows を入れようとしたところ、

Dcoker - HyperV is not available on Home editions

と拒絶されました。 Home エディションでもなんとかインストールできないものかと、ググってみましたが、以下のとおりダメっぽい。。。

stackoverflow.com

さらに、「Docker Toolbox にしてみれば」というダイアログが出てきました。

Docker for Windows のためだけに、Window 10 の pro エディションを買う気が起きなかったので、Docker Toolbox をインストールすることにしました。

ハードウェア

  • マシン: Acer
  • メモリ: 8 GB
  • ストレージ: HDD 500 GB

ホスト

  • Widows 10 Home Edition
  • Docker Toolbox for Windows ( stable version )

ゲスト

  • Jenkins 2.32.1-alpine

Docker Toolbox for Windows

ダウンロード & インストール

以下のサイトからダウンロードします。

Docker Toolbox | Docker

f:id:stangler:20170125172327p:plain

適宜チェックを入れて Next ボタンを押し続けます。

f:id:stangler:20170125172511p:plain

f:id:stangler:20170125172526p:plain

f:id:stangler:20170125172539p:plain

f:id:stangler:20170125172554p:plain

f:id:stangler:20170125172608p:plain

起動

デスクトップにできた Docker Quickstart Terminal のアイコンをクリックして起動します。

f:id:stangler:20170125172822p:plain

IP アドレス 192.168.99.100 が確認できますね。

バージョン確認

% docker version

f:id:stangler:20170125173049p:plain

ディレクトリ作成

Docker Toolbox の動作確認のためJenkins を入れてみます。まず、作業ディレクトリを作成します。

% mkdir jenkins
% cd jenkins

Docker Compose

参考 URL

Windows10マシンにDocker Toolbox を入れて個人用の開発環境を作る - Qiita

docker-compose.yml 作成

% vim docker-compose.yml
version: '2'
services:
  jenkins:
    image: jenkins:2.32.1-alpine
    ports:
      - "8080:8080"
    container_name: jenkins

コンテナ実行

% docker-compose up

Jenkins 設定

ポート確認

一応、ポートを確認。

% docker-machine ls
192.168.99.100:2376

接続確認

% open http://192.168.99.100:8080

initialAdminPassword 設定

コンソールに表示されたパスワードを右クリックでコピペ、もしくは /var/jenkins_home/secrets/initialAdminPassword を開いてパスワードを確認し、コピペする。

f:id:stangler:20170125174154p:plain

プラグイン

Install suggested plugins を選ぶ。

f:id:stangler:20170125174236p:plain

AdminUser 設定

f:id:stangler:20170125174327p:plain

設定完了

f:id:stangler:20170125174413p:plain

f:id:stangler:20170125174431p:plain

Windows でも、わりと簡単に Docker を利用できました!

ECS ( Amazon EC2 Container Service ) で Docker イメージを管理する

概要

前回のエントリーで、Docker イメージを DockerHub で管理する設定をしました。

stangler.hatenablog.com

今回は、ECS ( Amazon EC2 Container Service ) でイメージを管理する設定です。パブリックに晒したくないイメージ(例えば、イメージ内に SSH の鍵を保持している、DB へアクセスするためのパスワードを内包しているなど)の場合は、ECS で管理する方が、良いと思います。

以下のエントリーでアップしたイメージを例として使用します。

stangler.hatenablog.com

ハードウェア

  • マシン: Macbook Pro Early 2011
  • メモリ: 16 GB
  • ストレージ: SSD 512 GB

ホスト

  • OS: macOS 10.12.1 Sierra
  • Docker for Mac Version 1.12.3

ゲスト

前提条件

  • AWS にアカウントがあること

参考 URL

http://dev.classmethod.jp/cloud/aws/ecr-available-tokyo-region/

サービス開始

f:id:stangler:20170119110452p:plain

EC2 Container Service > 設定するオプションの選択

Amazon ECR によりコンテナイメージをセキュアに保存する」にチェックを入れる

f:id:stangler:20170119110706p:plain

ステップ1: リポジトリの設定

f:id:stangler:20170119111415p:plain

ステップ2: Docker イメージの構築、タグ付け、プッシュ

f:id:stangler:20170119111657p:plain

完了をクリックで完成。

f:id:stangler:20170119112049p:plain

プッシュコマンドの表示

「プッシュコマンドの表示」ボタンをクリックすると「ステップ2」で表示されていたコマンド使用方法が表示されるので、これをコピペすれば簡単にイメージの設定ができます。

f:id:stangler:20170119112223p:plain

ログイン情報取得

ターミルで以下のコマンドを打つ。

% $(aws ecr get-login --region ap-northeast-1)
docker login -u AWS -p 
(中略)
XXXXXXXXXX.ecr.ap-northeast-1.amazonaws.com

●ログイン情報確認

% cat ~/.docker/config.json
{
    "auths": {
        "https://XXXXXXXXXX.ecr.ap-northeast-1.amazonaws.com": {
            "auth": "(中略)"
        }
    }
}

ログイン

% $(aws ecr get-login --region ap-northeast-1)
Flag --email has been deprecated, will be removed in 1.13.
Login Succeeded

イメージにタグを付ける

まずはローカルのイメージを確認。

% docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
hatena01_web-hatena01     latest              3cf1b4258e7c        43 hours ago        965.4 MB

確認した IMAGE ID を使用してタグを付ける。

% docker tag 3cf1b4258e7c XXXXXXXXXXXXXXX.ecr.ap-northeast-1.amazonaws.com/rails-hatena01:latest

うまくできたかどうかを確認

% docker images
REPOSITORY                                                         TAG                 IMAGE ID            CREATED             SIZE
XXXXXXXXXXXXXXXXX.ecr.ap-northeast-1.amazonaws.com/rails-hatena01   latest              3cf1b4258e7c        43 hours ago        965.4 MB
hatena01_web-hatena01                                              latest              3cf1b4258e7c        43 hours ago        965.4 MB

●プッシュ

ECS にプッシュする。

% docker push XXXXXXXXXXXXXXXXX.ecr.ap-northeast-1.amazonaws.com/rails-hatena01:latest

確認

f:id:stangler:20170119113317p:plain

これで登録完了です!

DockerHub と GitHub 連携させてDocker イメージを 管理する

概要

まず、自分で作成した Docker イメージを build するためのソースを GitHub で管理します。次に、Docker イメージを自分の作業領域にすぐに pull できるよう、DockerHub に登録しておきます。

  • ソース: GitHub(自分でイメージを build するときは、これを利用)
  • イメージ: DockerHub(できたイメージをすぐに使いたいときは、これを利用)

以下のエントリーでアップしたイメージを例として使用します。

stangler.hatenablog.com

ハードウェア

  • マシン: Macbook Pro Early 2011
  • メモリ: 16 GB
  • ストレージ: SSD 512 GB

ホスト

  • OS: macOS 10.12.1 Sierra
  • Docker for Mac Version 1.12.3

ゲスト

前提条件

  • GitHub にアカウントがあり、レポジトリを作成してあること
  • DockerHub にアカウントがあること

今回、例として使用するレポジトリ

GitHub - stangler/rails-hatena01: rails sample

https://hub.docker.com/r/stangler/rails-hatena01/

参考 URL

DockerImageをDockerHubに登録の仕方 - Qiita

GitHub 連携

Create > Create Automated Build > Link Accounts

f:id:stangler:20170119092904p:plain

GitHub を選ぶ

f:id:stangler:20170119093936p:plain

Public and Private ( Recommended ) を select

f:id:stangler:20170119094128p:plain

GitHub から Permission を求められるので承認する

f:id:stangler:20170119094646p:plain

DockerHub のレポジトリを設定する
Create > Create Automated Build > Create Repository

f:id:stangler:20170119095050p:plain

Create Auto-build で GitHub を選ぶ

f:id:stangler:20170119095325p:plain

GitHub に登録されているレポジトリが表示されるので連携したいものを選ぶ

f:id:stangler:20170119095645p:plain

Create をクリック

f:id:stangler:20170119095752p:plain

Trigger をクリック

f:id:stangler:20170119100112p:plain

確認

Dashboard > stangler/rails-hatena01 > Build Details

f:id:stangler:20170119100153p:plain

Success となっていれば OK!
連携完了、以上です。