それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

dockerのコンテナにホストssh経由で接続する

リモートの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経由許可して利用する。 - それマグで!