いままでメインの 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"