Docker-compose 错误:无法限制容器间通信

ris*_*sod 5 docker dockerfile docker-compose docker-swarm

我尝试使用命令运行我的应用程序服务docker stack deploy。使用此命令我收到以下错误:

"starting container failed: error creating external connectivity network: cannot restrict inter-container communication: please ensure that br_netfilter kernel module is loaded"
Run Code Online (Sandbox Code Playgroud)

我的服务的 Docker-compose 文件如下,它只包含一项服务:

version: '3.1'

services:
  app_service:
    image: app-image:latest
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用 simple 来运行此服务docker run app-image:latest,那么它会正确运行。这里可能有什么问题?

以下是输出docker info

Containers: 44
 Running: 0
 Paused: 0
 Stopped: 44
Images: 11
Server Version: 18.06.0-ce
Storage Driver: vfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: active
 NodeID: ifx6qbtt8ylkxqxgjbk67rc6e
 Is Manager: true
 ClusterID: p8s73udo6dq4ivm95frfrfb4f
 Managers: 1
 Nodes: 1
 Orchestration:
  Task History Retention Limit: 5
 Raft:
  Snapshot Interval: 10000
  Number of Old Snapshots to Retain: 0
  Heartbeat Tick: 1
  Election Tick: 10
 Dispatcher:
  Heartbeat Period: 5 seconds
 CA Configuration:
  Expiry Duration: 3 months
  Force Rotate: 0
 Autolock Managers: false
 Root Rotation In Progress: false
 Node Address: 10.10.140.7
 Manager Addresses:
  10.10.140.7:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d64c661f1d51c48782c9cec8fda7604785f93587
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.4.0-131-generic
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 8GiB
Name: RNI-PD-CT06
ID: UEG4:OVFJ:G55V:KIR4:QJD2:LQUJ:DVLQ:WKJY:AKQB:MKSO:Z4ZN:UF56
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 38
 Goroutines: 161
 System Time: 2018-08-20T12:25:06.808731767Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Run Code Online (Sandbox Code Playgroud)

And*_*yko 4

根据警告消息,该bridge-nf-call-iptables警告已被禁用,请运行以下代码来解决该警告:

sudo sysctl net.bridge.bridge-nf-call-iptables=1
sudo sysctl net.bridge.bridge-nf-call-ip6tables=1
Run Code Online (Sandbox Code Playgroud)

另外,请确保该br_netfilter模块已启用,为此请运行下面的命令并确保br_netfilter在 linux.kernel_modules 中列出:

 lxc profile show docker
Run Code Online (Sandbox Code Playgroud)

如果未列出,请复制 中列出的所有值linux.kernel_modules并将其添加,br_netfilter到复制值的末尾,然后将所有值放在下面的命令中而不是 <[COPIED_LIST]> 中:

lxc profile set docker linux.kernel_modules <[COPIED_LIST]>
Run Code Online (Sandbox Code Playgroud)