2016-05-11 16 views
1

画像を変更したり、コンテナを停止/開始することなく、runitmeで一部のDockerコンテナポートを一時的に無効にしたいと考えています。一時的にDockerで公開されているポートを無効にする

私はいくつかのサービスを実行しており、Webクライアント、認証サービス、mongodbインスタンス、およびロードバランサをすべて同じVM内に持っています。

ドッカーで実行時に公開されたポートを変更するAPIがないので、私はiptablesコマンドで作業する必要があります。

したがって、パラメータとして渡された特定のコンテナ名に関連するポートを無効にするコードをいくつか作成しました。

I認証サーバに対して次のルールがあります。

 
-A DOCKER -d 172.18.0.16/32 ! -i br-3ec61cf14e6e -o br-3ec61cf14e6e -p tcp -m tcp --dport 8081 -j ACCEPT 

私のコードは次のように変更します。私はもう認証することができません期待していこの時点で

 
-A DOCKER -d 172.18.0.16/32 ! -i br-3ec61cf14e6e -o br-3ec61cf14e6e -p tcp -m tcp --dport 8081 -j DROP 

を、しかし、私はまだそれを行うことができます。

ロードバランサに対して同じコードを試しても、すべて正常に動作しますが、期待通りにURLにアクセスできません。 nginxのための

これらのオリジナルのルール:ここ

 
-A DOCKER -d 172.18.0.11/32 ! -i br-3ec61cf14e6e -o br-3ec61cf14e6e -p tcp -m tcp --dport 81 -j ACCEPT 
-A DOCKER -d 172.18.0.11/32 ! -i br-3ec61cf14e6e -o br-3ec61cf14e6e -p tcp -m tcp --dport 80 -j ACCEPT 
-A DOCKER -d 172.18.0.11/32 ! -i br-3ec61cf14e6e -o br-3ec61cf14e6e -p tcp -m tcp --dport 443 -j ACCEPT 

修正するもの:ドッキングウィンドウのpsコマンドの出力

 
[[email protected] ~]# docker ps 
CONTAINER ID  IMAGE      COMMAND     CREATED    STATUS    PORTS                NAMES 
d007479faaf4  service-auth-nodejs   "/bin/sh -c \"/usr/bin" 2 days ago   Up 2 days   0.0.0.0:8081->8081/tcp            authentication-microservice 
c073989b49ce  nginx      "/bin/bash -c /etc/ng" 2 days ago   Up 2 days   0.0.0.0:443->443/tcp, 0.0.0.0:9000->80/tcp, 0.0.0.0:10000->81/tcp nginx-microservice 
432ea895d90a  web       "/bin/sh -c \"/usr/bin" 2 days ago   Up 2 days   0.0.0.0:8000->8000/tcp            webclient-microservice 
0c8141da8c0b  mongo      "/entrypoint.sh mongo" 2 days ago   Up 2 days   0.0.0.0:27017->27017/tcp           mongo-microservice 
[[email protected] ~]# 

以下

 
-A DOCKER -d 172.18.0.11/32 ! -i br-3ec61cf14e6e -o br-3ec61cf14e6e -p tcp -m tcp --dport 81 -j DROP 
-A DOCKER -d 172.18.0.11/32 ! -i br-3ec61cf14e6e -o br-3ec61cf14e6e -p tcp -m tcp --dport 80 -j DROP 
-A DOCKER -d 172.18.0.11/32 ! -i br-3ec61cf14e6e -o br-3ec61cf14e6e -p tcp -m tcp --dport 443 -j DROP 

私は何かが足りないのですか?

答えて

1

あなたのルールでのサブネットが異なっている:

172.18.0.16/32 (nginx) 

172.18.0.11/32 (authentication service) 

ので、おそらく、あなたの認証サーバのためのパケットは172.18.0.16を経由して到着し、まだ別のルールで許可されています。

+0

サブネットは同じです。認証には172.18.0.16、nginxには172.18.0.11となります。 質問には、両方のサービスのすべてのルール、ロードバランサのルールと認証用のルールがあります。 – carlomas

関連する問題