Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.
  • 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インスタンスでも十分に動かせるかもしれません
jrits
信頼と魅力のある先進のITをもとに、お客様のワークスタイル・イノベーションの実現を目指します。
http://www.jrits.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away