EC2ライクなインスタンスをdockerで立ち上げることができるようにする
Closed this issue · 23 comments
AWS環境上に都度プロビジョニングするのもつらいので、ローカルで構築できないか試してみる
Amazonlinuxライクなコンテナを探そう。
"amazonlinux コンテナ image" で検索
docker
のバージョンを確認しよう
#docker --version
Docker version 17.06.0-ce, build 02c1d87
ecr上に公開されているimageを使う必要があるようだ。。
aws ecr get-login --region us-west-2 --registry-ids 137112412989
> docker login -u AWS -p (トークン)
面倒くさいのでパイプで実行してしまおう。
aws ecr get-login --region us-west-2 --registry-ids 137112412989 | bash
怒られてしまった。
unknown shorthand flag: 'e' in -e
See 'docker login --help'.
困っている方が他にも。
moby/moby#23390
どうやら古いdockerだとだめみたい。
dockerをバージョンアップしにいくが、そもそもYosemiteはもはやサポート外。。
まずはmacをアプデするか。。
アプデできました
dockerのサイトへ移動し、toolboxのバイナリをダウンロードする
https://www.docker.com/products/docker-toolbox
dockerのstable版を入れ直したところ動きました。
amazon linux の image を pullします
docker pull 137112412989.dkr.ecr.us-west-2.amazonaws.com/amazonlinux:latest
imageのpullに時間がかかるので、その間に docker-compose
の準備をする
docker-compose --version
> docker-compose version 1.14.0, build c7bdf9e
docker-compose.yml
は以下
version: '2'
services:
ec2:
image: 137112412989.dkr.ecr.us-west-2.amazonaws.com/amazonlinux
command: tail -f /dev/null
container_name: ec2
普通の amazonlinuxコンテナだと、ec2-userもいないし、22 portも空いてないぽい
http://dev.classmethod.jp/cloud/aws/docker-serverspec-configspec-ci/
を参考にしてDockerfileを作成しよう
まるコピ
FROM amazonlinux
# PAM設定を変えておかないとsshがいきなり切れる
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config
RUN passwd -f -u ec2-user
# start-stopしてhost_keyを作る
RUN service sshd start
RUN service sshd stop
ADD ./authorized_keys /home/ec2-user/.ssh/authorized_keys
EXPOSE 22
こんな記事もみかけた。imageはDocker hubのを使うで良いっぽい。
http://dev.classmethod.jp/cloud/aws/easier_to_move_amazon_linux_container_images/
ビルドしてみたが、passwd
とか openssh
とかいろいろない。
ここに、それっぽいのをまとめてくれているひとがいた。
http://qiita.com/bwtakacy/items/b7e3af3d560413d4e84d
Dockerfileを作成した。
できた。