【问题标题】:Cannot use docker-compose with overlay network无法将 docker-compose 与覆盖网络一起使用
【发布时间】:2019-08-29 00:02:53
【问题描述】:

我对这里发生的事情感到非常困惑,但我已将其范围缩小到一个非常小的测试用例。这是我的 docker-compose 文件:

version: "3.7"
networks:
    cl_net_overlay:
        driver: overlay
services:
  redis:
    image: "redis:alpine"
    networks:
            - cl_net_overlay

cl_net_overlay 网络不存在。当我运行它时:

docker-compose up

它停顿了一会儿,然后说:

WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

Creating network "tmp_cl_net_overlay" with driver "overlay"
Recreating tmp_redis_1 ... error

ERROR: for tmp_redis_1  Cannot start service redis: attaching to network failed, make sure your network options are correct and check manager logs: context deadline exceeded

ERROR: for redis  Cannot start service redis: attaching to network failed, make sure your network options are correct and check manager logs: context deadline exceeded
ERROR: Encountered errors while bringing up the project.

这个文件在我以前的笔记本电脑上运行良好。我的 docker 和 docker-compose 应该是最新的,因为这是一台全新的笔记本电脑。是不是我遗漏了一些谜题?

05:01:11::mlissner@gabbro::/tmp 
↪ docker --version
Docker version 19.03.1, build 74b1e89
05:01:57::mlissner@gabbro::/tmp 
↪ docker-compose --version
docker-compose version 1.24.1, build 4667896b

有什么想法吗?我整天都在努力让它工作,但我感觉自己有点疯了。


小型跟进。消息说:

确保您的网络选项正确并检查管理器日志

我不知道如何查看管理器日志。这可能是有用的第一步?


另一个跟进,每个 cmets。如果我尝试部署它,我将没有日志并且无法启动:

05:44:32::mlissner@gabbro::~/Programming/courtlistener/docker/courtlistener 
↪ docker stack deploy --compose-file /tmp/docker-compose.yml test2
Creating network test2_cl_net_overlay2
Creating service test2_redis

05:44:50::mlissner@gabbro::~/Programming/courtlistener/docker/courtlistener 
↪ docker service ls
ID                  NAME                 MODE                REPLICAS            IMAGE                                        PORTS
5y7o01o5mifn        test2_redis          replicated          0/1                 redis:alpine   

05:44:57::mlissner@gabbro::~/Programming/courtlistener/docker/courtlistener 
↪ docker service ps 5y
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE             ERROR                              PORTS
0kbph0ie8qth        test2_redis.1       redis:alpine        gabbro              Ready               Rejected 4 seconds ago    "mkdir /var/lib/docker: read-o…"   
inr81c3r4un7         \_ test2_redis.1   redis:alpine        gabbro              Shutdown            Rejected 9 seconds ago    "mkdir /var/lib/docker: read-o…"   
tl1h6dp90ur2         \_ test2_redis.1   redis:alpine        gabbro              Shutdown            Rejected 14 seconds ago   "mkdir /var/lib/docker: read-o…"   
jacv2yvkspix         \_ test2_redis.1   redis:alpine        gabbro              Shutdown            Rejected 19 seconds ago   "mkdir /var/lib/docker: read-o…"   
7cm6e8snf517         \_ test2_redis.1   redis:alpine        gabbro              Shutdown            Rejected 19 seconds ago   "mkdir /var/lib/docker: read-o…"   

另一个想法:以 root 身份运行。同样的问题。

【问题讨论】:

  • 检查您的节点可用性是否处于耗尽状态。你也使用 Linux 还是 Windows?
  • 这是在 Ubuntu 19.04 上。检查节点状态:docker node inspect --format {{.Spec.Availability}} iq 返回active。谢谢!
  • 当您将它作为堆栈而不是组合运行时会发生什么?
  • 谢谢@YamaçKurtuluş。如果我尝试部署它就会失败,没有日志,什么都没有。我用详细信息更新了原始问题。
  • 您可以为任何服务容器运行docker logs 吗?当您不使用覆盖网络时它也有效吗?是否可以重新创建 swarm 和网络?

标签: docker docker-compose docker-networking


【解决方案1】:

你有合适的插件吗(见下面docker info命令的更多内容)?

Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay

它适用于:

$ docker swarm init
$ docker-compose up
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

Creating network "stackoverflow-57701373_cl_net_overlay" with driver "overlay"
Pulling redis (redis:alpine)...
alpine: Pulling from library/redis
9d48c3bd43c5: Pull complete
(...)
redis_1  | 1:M 29 Aug 2019 01:27:31.969 * Ready to accept connection

时间:

$ docker --version
Docker version 19.03.1-ce, build 74b1e89e8a

info:

$ docker info
Client:
 Debug Mode: false

Server:
(...)
 Server Version: 19.03.1-ce
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: active
  NodeID: ff5mogx0ph4pgmwm2zrbhmjb4
  Is Manager: true
  ClusterID: vloixv7g75jflw5i1k81neul1
  Managers: 1
  Nodes: 1
(...)

【讨论】:

  • 我的一个区别是我在Network 插件中缺少ipvlan。老实说,我不知道这是否看起来很有希望。
  • 有点像ipvlan 是一个遗留的东西。
  • 嗯...您是否尝试使用标志--force-recreate 运行它?我可以确认的是,我尝试使用您的 docker-compose.yaml 并在 Archlinux 上使用类似的输出,这可能会给您带来不好的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多