2017-11-23 26 views
0

私は、コンテナがVMとは異なり、独自のカーネルを持っていないことを理解します。サービスで動作するためには、コンテナとのシステム統合を行わなければなりませんでした。ドッカーコンテナ内でサービスを開始/停止/再開することができません

私の主な焦点は、NATルールをコンテナに適用し、ネットワークを再起動してそれらを有効にすることです。 shrey67 /ゲートウェイにsystemdが必要な権限を持つドッカーコンテナを起動ローカル/ C7-システムD

同じであるhttps://github.com/docker-library/docs/tree/master/centos#systemd-integration

-

はの手順に従いました。

私はNATルールを保存することができていますいくつかのNATルール

[[email protected] /]# iptables -A FORWARD -i eth2 -o eth0 -m state -- 
    state RELATED,ESTABLISHED -j ACCEPT 
    [[email protected] /]# iptables -A FORWARD -i eth0 -o eth2 -j ACCEPT 
    [[email protected] /]# iptables -A FORWARD -i eth2 -o eth1 -m state -- 
    state RELATED,ESTABLISHED -j ACCEPT 
    [[email protected] /]# iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT 
    [[email protected] /]# 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 

    [[email protected] /]# service iptables start 
    Redirecting to /bin/systemctl start iptables.service 
    Failed to get D-Bus connection: Operation not permitted 

を適用

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 

[[email protected] /]# service iptables save 
    iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] 

    [[email protected] /]# service iptables restart 
    Redirecting to /bin/systemctl restart iptables.service 
    Failed to get D-Bus connection: Operation not permitted 

    [[email protected] /]# systemctl restart iptables.service 
    Failed to get D-Bus connection: Operation not permitted 

ホストマシンは、私はこの問題が解決しましたCentOSの7

答えて

0

です。この2つの手順を実行した後、サービスを開始/停止/再開できます。

ステップ1 - システムとコンテナを統合します。このリンクに従ってください。

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

ステップ2 - 特権フラグを持つコンテナを開始します。

レコードだけのために、あなたは「D-バス接続の取得に失敗しました:操作は許可されていない」由緒を避けている可能性が
docker run -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged 
    ubuntu 
0

https://github.com/gdraheim/docker-systemctl-replacementを使用することにより;)...しかし、私はそれが良いかどうかわかりませんiptablesを起動するのに十分です。これは、iptablesがカーネルAFAIKに入っているためです。そのため、コンテナ内でiptablesを操作することはほとんどありません。