ここを参考にして以下の設定をした
core@coreos ~ $ cat /etc/systemd/system/docker-tcp.socket [Unit] Description=Docker Socket for the API [Socket] ListenStream=2375 Service=docker.service BindIPv6Only=both [Install] WantedBy=sockets.target
これで docker api が使えるようになった!と喜んでいろいろ作業していたのだが、
ふと、どのネットワークからも参照可能であることに気づく
どんなイメージも build できるし、どんなコンテナも run できちゃうじゃん!
今回は社内にあるサーバーで、ローカルネットワークだけだったので何もなかったけどさくらとかのレンサバだったら悲劇的な何かが起こっていたかもしれない
api を公開する理由は、コンテナで docker-ui 的な自作 web アプリを立ち上げていて、 javascript からアクセスしたい、というもの
手軽に済ませるために nginx と html だけの構成で行きたかった
これを実現するために、 nginx でホストの docker api にアクセスするリバースプロキシを定義してある
(cgi はセットアップが面倒だったからやりたくなかったけど、結局それは手軽だったのかな?)
というわけで、ホストネットワークからはアクセスできるが、外部のネットワークからはアクセスできないようにしたい
ここを参考にして以下の設定にした
core@coreos ~ $ cat /etc/systemd/system/docker-tcp.socket [Unit] Description=Docker Socket for the API [Socket] ListenStream=172.17.0.1:2375 Service=docker.service BindIPv6Only=both [Install] WantedBy=sockets.target
これで一応うまくいっている気がする