sshログイン出来るdockerコンテナを作る
1. はじめに
CentOSで日本語ロケール設定にするDockerfile の続きというわけでもありませんが、コンテナにssh接続出来るように Dockerfile
に追記してみる。
-
Windows10
-
Docker Toolbox
を使用している場合の方法です。
2. Dockerfile
Dockerfile
1# base image
2FROM centos:7
3
4# system update
5RUN yum -y update && yum clean all
6RUN yum reinstall -y glibc-common && yum clean all
7
8# locale
9# glibcの更新より後方に記述すること
10# カスタムロケールが消えてしまう
11RUN localedef -c -i ja_JP -f UTF-8 ja_JP.UTF-8
12# glibcの更新でカスタムロケールが消されないために ja_JP.utf8 を追加
13# override_install_langs=en_US.utf8
14# ↓
15# override_install_langs=en_US.utf8,ja_JP.utf8
16RUN sed -i -e '/override_install_langs/s/$/,ja_JP.utf8/g' /etc/yum.conf
17
18ENV LANG ja_JP.UTF-8
19
20# timezone
21RUN rm -f /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
22
23RUN yum install -y openssh-server
24RUN /usr/sbin/sshd-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
25
26RUN yum clean all
27
28# rootでログイン出来るようにする
29RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
30
31# root のパスワード設定
32RUN echo 'root:passwordxxxx' | chpasswd
33
34# ポート22解放
35EXPOSE 22
36
37CMD \["/usr/sbin/sshd", "-D"\]
3. イメージビルド
$ cd <Dockerfileがあるディレクトリ>
$ docker build -t <tagname> .
$ cd /path/to/docker/centos_ssh
$ docker build -t centos7/ssh .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7/ssh latest a46fa67820c5 About an hour ago 359MB
:
:
4. コンテナ起動
$ docker run -it -d -p <hostport>:22 -h <hostname> --name <containername> --rm <tagname>
-p <hostport>:22 の 22 は Dockerfile で解放している(EXPOSEしている)ポート
|
$ docker run -it -d -p 10022:22 -h dev --name dev --rm centos7/ssh
5. ホストへのログイン
Docker Toolbox
を使用しているのでホストは VirtualBox
で動いている。sshするにはホストのIPアドレスが必要になる。
$ docker-machine ip default
192.168.99.100 # 出力例
Docker Quicksart Terminal
を起動するときにも表示されている。
sshで接続
$ ssh -p 10022 root@192.168.99.100
上記のコンテナ起動で指定したホストのポートを 10022 を使用する
|
puttyでの接続