无法启动/停止/重新启动泊坞窗容器内的服务

我明白,容器,不像虚拟机,没有自己的内核。 为了使用服务,我必须对容器进行systemd集成。

我的主要重点是在容器中应用NAT规则,然后重新启动networking以使其生效。

遵循以下步骤 – https://github.com/docker-library/docs/tree/master/centos#systemd-integration

shrey67 / gateway-systemd与local / c7-systemd相同

以必要的权限启动Docker容器。

docker run -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro --cpus="0.33" - -network=d1 --cap-add=NET_ADMIN --cap-add=NET_RAW --hostname Temp --name Temp shrey67/gateway-systemd 

应用一些NAT规则

  [root@Temp /]# iptables -A FORWARD -i eth2 -o eth0 -m state -- state RELATED,ESTABLISHED -j ACCEPT [root@Temp /]# iptables -A FORWARD -i eth0 -o eth2 -j ACCEPT [root@Temp /]# iptables -A FORWARD -i eth2 -o eth1 -m state -- state RELATED,ESTABLISHED -j ACCEPT [root@Temp /]# iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT [root@Temp /]# iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A FORWARD -i eth2 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 -o eth2 -j ACCEPT -A FORWARD -i eth2 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth1 -o eth2 -j ACCEPT [root@Temp /]# service iptables start Redirecting to /bin/systemctl start iptables.service Failed to get D-Bus connection: Operation not permitted 

我能够保存NAT规则。

  [root@Temp /]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] [root@emp /]# service iptables restart Redirecting to /bin/systemctl restart iptables.service Failed to get D-Bus connection: Operation not permitted [root@Temp /]# systemctl restart iptables.service Failed to get D-Bus connection: Operation not permitted 

主机是CentOS 7

我解决了这个问题。 遵循这两个步骤,我可以启动/停止/重新启动服务。

第1步 – 将systemd与容器集成。 按照这个链接。

  https://github.com/docker- library/docs/tree/master/centos#systemd-integration 

第2步 – 使用特权标志启动容器。

  docker run -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged ubuntu 

只是为了logging,你可以通过使用https://github.com/gdraheim/docker-systemctl-replacement避免古老的“无法获得D-Bus连接:操作不允许”)…但是我不知道这是否足以启动一个iptables。 那是因为iptables在内核AFAIK中,所以在容器里面几乎没有任何的问题。