soudegesu/my_packer_best_practice

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も空いてないぽい

まるコピ

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を作成した。
できた。