标签: docker-networking

Docker可以将多个容器端口映射到一个主机端口吗?

基于我的理解端口映射是1比1,我不明白为什么用于容器数据中的端口映射的数据结构是这样的,

"NetworkSettings": {
[...]
"Ports": {
    "8888/tcp": [
        {
            "HostIp": "0.0.0.0",
            "HostPort": "8888"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

"8888/tcp"键映射到一个列表,而不是单个对象.因此在Java客户端中,Ports的数据结构是这样的Map<String, List<PortBinding>>,但是List这里只能包含1个元素吗?还是我非常想念一些基本的东西?

docker docker-networking

4
推荐指数
1
解决办法
2469
查看次数

Docker无法解析主机名

我需要知道在同一台机器上运行的某个容器的主机名(或IP地址).正如我已在此处评论(但尚无答案),我使用了docker-compose.该文件称,谱写会自动创建在同一定义的所有容器中的主机名条目docker-compose.yml文件:

服务的每个容器都加入默认网络,并且该网络上的其他容器都可以访问它们,并且它们可以在与容器名称相同的主机名上发现.

但我看不到任何主持人通过docker exec -it my_container tail -20 /etc/hosts.我也尝试添加links到我的容器中,但没有任何改变.

docker docker-compose docker-networking

4
推荐指数
1
解决办法
9147
查看次数

docker --net与--network

--net对于--network与docker一起使用vs 背后的原因,我似乎找不到很好的解释。
--help不显示--net而仅显示--network,有人请解释区别吗?

谢谢 !

docker docker-networking docker-network

4
推荐指数
1
解决办法
1009
查看次数

启用Docker容器之间的广播

我一直在尝试在一些容器之间启用一些UDP发现。它调出容器默认情况下已禁用广播,而inet缺少brd:

$ ip addr show dev eth0 27: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 00:00:01:4f:6a:47 brd ff:ff:ff:ff:ff:ff inet 172.17.0.12/16 scope global eth0 valid_lft forever preferred_lft forever

堆:

  • 主持人:ubuntu 14.04
  • 容器:Ubuntu 12.04
  • 码头工人1.8.3

如何启用广播?到目前为止,这是我尝试过的方法:

  • ip link set dev eth0 broadcast 172.17.255.255RTNETLINK answers: Invalid argument
  • 与--privileged容器相同
  • 与NET_ADMIN和NET_BROADCAST容器功能相同

ubuntu ubuntu-12.04 docker docker-networking

3
推荐指数
1
解决办法
2383
查看次数

如何链接多个Docker容器并封装结果?

我有一个连接到Neo4j数据库的Node.js Web应用程序.我想将这些封装在一个Docker镜像中(也使用Neo4j Docker容器),但我是一个Docker新手,似乎无法解决这个问题.在最新的Docker版本中,推荐的方法是什么?

我的直觉是运行嵌套在 app容器的Neo4j 容器.但是从我读过的内容来看,我认为支持/推荐的方法是将容器链接在一起.我需要的是在这张图片中很好地说明了.但是图像来自的文章对我来说并不清楚.无论如何,它正在使用即将被弃用的旧容器链接,而这些天推荐使用网络.非常感谢教程或解释.

另外,docker-compose如何适应这一切?

encapsulation docker docker-networking

3
推荐指数
1
解决办法
2602
查看次数

docker从容器连接到主机隧道

我想从我的docker容器内部与一个在主机中使用隧道的postgres数据库连接.在主机中,我有一个指向数据库主机的隧道:

host$ sudo netstat -tulpen  | grep 555
tcp        0      0 127.0.0.1:5555          0.0.0.0:*               LISTEN      1000       535901      18361/ssh       
tcp6       0      0 ::1:5555                :::*                    LISTEN      1000       535900      18361/ssh       
Run Code Online (Sandbox Code Playgroud)

隧道设置为:

host$ ps -aux | grep 18361
ubuntu    9619  0.0  0.0  10432   628 pts/0    S+   10:11   0:00 grep --color=auto 18361
ubuntu   18361  0.0  0.0  46652  1420 ?        Ss   Nov16   0:00 ssh -i /home/ubuntu/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -f -N -L 5555:localhost:5432 user@remotehost
Run Code Online (Sandbox Code Playgroud)

从主机我可以启动psql命令:

host$ psql -h localhost -p 5555 --username user db_name
psql (9.3.15, …
Run Code Online (Sandbox Code Playgroud)

ssh-tunnel docker docker-networking docker-container

3
推荐指数
1
解决办法
4391
查看次数

为什么Docker覆盖网络需要共识?

刚刚阅读了Docker覆盖网络,非常棒的东西。我似乎找不到一件事的答案。

根据文档:

  • 如果安装并使用Docker Swarm,则可以自动在管理者/工作人员主机之间获得覆盖网络,而无需进行其他任何配置。但是 ...
  • 如果只需要跨多个主机的(非群集)覆盖网络,则需要使用外部“ KV商店”(共识服务器)(例如Consul或ZooKeeper)配置该网络

我想知道为什么会这样。显然,覆盖网络需要在同行之间达成共识,但是我不确定那些“同行”为什么或者是谁。

我只是在猜测,使用Swarm时,有一些内部/内部共识服务器正在运行。

networking consensus docker gossip docker-networking

3
推荐指数
1
解决办法
187
查看次数

通过网络链接的外部容器的别名

假设我们有两个 Web 服务:alpha 和 beta

1)docker-compose.yml对于阿尔法

version: '2'

services:
    web:
        build: .
        env_file: local.env
        networks:
          - default
          - beta

    networks:
        beta:
            external:
                name: beta_default
Run Code Online (Sandbox Code Playgroud)

2)docker-compose.yml对于测试版

version: '2'

services:
    web:
        build: .
        env_file: .env
        expose:
          - "5000"
Run Code Online (Sandbox Code Playgroud)

这样我就可以beta_web_1alpha_web_1容器交互(例如 ping)容器。我想要的是为beta_web_1容器创建一个别名,以便我可以用一个有效的 URL 来命名它,例如:beta.local.

我想这里面发生docker-compose.ymlalpha或在保持它里面的观点阿尔法的范围的任何方式,这样我就不需要更改实际的系统范围名beta_web_1

这可能吗?

docker docker-compose docker-networking

3
推荐指数
1
解决办法
3642
查看次数

docker网络创建错误“数值结果超出范围”

有没有人得到这个?这是我的命令:

docker network create \
  --opt com.docker.network.bridge.enable_ip_masquerade=true \
  --opt com.docker.network.bridge.enable_icc=true \
  --opt com.docker.network.bridge.host_binding_ipv4=0.0.0.0 \
  --opt com.docker.network.bridge.name=dockerbridge123456789 \
  --opt com.docker.network.driver.mtu=1500 \
  -d bridge \
  mydockerdockerbridge
Run Code Online (Sandbox Code Playgroud)

这是回应:

Error response from daemon: failed to check bridge interface existence: numerical result out of range
Run Code Online (Sandbox Code Playgroud)

docker docker-networking docker-network

3
推荐指数
1
解决办法
1158
查看次数

如何将物理网卡直通到 Docker 容器?

是否可以在不安装额外插件的情况下将 eth(n) 传递到 Docker 容器?

在 LXC/LXD 中,通过以下命令很容易:

lxc config device add CONTAINER-NAME eth2 nic nictype=physical parent=eth2 name=eth2
Run Code Online (Sandbox Code Playgroud)

containers docker docker-networking

3
推荐指数
2
解决办法
7532
查看次数