子持ちプログラマーの日記

子持ちのプログラマーがWeb関連の技術、育児、ガンプラのことを書くブログ

【Docker】 sshで接続可能なコンテナを作る

Dockerでいろいろと試してみましたが、OS上にはほとんど何も入っていません。
コンテナに入って色々とインストールするのもいいのですが、
Dockerfileを使ってコンテナを生成する方法があるので、これで色々とインストールしていきたいと思います。
まずはSSHをインストールして、SSHで接続できるコンテナを作ってみたいと思います。

DockerFileとは

Dockerコンテナーの構成内容をまとめて記述するシンプルなテキスト形式のファイル
これを利用すれば毎回同じコンテナを作ることができます。

DockerFileの細かい書き方などは他のサイトにあるのでそちらを参考にしてください。
(時間があればまとめたいですが・・・)

DockerFileを作る

DockerFileを作ります。

FROM centos:centos6

RUN yum -y update

# SSHのインストール、設定
RUN yum -y install openssh-server

RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/^UsePAM yes/UsePAM no/' /etc/ssh/sshd_config

RUN /etc/init.d/sshd start

RUN echo 'root:root' | chpasswd

# SSHのポートを開けておく
EXPOSE 22

CMD /sbin/init

イメージ作成

書式は以下のようになります。

docker build -t --rm [イメージ名][:タグ名] [Dockerfileのあるディレクトリ]

今回は、ssh_testというイメージ名で作ります。

# docker build --rm -t ssh_test .
Sending build context to Docker daemon 34.82 kB
Sending build context to Docker daemon
<省略>
Successfully built b5bba87d8f88

イメージ確認

「docker images」コマンドでDockerイメージ一覧を確認すると以下のようにssh_testというイメージができていることが分かります。

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ssh_test            latest              b5bba87d8f88        19 minutes ago      431.1 MB

イメージを起動

イメージを起動します。
今回はSSHの22ポートをホストの2222 ポートに対応させて起動します。

# docker run -p 2222:22 -d ssh_test

SSHで接続

以下のコマンドで接続できたら成功です。

# ssh -p 2222 root@0.0.0.0
広告を非表示にする