Docker 컨테이너의 IP 테이블 나열

Docker 컨테이너의 IP 테이블 나열

iptablesUbuntu 16.04 Docker 컨테이너에서 이 명령을 실행하고 싶습니다 . 해당 사용자에게 루트 권한을 부여하여 사용자를 생성하고 이를 그룹에 추가했지만 여전히 루트로 실행되고 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

인용하다

관련 정보