Linux Can';t连接到digitalocean上的docker机器容器

Linux Can';t连接到digitalocean上的docker机器容器,linux,docker,docker-compose,digital-ocean,docker-machine,Linux,Docker,Docker Compose,Digital Ocean,Docker Machine,我在edge_web_1中运行了一个java servlet容器,我可以在端口8080上访问它,但在edge_nginx_1上无法访问80或443。有什么想法吗 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 99c

我在edge_web_1中运行了一个java servlet容器,我可以在端口8080上访问它,但在edge_nginx_1上无法访问80或443。有什么想法吗

# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
99c26fe2117e        nginx:1             "nginx -g 'daemon ..."   27 minutes ago      Up 27 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   edge_nginx_1
571ef4787dbc        edge_web            "/tmp/entrypoint.sh"     27 minutes ago      Up 27 minutes       0.0.0.0:8080->8080/tcp                     edge_web_1
7f0c15522a70        mongo:3             "/entrypoint.sh mo..."   58 minutes ago      Up 27 minutes       27017/tcp                                  edge_db_1
从docker主机:

# curl localhost:8080
{"code":404,"message":"HTTP 404 Not Found"}
(json响应意味着我已经访问了servlet容器,404就可以了)

我买443也一样。我尝试使用18080而不是80,以防与特权端口有关。主机是使用docker machine和digitalocean驱动程序创建的。容器是用docker compose配置的,它可以在本地工作,也可以与virtualbox驱动程序一起工作

奇怪的是(对我来说)在virtualbox docker机器上设置了作为docker用户运行的东西,在digitalocean上它似乎是作为root用户运行的。iptables规则也有很大的不同,但是digitalocean规则对于8080和8080来说没有什么不同

# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-ISOLATION  all  --  0.0.0.0/0            0.0.0.0/0
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            172.17.0.4           tcp dpt:8080
ACCEPT     tcp  --  0.0.0.0/0            172.17.0.3           tcp dpt:443
ACCEPT     tcp  --  0.0.0.0/0            172.17.0.3           tcp dpt:80

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
预计到达时间:

似乎与digitalocean docker机器实例不处理卷有关。查看nginx容器,它不包含卷中的文件。我可以用以下方法复制它:

docker-compose.yml

nginx:
  image: nginx:1
  ports:
    - "80:80"
  volumes:
    - ./testconf:/etc/nginx/conf.d
    - ./testhtml:/usr/share/nginx/html
testconf/nginx.conf

server {
  listen        80;
  server_name _;

  location / {
    root /usr/share/nginx/html;

    try_files $uri $uri/ @proxy;
  }
}
testhtml/index.html

<!DOCTYPE html>
<html>
  <body>
    <p>Hello</p>
  </body>
</html>

你好


显然,这是预期的行为,它将在本地工作,对virtualbox,然后在部署时不工作,或者我猜是EC2

对我来说,这似乎有点垃圾,更不用说出乎意料了

<!DOCTYPE html>
<html>
  <body>
    <p>Hello</p>
  </body>
</html>