私のubuntu 16.04ホストに2つのコンテナを接続しようとすると、あるコンテナから別のコンテナへメッセージを送信できません。1つのDockerコンテナから別のDockerコンテナへのロギング
私は(syslog-ng
して、syslog-サービスを提供して)一つの容器を開始しました:https://github.com/bobrik/docker-syslog-ng:このコンテナを定義した
docker run -d -p 127.0.0.1:515:514/udp --name syslog-ng bobrik/syslog-ng
。 https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/configuring-sources-network.htmlによれば、syslog-ng.conf内のudp(ip(0.0.0.0), port(514));
は、すべてのip-connectionsを受け入れることを可能にするはずです。
今、私が使用してコンテナにホストからログインできます。
logger -n 127.0.0.1 -P 515 test123
第二の容器が
docker run -it --link syslog-ng ubuntu /bin/bash
との両方のケースでは(一度のない、--link
で1回)で開始されました、ログにはコンテナは使用できません。つまり、
logger -n 127.0.0.3 -P 515
エラーを返さないerro rメッセージが表示されますが、メッセージはログに追加されません。 (リンクされたコンテナの場合は127.0.0.1とsyslog-ngでも試してみてください)。
質問は次のとおりです。なぜ、コンテナのログインができないのですか?
私は別のコンテナを起動した場合、両方が、同じネットワーク上docker network inspect bridge
戻り、次のとおりです。
cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3 syslog-ng 3acef55e0182
172.17.0.5 4f7d0101f97d
だから、シスログ:
[
{
"Name": "bridge",
"Id": "6836c8a52555f30f27001daf9b111ad41a035a31783250e043c34602ea83cfe3",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Containers": {
"3acef55e018280571410b63b0cb7314ba354b67fb6523662b48ad09be8424423": {
"Name": "syslog-ng",
"EndpointID": "d6f2ad9cc9b5f6a5030e6061c4abb600ff7b0f16711f169954dd446f1351cb08",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
},
"4f7d0101f97dca63b160e16a5e298c45f2ff51aa35085d0cdec96497a598be1a": {
"Name": "goofy_lamarr",
"EndpointID": "e357d6a99f67964bac4619d1ac984cd361a9c39137ea8d67a1ebc641e498919b",
"MacAddress": "02:42:ac:11:00:05",
"IPv4Address": "172.17.0.5/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
これは私がログインしようとUbuntuのコンテナの/etc/hosts
です-ngはsyslog-ngまたは172.17.0.3で利用できるはずです。
私がhttps://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/を正しく理解していれば、リンクはsyslog-ng
に直接ログすることができます。リンクがなければ、メッセージを1つのコンテナからipでポートを公開したコンテナに送ることができます。 https://docs.docker.com/engine/userguide/networking/。
Logging from one docker container to anotherと同じですが、具体的なコンテナはありません。
誰にもこのロギングが不可能な理由がありますか?
おかげで、これが問題だった、それは
Brのに役立ちます願っています!コンテナはネットワーク内で通常のポートで通信するように見え、公開されたポートはホスト上でのみ使用されます。 –