Dockerファイルを使ってUbuntuイメージを作成し、SSHログインする

DockerでUbuntuを起動し、SSHログインする
Docker上のUbuntuにSSHログインするためには、Dockerファイルで指示する必要があるようだ。

一番簡単なのは、DockerhubのUbuntuイメージのDockerFileをそのまま流用することだ。
rastasheep/ubuntu-sshdをそのままコピーして少し足して使ってみる。
.\Dockerfile_ubuntu_18_04.txt
rootのパスワードを"root"で設定していますね。
FROM       ubuntu:12.04
MAINTAINER Aleksandar Diklic "https://github.com/rastasheep"

RUN apt-get update

RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd

RUN echo 'root:root' |chpasswd

RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config

RUN mkdir /root/.ssh

RUN apt-get install -y sudo 
RUN apt-get install -y nginx 
RUN apt-get install -y vim
RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

EXPOSE 22
EXPOSE 80
EXPOSE 433

CMD    ["/usr/sbin/sshd", "-D"]

イメージ作成開始
Dockerファイル: Dockerfile_ubuntu_18_04.txt
Repository名: ssh_server
で作成する。
$ docker image build -f .\Dockerfile_ubuntu_18_04.txt -t ssh_server .

イメージ確認
ubuntuのイメージもできている。
これをベースにssh_serverを作ったのか。。
docker images
REPOSITORY                       TAG                     IMAGE ID            CREATED             SIZE
ssh_server                       latest                  ff74bccb12dc        3 minutes ago       273MB
ubuntu                           18.04                   c3c304cb4f22        7 weeks ago         64.2MB
mcr.microsoft.com/mssql/server   2019-CU3-ubuntu-18.04   3c7ee124fdd6        3 months ago        1.46GB

イメージ起動&接続
# port10000へポートフォワードする
$ docker run -d -p 10000:22 ssh_server
343a3dd16f5da1a2c2daed8c2b88ce32afd589e7fd4d81b1d5be9075f84f7060

# port10000へSSH接続
$ ssh root@127.0.0.1 -p 10000
The authenticity of host '[127.0.0.1]:10000 ([127.0.0.1]:10000)' can't be established.
ECDSA key fingerprint is SHA256:Dz8dHBPvV6TCo80rsSte5tFCj6PtzlF2qnO0EFlo+4M.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:10000' (ECDSA) to the list of known hosts.
root@127.0.0.1's password: root
root@343a3dd16f5d:~#

NAMESの変更 dockerコマンドでは、コンテナの起動やログインでNAMEをよく使う。
IDは覚えづらいのでNAMEを使うのは当然としても、NAMEは覚えやすいものに変更したい。
以下のコマンドで変更できる。
# 変更前
$ docker ps -a
CONTAINER ID  IMAGE       COMMAND              CREATED       STATUS        PORTS                                      NAMES
67f5d902e50e  ssh_server  "/usr/sbin/sshd -D"  19 hours ago  Up 1 minutes  80/tcp, 433/tcp, 0.0.0.0:10000->22/tcp  confident_sutherland

# NAME変更
docker rename 343a3dd16f5d ssh_ubuntu

# 変更後
docker ps -a
CONTAINER ID  IMAGE       COMMAND              CREATED       STATUS        PORTS                                      NAMES
343a3dd16f5d  ssh_server  "/usr/sbin/sshd -D"  19 hours ago  Up 2 minutes  80/tcp, 433/tcp, 0.0.0.0:10000->22/tcp  ssh_ubuntu

余談
一応、ユーザーは作成しておきたい。
# ユーザー作成
$ adduser ubuntu

# グループ作成
$ gpasswd -a ubuntu sudo

# パスワードいらない時
$ passwd -d ubuntu

コメント

このブログの人気の投稿

ソリューション構成ごとにconfigファイルを作成する

C++の古いプロジェクトのビルドでerror MIDL2311 : statements outside library block are illegal in mktyplib compatability mode

web.config debug/releaseの内容を変換構文を使って切り替える