個人的にはdockerコマンドを意識せずにホスト-ゲスト間でteratermとかFTPクライアントとか使いたいので、その設定を行います。
※centos前提で進めます。ubuntu等の方は適宜読み替えてください。
↓を先に読むと幸せになれます。
dockerの基礎
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 <ユーザ名>
ユーザ設定関連→http://www.mathkuro.com/?p=177
5.動作確認
4でコンテナを起動する際に指定したポートとlocalhostを指定してteratermでログインしてみると、sshログインができることが確認できます。
WinSCPでも同様にFTP/SFTP接続の確認ができます。
コメント