リモートのdocker のコンテナへSSHで接続する
作業マシンは、macOS/Windowsで、docker はリモートのUbuntu Serverの中。なんてことが多いと思います。
次のような接続。
PC ---<internet>---UbuntuServer--<dockerio>---container
直接 container に入りたくないですか?
ssh でやると2回の処理に別れます。
$ ssh ubuntu-server takuya@ubuntu # docker -it exec myContainer bash
一回で済ませたくないですか?
ssh myContainer
ssh -t でできます。
それTTYをアロケーションすればできます。
ssh -t ubuntu-server 'docker exec -it myContainer bash '
設定で更に省略
Host myContainer Hostname ubuntu-server RequestTTY force RemoteCommand docker exec -it e339fc9cfb25 bash
すっきり!
ssh myContainer
たまに、docker コンテナに openssh入れようとしてる人いる。 けど、殆どの場合必要ないからね。無駄な努力とCPU浪費してQiitaにエントリ書いて、DockerfileビルドしてSSD寿命縮めて、何してんだろうなぁ。もっとエコに生きようぜ。怠惰はプログラマの美徳だよ。
参考
追記
sshしなくてもdocker_host環境設定すれば、直接TCP経由でリモートのdockerに接続もできます。こっちの方がむしろ便利じゃないかな。 docker別ホストから接続、管理SockをTCP経由許可して利用する。 - それマグで!