matsukaz's blog

Agile, node.js, ruby, AWS, cocos2d-xなどなどいろいろやってます

Amazon LinuxをDockerで動かす

AWSと言えばクラスメソッドさん、こちらの手順でほぼほぼ出来た。さすが!

Docker Meetup Tokyo #2でLTしてきた:「Docker+serverspecで作るconfigspec CI」 #dockerjp | Developers.IO

これでローカルでAmazon Linux固有環境のテストもできる〜(∩´∀`)∩ワーイ

あ、ただDockerfileに以下も追加しないとSSHがつながらなかったのでご注意を。

$ diff Dockerfile.org Dockerfile
12a13,14
> RUN chmod 600 /home/ec2-user/.ssh/authorized_keys
> RUN chown ec2-user:ec2-user /home/ec2-user/.ssh/authorized_keys

イメージの接続確認

ビルドしたイメージは、以下の手順で確認できます。

  • sshd起動して待ち受ける
$ docker run -d -p 22 local/amznssh /usr/sbin/sshd -D
b1313f8ab7c8bfd5b0b7d5c23b6e9ed2770102adf32fe8e0dcf3799978f7df2a
  • 起動したコンテナを確認
$ docker ps
CONTAINER ID        IMAGE                  COMMAND               CREATED             STATUS              PORTS                   NAMES
b1313f8ab7c8        local/amznssh:latest   "/usr/sbin/sshd -D"   2 seconds ago       Up 2 seconds        0.0.0.0:49153->22/tcp   pensive_torvalds
  • SSHで接続してみる
$ ssh -i xxx.pem -p 49153 ec2-user@localhost

イメージの保存

イメージは以下の方法で保存できます。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
local/amznssh       latest              ddc2dc72ebd1        37 minutes ago      964.8 MB
local/amzn          latest              8cf4161c6154        About an hour ago   964.8 MB

# docker save ddc2dc72ebd1 > amzn201409.tar

あとはS3にアップロードするなり、ローカルに落とすなり。

イメージの取り込み

$ docker load -i amzn201409.tar

で!
ただloadだとレポジトリ名やタグ名がないので、付けてあげた方が良いです。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              8fe16e021510        4 hours ago         832.1 MB

$docker tag 8fe16e021510 local/amzn:2014.09

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
local/amzn          2014.09             8fe16e021510        4 hours ago         832.1 MB


2014/11/18 修正

$ cat amzn201409.tar | docker import - local/amzn:2014.09

では正しく取り込めませんでした。

exec: "/bin/bash": stat /bin/bash: no such file or directory

とかのエラーが出ちゃう。詳しくはこちらとか見て頂ければー。