docker - Ubuntu 20.04 上的 Docker Swarm 连接被拒绝

标签 docker ubuntu networking swarm

更新如下!

我对 Ubuntu 20.04 上的 Docker swarm 感到困惑。我在 Scaleway 上创建了一台干净的 Ubuntu 机器,基本上遵循 https://dockerswarm.rocks/ 中的教程。 。我很快也找到了这个教程,它更短更清晰:https://blog.creekorful.com/2019/10/how-to-install-traefik-2-docker-swarm/ .

基本上(全部通过 SSH 连接到机器):

  • 已安装 Docker
  • 使用 # docker swarm init --advertise-addr=x.x.x.x 初始化 Swarm,其中我使用了服务器的远程 IP 地址。
  • 然后我创建了一个覆盖网络# docker network create --driver=overlay my-net
  • 我启动了一个简单的 hello world 容器:
version: '3'
services:
  helloworld:
    image: tutum/hello-world:latest
    ports:
            - 80:80
    networks:
     - my-net
networks:
    my-net:
       external: true

# docker stack deploy -c helloworld.yml helloworld

  • 从这一点来看,我认为我应该能够#curl 127.0.0.1并获得我的hello world。但是,我收到连接被拒绝: curl: (7) 无法连接到 127.0.0.1 端口 80:连接被拒绝

我尝试/检查的事情

docker 服务 ls 的输出

root@www2:~# docker service ls
ID                  NAME                    MODE                REPLICAS            IMAGE                      PORTS
md1bd2ydswo8        helloworld_helloworld   replicated          1/1                 tutum/hello-world:latest   *:80->80/tcp

docker ps 的输出

root@www2:~# docker ps
CONTAINER ID        IMAGE                      COMMAND                  CREATED              STATUS              PORTS               NAMES
7c2d9d7379c5        tutum/hello-world:latest   "/bin/sh -c 'php-fpm…"   About a minute ago   Up About a minute   80/tcp              helloworld_helloworld.1.7u99ox2ea6bylb5by8vdca0pt

在 ubuntu 上启用 UFW

UFW 默认是禁用的,但我也尝试启用它。这是# ufw status

的输出
root@www2:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
2376/tcp                   ALLOW       Anywhere                  
2377/tcp                   ALLOW       Anywhere                  
7946/tcp                   ALLOW       Anywhere                  
7946/udp                   ALLOW       Anywhere                  
4789/udp                   ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
2376/tcp (v6)              ALLOW       Anywhere (v6)             
2377/tcp (v6)              ALLOW       Anywhere (v6)             
7946/tcp (v6)              ALLOW       Anywhere (v6)             
7946/udp (v6)              ALLOW       Anywhere (v6)             
4789/udp (v6)              ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)

修改 IP 地址

我还尝试了curl到公共(public)IP和私有(private)IP,以及使用私有(private)IP作为advertise-addr。我还尝试通过 IP 和域名从我的笔记本电脑 curl 到远程服务器。但一切都无济于事...

尝试 Arch Linux

我在我的笔记本电脑上运行 Arch Linux,并尝试在我的笔记本电脑上本地执行相同的操作,没有任何问题。

非常欢迎任何想法,谢谢!

更新

因此,由于我几乎失去了它,我决定启动另一个 VPS,这次清理 Ubuntu 18.04(而不是 20.04),它立即工作,没有任何问题........

最佳答案

这几天我一直在为这个问题绞尽脑汁。在 IBM Cloud 上的新 Ubuntu 20.04 镜像上,无法公开来自 Docker Swarm 服务的端口。

我最终在 sudo Journalctl -u docker.service 的日志中找到了这条消息

level=error msg="Could not get ipvs family information from the kernel. It is possible that ipvs is not enabled in your kernel. Native loadbalancing will not work until this is fixed."

通过使用 sudo apt-get install ipvsadm 安装 ipvsadm,然后运行 ​​sudo ipvasdm(返回类似消息)来确认这一点。

我切换回 18.04,而不是尝试重建内核,但毫无疑问,如果您愿意的话,这是可能的。

关于docker - Ubuntu 20.04 上的 Docker Swarm 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62374440/

相关文章:

windows - Docker Compose说$ PWD变量未设置Windows

java - Docker Ubuntu 主机上的 jni4net

docker - 在 docker 镜像中运行 ubuntu 16.04 bash shell

ubuntu - 如何删除使用 Meteor Up 创建的部署实例?

python - 在 Ubuntu 14.10 上安装 anki 的问题

c - 为什么我们的数据包嗅探器不能接收到所有重放的 TCP 数据包?

docker - 是否可以将 Traefik 限制为当前(docker-compose)堆栈?

php - PHP 文件 : Display the content of a file in a webpage 中的 Shell 命令

linux - Docker swarm,在容器中收听但不在外部收听

android - wifi 断开连接后,Ionic Android 8.0 无法解析 4g 上的主机