Docker Desktop for Windowsでのホスト-ゲスト通信設定


個人的にはdockerコマンドを意識せずにホスト-ゲスト間でteratermとかFTPクライアントとか使いたいので、その設定を行います。
※centos前提で進めます。ubuntu等の方は適宜読み替えてください。

↓を先に読むと幸せになれます。
dockerの基礎


目次

  1. ベースとなるコンテナの用意
  2. sshdのセットアップ
  3. コンテナイメージの作成
  4. sshポートフォワーディングを設定したコンテナを作成
  5. 動作確認


1.ベースとなるコンテナの用意

ベースコンテナ作成

コンテナイメージ化

そのイメージを使ってポートフォワードを設定したコンテナを作成

という3段階でssh接続できるコンテナを作成するため、まずは、ベースとなるコンテナを作成します。
> docker run --privileged -itd --name <コンテナ名> centos /sbin/init
※内部でsystemctlコマンドを使用するため/sbin/initで起動してください。


2.sshdのセットアップ

まず、1で作成したコンテナにログインします。
> docker exec -it <コンテナ名> /bin/bash

sshdに必要なopenssh-server のパッケージをインストールします。
# yum install openssh-server
※yumがうまくいかないときはdocker for windowsを再起動しましょう。

sshdを有効化します。
# systemctl enable sshd
※インストール時点で有効化されているはずですが念のため。

このコンテナにもう用はないのでログアウトしてコンテナを停止します。
# exit
> docker stop <コンテナ名>


3.コンテナイメージの作成

2で作成したコンテナを元に、コンテナイメージを作成します。
> docker container commit ①で作成したコンテナ名 イメージ名


4.sshポートフォワーディングを設定したコンテナを作成

3で作成したコンテナイメージを使用して、ポートフォワーディングを設定したコンテナを作制します。
> docker run --privileged -it -p 10000:22 -d --name コンテナ名 ③で作成したイメージのID /sbin/init
※10000はWindows側のポート番号。空いているポートならどこでもOKです。
※22はコンテナ側のポート番号。sshdの設定を変更していなければ22です。

作成したコンテナにdockerコマンドでログインします。
> docker exec -it <コンテナ名> /bin/bash

sshでログインする用のユーザの設定、または、rootパスワードの設定を行います。
# useradd -G wheel <ユーザ名>
# passwd <ユーザ名>

ユーザ設定関連→https://www.mathkuro.com/?p=177


5.動作確認

4でコンテナを起動する際に指定したポートとlocalhostを指定してteratermでログインしてみると、sshログインができることが確認できます。

ホストにlocalhost、ポート番号に④のWindows側のポート番号を指定

WinSCPでも同様にFTP/SFTP接続の確認ができます。

Leave a Reply

Your email address will not be published. Required fields are marked *