
いままでメインの docker 環境は AWS EC2 上で curl -fsSL get.docker.com -o get-docker.sh && sudo sh get-docker.sh のように構築していたけれど、 docker-machine for AWS を使ったほうがいろいろ便利だった。
Amazon Web Services (AWS) EC2 example | Docker Documentation
docker-machine for aws のいいところ
- 自分で docker をインストールする必要がなく最新のバージョンを入れてくれる(docker インストール済の ec2 をたちあげてくれる)
- aws でつくると docker-machine stop|start で ec2 も stop|start できる。
- docker-machine provision で環境をリセットできる(docker と certs の再インストールを行ってくれる。バージョンアップ時に役立つ?)
- ec2 インスタンスと Key Pairs が自動的に作成されるが、docker-machine rm で ec2 を削除すると Key Pairs も自動的に削除してくれる。
ただ provisioner として chef やその他をフックすることはできないようで、好みの docker 環境を何台も docker-machine create する場合は、あらかじめカスタム AMI を作っておいたほうがよさそうだ。
前提条件
- docker-machine 操作元となる Mac もしくは Linuxに docker と docker-machine がインストールされていること
- .aws/credentials に認証情報が設定されていること
環境構築
os は ubuntu 16.04 になる。この場合 docker.aws.net という ec2 インスタンスと Key Pairs が自動的に作成される。インスタンスタイプはデフォルトで t2.micro で OS は ubuntu 16.04)。
$ docker-machine create --driver amazonec2 --amazonec2-region ap-northeast-1 --amazonec2-zone b --amazonec2-vpc-id vpc-abcde123 --amazonec2-subnet-id subnet-abcde123 docker.aws.net
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS docker.mac.local - virtualbox Running tcp://192.168.99.102:2376 v18.01.0-ce docker.aws.net - amazonec2 Running tcp://aaa.bbb.ccc.ddd:2376 v18.01.0-ce
ログイン
$ docker-machine ssh docker.aws.net
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-1020-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
145 packages can be updated.
63 updates are security updates.
Last login: Mon Jan 29 17:31:26 2018 from xxx.xxx.xxx.xxx
ubuntu@docker:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
おまけ
mac のローカルで docker-machine を使って virtualbox で docker 環境を構築すると os は boot2docker になる。(ฅΦωΦ)ฅ
$ docker-machine create --driver virtualbox docker.mac.local
$ docker-machine ssh docker.mac.local
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 18.01.0-ce, build HEAD : 0bb7bbd - Thu Jan 11 16:32:39 UTC 2018
Docker version 18.01.0-ce, build 03596f5
docker@docker:~$ cat /etc/os-release
NAME=Boot2Docker
VERSION=18.01.0-ce
ID=boot2docker
ID_LIKE=tcl
VERSION_ID=18.01.0-ce
PRETTY_NAME="Boot2Docker 18.01.0-ce (TCL 8.2.1); HEAD : 0bb7bbd - Thu Jan 11 16:32:39 UTC 2018"
ANSI_COLOR="1;34"
HOME_URL="http://boot2docker.io"
SUPPORT_URL="https://github.com/boot2docker/boot2docker"
BUG_REPORT_URL="https://github.com/boot2docker/boot2docker/issues"