6
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

amazon linuxのイメージを使用してsshできるコンテナを作る

概要

AWS EC2(amazon linux)でsshログインして動作するものの動作テスト環境をdockerで構築するテスト。
ansibleやcapistrano,fabricなどssh経由でコマンドを送り込んで実行する系ツールの動作テストをローカル環境だけでやりたい場合を想定しています。

事前準備

公開キーを作成

公開キーを以下のように作ります。

ssh-keygen -t rsa -b 4096 -C "m71203@gmail.com" -f authorized_keys

Dockerfileとdocker-composeファイルを作成

以下のようなDockerfileとdocker-compose.ymlを用意。
コンテナが1つなのでdocker-compose.ymlは必要ないのですが、どのようにコンテナを起動したかのメモかわりになるので残りしています。
Dockerfileの最後のCMDはtailしてコンテナを終了しないようにする為のものです。

Dockerfile
FROM amazonlinux:latest

ARG USER

RUN yum -y update && yum -y install openssh-server && yum -y install sudo
RUN adduser $USER && mkdir -p /home/$USER/.ssh && chown $USER:$USER /home/$USER/.ssh && chmod 0700 /home/$USER/.ssh
ADD ./authorized_keys.pub /home/$USER/.ssh/authorized_keys
RUN chown $USER:$USER /home/$USER/.ssh/authorized_keys && chmod 0600 /home/$USER/.ssh/authorized_keys
RUN echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

CMD /etc/init.d/sshd start && tail -f /dev/null
docker-compose.yml
version: '2'
services:
    app:
        build:
            context: .
            args:
                USER: user1
        container_name: al_test
        stdin_open: true
        tty: true
        ports:
            - "2022:22"
        volumes:
            - .:/share

イメージ作成&コンテナ作成と起動

以下のコマンドでイメージとコンテナを作成。

docker-compose build
docker-compose up -d

sshでのログイン

下のようなコマンドでsshログインできるようになります。

ssh -i authorized_keys user1@localhost -p 2022
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
Sign upLogin
6
Help us understand the problem. What are the problem?