##この投稿について
DockerのホストOSにAWSのEC2(Ubuntu)、ゲストOSにCentOSという構成で、SSH接続可能なコンテナを立ち上げた際のメモ
##EC2の準備
今回はAWSの「Community AMIs」からUbuntuの64ビット(ami-e74b60e6)を選んで使用。
「Configure Instance Details」のステップで、「Advanced Details」をクリックして、以下のように入力すると、勝手にDockerがインストールされた状態で立ち上げてくれる。
##Dockerfileの設定
FROM centos
# Install
RUN yum update -y
RUN yum install -y sudo
RUN yum install -y passwd
RUN yum install -y openssh-server
RUN yum install -y openssh-clients
RUN /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -C '' -N ''
RUN /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -C '' -N ''
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 echo 'root:root' |chpasswd
RUN sed -ri 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
EXPOSE 22
##Dockerの実行
まずはビルドしてイメージを作成
$ sudo docker build -t test-sshd .
イメージが出来ているか確認
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test-sshd latest 9349fc717edb 1 minutes ago 353.6 MB
次にイメージを実行して、コンテナ作成。
$ sudo docker run -d -p 22 test-sshd /usr/sbin/sshd -D
ここでのポイントは、
-
sshd
をバックグラウンドで起動 - 22ポートをポートフォワーディング
次に、起動中のコンテナを確認する
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2dfaa7ed4bce sshd:latest "/usr/sbin/sshd -D" 14 minutes ago Up 14 minutes 0.0.0.0:49163->22/tcp cocky_archimedes
49163番ポートが22番ポートにポートフォワーディングされているのが確認できる。
次にifconfig
でゲストOSのipを調べる
$ ifconfig
docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::5484:7aff:fefe:9799/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1
RX packets:16796 errors:0 dropped:0 overruns:0 frame:0
TX packets:19160 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:992133 (992.1 KB) TX bytes:111073684 (111.0 MB)
次のようにすればログインできるはず!(パスワードはDockerfile
で設定したようにroot
)
$ ssh root@172.17.42.1 -p 49163