DockerコンテナのIPテーブルの一覧表示

DockerコンテナのIPテーブルの一覧表示

iptablesUbuntu 16.04 Dockerコンテナでこのコマンドを実行したいです。そのユーザーにroot権限を付与してユーザーを作成し、それをグループに追加しましたが、まだrootとして実行されていないというsudoメッセージが表示されます。iptables

$ groups
stack root sudo

$ sudo whoami
root

$ sudo iptables --list
iptables v1.6.0: can't initialize iptables table `filter': Permission 
denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

私の/etc/sudoersファイルには次の行があります。この行は、グループ内のすべてのユーザー(自分が属するグループ)がコマンドを実行できる%sudo ALL=(ALL:ALL) ALLようにする必要があると思いますsudoが、依然として権限拒否エラーが発生します。

iptablesこのユーザーでこのコマンドを正常に実行するにはどうすればよいですか?

イメージがある Docker コンテナでこれを行っています。ubuntu:16.04

答え1

能力

iptablesコンテナ内からアクセスするには、--cap-add=NET_ADMINコンテナを初めて実行するときにスイッチを介して特定の機能を有効にする必要があります。

はい

$ docker run --cap-add=NET_ADMIN -it ubuntu:16.04

次にコンテナにiptables&を設定しますsudo

# apt update -y
# apt-get install iptables sudo -y

次に、コンテナ内でユーザーを設定してグループuser1に追加します。sudo

# adduser user1
# adduser user1 sudo

次に、ユーザーを次のように設定しますuser1

# su - user1

user1'sudo権限を確認してください。

$ sudo -l
[sudo] password for user1:
Matching Defaults entries for user1 on 1356bf8bd61a:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User user1 may run the following commands on 1356bf8bd61a:
    (ALL : ALL) ALL

iptables以下からアクセスできることを確認してくださいsudo

$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

引用する

関連情報