16
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker Machine で AWS/Azure 上に Docker ホストを作成する

Posted at

はじめに

Docker Machine で AWS と Microsoft Azure 上に Docker ホストを作成する手順をまとめておきます。

Docker Machine とは?

ローカルマシン上やクラウド上に Docker のホストを作成するツールです。
Docker ホストの作成以外に、ホストの停止・開始、Docker のアップグレードなどができます。

環境

今回の検証環境は以下です。

DockerMachine.png

Docker Machine のインストール

ローカルのPCに Docker Machine をインストールします。

LocalPC
$ wget https://github.com/docker/machine/releases/download/v0.5.0/docker-machine_linux-amd64.zip
$ unzip docker-machine_linux-amd64.zip
$ rm docker-machine_linux-amd64.zip
$ sudo mv docker-machine* /usr/local/bin/

Docker ホストの作成

AWS に作成する場合

以下のコマンドを実行すると Docker Engine がインストールされた EC2 インスタンスが作成されます。

LocalPC
$ docker-machine create	\
   --driver amazonec2   \
   --amazonec2-access-key AKIXXXXX   \
   --amazonec2-secret-key XXXXX   \
   --amazonec2-vpc-id vpc-XXXXXXXX   \
   --amazonec2-subnet-id subnet-XXXXXXXX   \
   --amazonec2-region ap-northeast-1   \
   --amazonec2-instance-type t2.micro  \
   docker-aws01

Microsoft Azure に作成する場合

まず、Azure へ API を発行するための証明書を作成します。

LocalPC
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout azure.pem -out azure.pem
openssl pkcs12 -export -out azure.pfx -in azure.pem -name "My Azure Cert"
openssl x509 -inform pem -in azure.pem -outform der -out azure.cer

そして、作成した証明書(ここでは azure.cer) を Azure のポータルサイトからインポートします。

ここまで準備が出来たら、Docker ホストを作成します。

LocalPC
$ docker-machine create -d azure \
 --azure-subscription-id="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" \
 --azure-subscription-cert="azure.pem" \
 --azure-location "Japan East" \
 docker-azure01

コマンドの最後に指定する名前(上記の docker-azure01)は、Azure 上のクラウドサービス名としても使われるため、Azure 全体でユニークな名前である必要があります。

作成したホストの確認

次のコマンドで、作成した Docker ホストの一覧を確認できます。

LocalPC
$ docker-machine ls
NAME             ACTIVE   DRIVER      STATE     URL                                      SWARM
docker-aws01     *        amazonec2   Running   tcp://54.250.148.168:2376
docker-azure01   -        azure       Running   tcp://docker-azure01.cloudapp.net:2376

Docker Machine のコマンド

Docker Machine は基本的に Docker ホストを操作するためのツールですが、リモートから Docker Engine を制御しやすくしたり、Docker ホストに SSH 接続する機能もあります。

コンテナの作成

例えばローカルPCから、AWS の Docker ホスト上でコンテナを起動させるには次のようにします。

LocalPC
# リモートの Docker Engine の情報を環境変数にセット
$ eval docker-machine env docker-aws01
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://54.250.148.168:2376"
export DOCKER_CERT_PATH="/home/ubuntu/.docker/machine/machines/docker-aws01"
export DOCKER_MACHINE_NAME="docker-aws01"

# ローカルの Docker コマンドから、リモート(この場合は AWS)の Docker エンジンを操作
$ docker run -itd --name aws busybox

$ docker ps
CONTAINER ID   IMAGE      COMMAND   CREATED           STATUS         PORTS   NAMES
39bd49c3fb49   busybox    "sh"      4 seconds ago     Up 3 seconds           aws

同じことを以下のように実行することもできます。

LocalPC
$ docker $(docker-machine config docker-azure01) run -itd --name azure busybox

$ docker $(docker-machine config docker-azure01) ps
CONTAINER ID   IMAGE      COMMAND   CREATED           STATUS         PORTS   NAMES
dab1a0bad67f   busybox    "sh"      6 seconds ago     Up 5 seconds           azure

SSH での接続

Docker Machine から、作成した Docker ホストに SSH 接続できます。

LocalPC
$ docker-machine ssh docker-aws01

参考サイト

Docker Machine
Azure で docker マシンを使用する方法
Docker Machine リファレンス

16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?