メインマシンのimacにdockerは入れているが、マシンリソース食うのでできれば別のマシンで動かしたい。
ちょうど汎用鯖兼NASがあるので、そちらでdockerを動かしてimacからはコマンドのみでつなぎたい。
dockerd自体はrest-apiで動いている、というざっくり理解はあったので、これはポート開ければ
サーバーとクライアントで分離できるんじゃないかと思った。
こうすればOK
・Dockerが動いているサーバーにSSH(鍵、パスワードではダメ)でつながるようにする。
・環境変数:DOCKER_HOSTに「ssh://[user]@[host name]:[port]」とexportする。
これでつながる。
公式Doc
https://docs.docker.com/engine/reference/commandline/dockerd/#examples
socketとかtcpでつながるようなオプションもあるが、tcpでやろうとするとserviceの設定内容変えないといけなかったり、
セキュリティ的に推奨されない(まぁ家鯖なので特に気にしなくても良いが)ので、お手軽なSSHでつなぐ形でやる。
To use SSH connection, you need to set up ssh so that it can reach the remote host with public key authentication. Password authentication is not supported.
ドキュメントにもあるがSSHのパスワード認証はサポートされない。
なので鍵つくってそれで入れるようにしましょう。
クライアント側は
docker -H ssh://me@example.com:22 ps
のコマンドでつながる様になる。
何度も-H
で指定するのはタルいので、環境変数に入れとく。