LoginSignup
36
41

More than 5 years have passed since last update.

AWSで初めてのDocker: AmazonLinux上でAmazonLinuxのコンテナを動かす

Last updated at Posted at 2015-02-10
  • AmazonLinuxをホストとして、AmazonLinuxのコンテナを動かします
    • SSH,HTTPを公開したコンテナを作ります

1. ホストの用意

  • 以下の構成で始めてみました
AMI Instance type
Amazon Linux AMI 2014.09.2 (HVM) t2.medium

dockerのインストール・起動

$ sudo yum install -y docker
$ sudo /etc/init.d/docker start
$ sudo chkconfig docker on

2. コンテナイメージの作成


  • 1) Amazon Linux EC2を普通にLaunchし、そのままStopします

    • これがコンテナイメージの元になります
  • 2) そのEC2のEBS VolumeをDettach後、DockerがセットアップされたEC2にAttachし、mountします

$ sudo mkdir /mnt/ebs
$ sudo mount /dev/xvdf1 /mnt/ebs/
  • 3) 不要なファイルを削除します
$ cd /mnt/ebs/
$ sudo rm -rf ./var/log/* ./var/cache/yum/* ./home/ec2-user/.ssh/authorized_keys
  • 4) イメージの作成、インポート
    • 上記コマンドで3,4分ほどでした
    • この時点ではまだ起動はしません(起動してもSSH接続できないので)
$ sudo tar --numeric-owner -cjp . | sudo docker import - local/amzn

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
local/amzn          latest              9d8833faf01f        4 minutes ago       810.1 MB
  • 5) EBS VolumeをアンマウントしDettachします
$ cd ~/
$ $ sudo umount /mnt/ebs/
Dockerfile
FROM local/amzn

# 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

# SSH接続の公開鍵ファイルの設置
ADD ./authorized_keys /home/ec2-user/.ssh/authorized_keys
RUN chmod 600 /home/ec2-user/.ssh/authorized_keys
RUN chown ec2-user:ec2-user /home/ec2-user/.ssh/authorized_keys

EXPOSE 22 80
  • 7) SSH接続で使用する公開鍵をauthorized_keysとして配置します
    • 鍵がない場合は適当に作ってください
$ cp ~/.ssh/id_rsa.pub authorized_keys
  • 8) SSH接続できるイメージをビルドします
    • イメージの完成です
    • Dockerfile,authorized_keysは不要なので消してOKです
$ sudo docker build -t local/amznssh .

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
local/amznssh       latest              2d3d4f7e4ff9        33 seconds ago      810.1 MB
local/amzn          latest              9d8833faf01f        16 hours ago        810.1 MB

3. コンテナの起動

  • コンテナを起動します
    • sshを待ち受けるようにします
$ sudo docker run -d -p 22 -p 80 local/amznssh /usr/sbin/sshd -D
8b3b849ade972c9cb75c58f5912a6474fb5745b858e0269a368e5941fe7d460f

$ sudo docker ps
CONTAINER ID        IMAGE                  COMMAND               CREATED             STATUS              PORTS                                          NAMES
8b3b849ade97        local/amznssh:latest   "/usr/sbin/sshd -D"   19 seconds ago      Up 18 seconds       0.0.0.0:49153->22/tcp, 0.0.0.0:49154->80/tcp   focused_wilson 
  • sshログインできました
    • ここでは49153番ポートで接続していますが、docker runの-pオプションで -p 10022:22 のようにすれば待ち受けポートを指定することも可能です
$ ssh 127.0.0.1 -p 49153

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
[ec2-user@8b3b849ade97 ~]$ 

【おまけ】負荷について

  • 1コンテナ起動した状態ではCPU/メモリともに余裕たっぷりといった感じでした
  • (もちろん処理内容にもよりますが)micro/smallインスタンスでも十分に動かせるかもしれません
36
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
41