相关疑难解决方法(0)

如果找不到上游主机,则设置nginx不会崩溃

我们在Docker的常见域下有几个rails应用程序,我们使用nginx将请求定向到特定应用程序.

our_dev_server.com/foo # proxies to foo app
our_dev_server.com/bar # proxies to bar
Run Code Online (Sandbox Code Playgroud)

Config看起来像这样:

upstream foo {
  server foo:3000;
}

upstream bar {
  server bar:3000;
}

# and about 10 more...

server {
  listen *:80 default_server;

  server_name our_dev_server.com;

  location /foo {
      # this is specific to asset management in rails dev
      rewrite ^/foo/assets(/.*)$ /assets/$1 break;
      rewrite ^/foo(/.*)$ /foo/$1 break;
      proxy_pass http://foo;
  }

  location /bar {
      rewrite ^/bar/assets(/.*)$ /assets/$1 break;
      rewrite ^/bar(/.*)$ /bar/$1 break;
      proxy_pass http://bar;
  }

  # and about 10 more... …
Run Code Online (Sandbox Code Playgroud)

nginx url-rewriting proxypass

94
推荐指数
4
解决办法
4万
查看次数

如何在Docker容器中设置静态IP地址?

我非常满意Docker默认给我的IP范围176.17.x.x,所以我不需要创建一个新桥,我只想给我的容器一个静态地址这个范围,所以我可以指向客户端浏览器直.我试过用

RUN echo "auto eth0" >> /etc/network/interfaces
RUN echo "iface eth0 inet static" >> /etc/network/interfaces
RUN echo "address 176.17.0.250" >> /etc/network/interfaces
RUN echo "netmask 255.255.0.0" >> /etc/network/interfaces
RUN ifdown eth0
RUN ifup eth0
Run Code Online (Sandbox Code Playgroud)

从Dockerfile,它正确填充interfaces文件,但接口本身没有改变.实际上,在容器中运行ifup eth0会出现此错误:

RTNETLINK答案:不允许操作无法启动eth0

linux networking docker

43
推荐指数
5
解决办法
8万
查看次数

在docker compose中使用主机网络和其他网络

我正在尝试为我的项目设置开发环境.

我有一个容器(ms1)应该放在他自己的网络中(在我的情况下是"服务"),以及一个容器(apigateway)应该访问该网络,同时将一个http端口暴露给主机的网络.

理想情况下,我的docker撰写文件看起来像这样:

version: '2'
services:
    ms1:
        expose:
            - "13010"
        networks:
            services:
                aliases:
                    - ms1
   apigateway:
        networks:
            services:
                aliases:
                    - api
        network_mode: "host"
networks:
    services:
Run Code Online (Sandbox Code Playgroud)

docker-compose不允许同时使用network_mode和网络.

我还有其他选择吗?

目前我正在使用这个:

   apigateway:
        networks:
            services:
                aliases:
                    - api
        ports:
            - "127.0.0.1:10000:13010"
Run Code Online (Sandbox Code Playgroud)

然后apigateway容器侦听0.0.0.0:13010.它工作但它很慢,如果主机的互联网连接断开,它会冻结.

另外,我计划将来在docker上使用vagrant,它是否允许以干净的方式解决?

networking vagrant docker docker-compose devops

13
推荐指数
1
解决办法
1万
查看次数

每次当我使用docker启动容器时,它会获得不同的IP

如何修复容器的静态IP?

它说,首先我开始一个容器并进行检查

"NetworkSettings": {
    "IPAddress": "XX.XX.206.98",
    "IPPrefixLen": 27,
    "Gateway": "XX.XX.206.105",
    "Bridge": "public",
    "PortMapping": null,
    "Ports": {}
},
Run Code Online (Sandbox Code Playgroud)

然后我停下来,然后重启,就像

"NetworkSettings": {
    "IPAddress": "XX.XX.206.99",
    "IPPrefixLen": 27,
    "Gateway": "XX.XX.206.105",
    "Bridge": "public",
    "PortMapping": null,
    "Ports": {}
},
Run Code Online (Sandbox Code Playgroud)

如你所见,它改变了.我刚刚创建了一个名为public的桥,并-b=public添加了启动docker .如何为容器设置静态IP?

ip lxc docker

8
推荐指数
1
解决办法
3911
查看次数

创建docker机器或容器时如何设置特定(固定)IP地址?

当我创建容器时,我想在同一个LAN中设置特定容器的IP地址.

那可能吗?

如果没有,创建后我可以编辑DHCP IP地址吗?

ip containers bridge docker

7
推荐指数
1
解决办法
5302
查看次数

Docker Container没有IP地址

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                     PORTS                    NAMES
ca030d3cf1c2        konakart_app                 "/bin/sh -c '/bin/bas"   16 minutes ago      Exited (1) 5 minutes ago                            konakart_app
08909245064b        beantoast/dtkonakart_mysql   "/entrypoint.sh mysql"   54 minutes ago      Up 54 minutes              0.0.0.0:3300->3306/tcp   konakart_db
Run Code Online (Sandbox Code Playgroud)

我正在尝试在两个不同的容器中运行konakart应用程序和它的数据库.数据库似乎工作正常,但应用程序本身似乎没有IP.当我输入时,docker inspect ca03我得到以下内容:

            "EndpointID": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "MacAddress": "",
Run Code Online (Sandbox Code Playgroud)

知道如何将我的IP地址,端口8080分配给konakart_app?

ip docker konakart

7
推荐指数
1
解决办法
7880
查看次数

使用复杂的网络配置从 Virtualbox 迁移构建 docker 环境

我有一个环境,其中包含 3 个应用程序,2 个在 Windows 中运行,1 个在 Debian 操作系统中运行。
出于测试目的,我已经使用 VirtualBox VM(用于运行 Debian 操作系统)在仅 1 台 PC(运行 Windows 10)中构建环境。
下面是详细的网络配置:

主机 PC(使用 2 个 VirtualBox Host Only 适配器):

Ethernet adapter VirtualBox Host-Only Network:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::ec0c:3c16:4f85:1a5e%12
   IPv4 Address. . . . . . . . . . . : 192.168.1.11
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . …
Run Code Online (Sandbox Code Playgroud)

docker

7
推荐指数
1
解决办法
124
查看次数

重新启动命名容器会分配不同的IP

我试图使用Docker部署我的应用程序,并遇到一个问题,重新启动命名容器为容器分配不同的IP.也许解释我在做什么会更好地解释这个问题:

  • Postgres在一个名为的单独容器内运行 "postgres"
    $ PG_ID=$(docker run --name postgres postgres/image)
  • 我的webapp容器链接到postgres容器
    $ APP_ID=$(docker run --link postgres:postgres webapp/image)

将postgres容器映像链接到webapp容器,在webapp容器中插入一个带有postgres容器IP的hosts文件条目.这允许我在我的webapp中指向postgres db postgres:5432(我正在使用Django btw).这一切都很好,除非由于某种原因postgres崩溃.

在我手动停止postgres进程以模拟postgres进程崩溃之前,我验证了postgres容器的IP:

$ docker inspect --format "{{.NetworkSettings.IPAddress}}" $PG_ID
172.17.0.73
Run Code Online (Sandbox Code Playgroud)

现在模拟崩溃我停止postgres容器:

$ docker stop $PG_ID
Run Code Online (Sandbox Code Playgroud)

如果现在我通过使用重启postgres

$ docker start $PG_ID
Run Code Online (Sandbox Code Playgroud)

容器的ip更改:

$ docker inspect --format "{{.NetworkSettings.IPAddress}}" $PG_ID
172.17.0.74
Run Code Online (Sandbox Code Playgroud)

因此,指向webapp容器中的postgres容器的IP不再正确.我通过命名容器docker为它指定一个名称,使用特定的配置,以便您可以可靠地链接容器(网络和卷).如果IP改变,这似乎打败了目的.

如果每次postgres重新启动时我都必须重新启动我的webapp进程,这似乎没有比使用单个容器来运行这两个进程更好的了.然后我可以使用supervisor或类似的东西来保持它们都运行并用于localhost在进程之间进行链接.

我还是Docker的新手,所以我做错了什么,或者这是docker中的一个bug?

linux networking docker linux-containers

6
推荐指数
1
解决办法
1902
查看次数

如何将 Docker 之外的 NGINX 反向代理代理到 proxy_pass 到 Docker 容器

我有一个在 CentOS 服务器上运行的 NGINX,并希望通过 proxy_pass 运行在同一主机上运行的 docker 容器。

当使用 proxy_pass 和容器的 IP 时它可以工作,但是如果机器重新启动有时容器的 IP 会发生变化,并且必须手动编辑 nginx.conf 以重新指向容器的新 IP。我知道 NGINX 可以在它自己的 docker 容器内设置并链接到其他正在运行的容器,但这需要很长时间来设置和测试。

有没有办法以某种方式使用容器名称或其他不会直接在主机的 NGINX 上更改的标识符?

reverse-proxy nginx docker docker-compose

6
推荐指数
1
解决办法
7338
查看次数

在启动 docker 容器时向主机 /etc/hosts 文件添加条目

我希望能够将主机名添加到映射到 docker 容器的笔记本电脑 /etc/hosts 中。由于容器 ips 不是静态的,我启动/重新启动容器的每个站点都需要手动更新 /etc/hosts 文件,这不是很实用。

我正在寻找一种简单的方法来解决这个问题。我可以做某种脚本,它监听 docker 事件,检查容器 ip 并更新 /etc/hosts,但我不想重新发明轮子。(像这样:https : //github.com/discordianfish/docker-spotter)但我无法真正理解它是如何工作的。

有人有建议吗?谢谢你。

docker

5
推荐指数
1
解决办法
2740
查看次数

如何在 Mac 中更改 docker 网络 IP 地址

我在 Mac 上运行 Docker 时遇到了一个恼人的问题,希望得到您的帮助。问题是我公司的内部 git 存储库地址为 172.17.28.245,该 IP 地址与默认 docker 网络 IP 地址 172.17.0.0 冲突。所以每当我运行下面的命令时,我都会遇到这个问题

Ping git.xxx.net
Then I have 
PING git.xxx.net (172.17.28.245) 56(84) bytes of data.
From 08be4336c264 (172.17.0.2) icmp_seq=1 Destination Host Unreachable
From 08be4336c264 (172.17.0.2) icmp_seq=2 Destination Host Unreachable
From 08be4336c264 (172.17.0.2) icmp_seq=3 Destination Host Unreachable
Run Code Online (Sandbox Code Playgroud)

那么,谁能帮我弄清楚如何在 mac 中解决这个问题?

我在 Mac 中使用 Docker QuickStart Terminal 来启动。

谢谢

macos networking docker

5
推荐指数
1
解决办法
8118
查看次数

Docker中的远程调试节点9

我正在尝试远程调试docker中的nodejs 9.

> testnodedockerproj@0.0.0 debug /home/deb
> node --inspect=9229 ./bin/www
Debugger listening on ws://127.0.0.1:9229/75db828f-4b4b-491c-99d1-0eb60a82e45c
For help see https://nodejs.org/en/docs/inspector
Run Code Online (Sandbox Code Playgroud)

http:// localhost:3100 /响应

GET /robots.txt 404 1752.471 ms - 905
GET / 304 1838.729 ms - -
GET /stylesheets/style.css 304 114.501 ms - -
Run Code Online (Sandbox Code Playgroud)

但我无法连接到ws://127.0.0.1:9229/75db828f-4b4b-491c-99d1-0eb60a82e45c.

docker compose文件具有以下端口配置:

ports:
    - "3100:3000"
    - "9339:9229"
Run Code Online (Sandbox Code Playgroud)

我可以从docker容器内部连接到节点调试URL.但我无法从我的主机系统到达它.预期的终点应为ws://127.0.0.1:9 33 9/75db828f-4b4b-491c-99d1-0eb60a82e45c,并且无法访问.

是否有任何特定的docker配置可以连接到Web套接字?

如何到达此节点调试端点?

@Update

我已设法连接到调试端点.

node debug命令应该是:

node --inspect=[::]:9229 ./bin/www
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以连接到端口9339并连接调试器.

remote-debugging node.js docker

2
推荐指数
1
解决办法
491
查看次数