Docker で ufw を使う

Docker で作ったコンテナへ外部から接続する際、普通は「-p」オプションを使ってポートフォワーディングして外部からも特定のポートで接続できるようにするのが普通だと思います。

が、「-p」オプションを使ってポートフォワーディングすると、文字通りどこからでも接続できてしまうので、例えば MySQL などのように「ローカルネットワークからは全許可したいけどそれ以外からは接続できないようにしたい」っていう用途に不適*1です。

なので、ufw とか iptables を使ってポート制限掛けたいなーと思うのですが、このへんのブリッジネットワークの仕様が複雑で、ホスト側の ufw などでは制御しきれないっぽいのです。

で、最新の Docker*2では、ブリッジネットワークではなくホスト側のネットワークにそのまま繋ぐ設定があるのでそれを使用してコンテナを立ち上げるとホスト側の ufw 設定を使うことが可能、ということで Docker をバージョンアップしてそれを使うことにした。

# add-apt-repository ppa:docker-maint/testing
# apt-get update
# apt-get install docker.io
# docker.io run -d --net=host mysql-container mysql-image

もし、ブリッジネットワークで ufw を使う方法があったら教えてほしい*3

*1:MySQL にもアクセス制御的な処理はありますが…

*2:0.11以降

*3:ip route とかを使うのでも可