Dockerサーバ構築とSSHコンテナの作成

こんにちは、takayukiです。
 休日は自宅の仮想サーバを使ってスキルアップに励んでいます。 最近のマイブームはsitecoreの習得です。
 今回は、Dockerサーバを構築してみました。

Dockerサーバ構築とSSHコンテナの作成

構築編


なぜこの手順を作ったのか
Dockerを構築してみましたがデフォルトではSSHログインできないので手順としてまとめてみました。

構成





Dockerホスト上に1つのSSHログインできるコンテナを作成してみます。

構築時のポイント

1.今回は特に困った点はありませんでした。短時間で素早く環境が出来上がります。

1 Dockerホストの構築


1-1 必要パッケージのインストール

パッケージのインストール

# yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

1-2 docker-ceのレポジトリ追加

CentOS7ではデフォルドのリポジトリのみですとdocker-ceがダウンロードできないので
docker-ce用のリポジトリを追加します。

# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# ll /etc/yum.repos.d/

# ll /etc/yum.repos.d/
total 32
-rw-r--r--. 1 root root 1664 Aug 31  2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 31  2017 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Aug 31  2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Aug 31  2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Aug 31  2017 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 31  2017 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 31  2017 CentOS-Vault.repo
-rw-r--r--  1 root root 2424 May  5 01:32 docker-ce.repo

1-3 docker-ceのインストール

docker-ceのインストール
# yum install docker-ce

1-4 Dockerの起動と自動起動設定

Dockerの起動。
# systemctl start docker

Dockerサービスの起動確認。
# systemctl status docker

Dockerの自動起動設定
# systemctl enable docker

以下のコマンドでDockerについての情報を見ることができます。
# docker info



2 ssh用コンテナの作成


2-1 Dockerfileの作成


# vi Dockerfile


FROM centos:centos7

# OpenSSH サーバをインストールする
RUN yum -y install openssh-server

# root でログインできるようにする
RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config

# root のパスワードを 設定
RUN echo 'root:password' | chpasswd

# 使わないにしてもここに公開鍵を登録しておかないとログインできない
RUN ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key

# sshd の使うポートを公開する
EXPOSE 22

# sshd を起動する
CMD ["/usr/sbin/sshd", "-D"]


2-2 Dockerイメージのビルド


 ビルド
# docker build -t centos7-ssh .
作成したイメージを確認
# docker images
 「centos7-ssh」があればOK



2-3 コンテナの起動


コンテナの起動
# docker run -it -d -p 2222:22 -h test1 --name test1-cont centos7-ssh:latest

-d :バックグラウンドで動作させる指定
-p 2222:22   :Dockerホストのport2222 を DockerコンテナのPort22に転送する指定
-h test1           :ホスト名をtest1で起動
--name test1-cont   :コンテナ名をtest1-cont で起動

2-4 コンテナの状態確認

# docker ps -a
CONTAINER ID        IMAGE                COMMAND               CREATED             STATUS                     PORTS               NAMES
bf9252f764de        centos7-ssh:latest   "/usr/sbin/sshd -D"   6 minutes ago       Exited (0) 2 minutes ago                       test1-cont

2-5 コンテナログイン

Dockerホストから直接ログインする

# docker exec -it test1-cont bash

SSHでリモートログインする
Teratermなどで 192.168.0.50(DockerホストのIP)、Port 2222 を指定して接続
Dockerfileで指定したroot/パスワードでログインします。


2-6 コンテナの起動/停止

コンテナの起動
# docker start <コンテナ名>
コンテナの停止
# docker stop <コンテナ名>

コンテナの削除
# docker rm <コンテナ名>

ここまででDockerホスト、コンテナの構築は完了です。

コメント