저는 최근 Debianstretch에서 Debianbuster로 내부적으로 systemd를 사용하는 Docker를 업데이트했습니다.
그 이후로는 작동하지 않습니다.
따라서 systemctl status
네임스페이스를 이에 따라 설정할 수 없습니다.
Dec 10 14:22:11 f6f3e33e6bf2 systemd[1]: Starting OpenVPN tunnel for apu__ssl_vpn_config...
Dec 10 14:22:11 f6f3e33e6bf2 systemd[1736]: openvpn-client@apu__ssl_vpn_config.service: Failed to set up mount namespacing: Permission denied
Dec 10 14:22:11 f6f3e33e6bf2 systemd[1736]: openvpn-client@apu__ssl_vpn_config.service: Failed at step NAMESPACE spawning /usr/sbin/openvpn: Permission denied
Dec 10 14:22:11 f6f3e33e6bf2 systemd[1]: openvpn-client@apu__ssl_vpn_config.service: Main process exited, code=exited, status=226/NAMESPACE
Dec 10 14:22:11 f6f3e33e6bf2 systemd[1]: openvpn-client@apu__ssl_vpn_config.service: Failed with result 'exit-code'.
Dec 10 14:22:11 f6f3e33e6bf2 systemd[1]: Failed to start OpenVPN tunnel for apu__ssl_vpn_config.
이제 elasticsearch와 비슷한 문제가 발생했으며 내 단위 구성에 다음 내용이 포함된 줄을 추가하여 문제를 해결했습니다.
[Service]
PrivateTmp=false
NoNewPrivileges=yes
하지만 아쉽게도 이번에는 문제가 해결되지 않았습니다.
또한 LXC(또는 LXD?)를 사용할 때 이 문제가 발생한다는 것을 발견했습니다. 하지만 docker를 사용하여 이 문제를 해결하는 방법을 모르겠습니다.
또한 다음과 같이 컨테이너를 시작합니다.
docker run -dt \
--tmpfs /run --tmpfs /tmp \
--volume /sys/fs/cgroup:/sys/fs/cgroup:ro \
--device=/dev/net/tun \
--cap-add SYS_ADMIN \
--cap-add NET_ADMIN \
<container>
어떤 조언이라도 대단히 감사하겠습니다.
답변1
다음과 같이 특권 모드에서 컨테이너를 실행해야 한다는 것이 밝혀졌습니다. (
또한 CAP_SYS_ADMIN
필요하지 않음)
docker run -dt \
--tmpfs /run --tmpfs /tmp \
--volume /sys/fs/cgroup:/sys/fs/cgroup:ro \
--device=/dev/net/tun \
--cap-add NET_ADMIN \
--privileged \
<container>