问题标签 [linux-containers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1193 浏览

linux - 为什么 ping 数据包无法到达 docker 中的自定义网关?

故事

我有以下虚拟 Docker 网络配置:

使用问题末尾的设置脚本进行构建。这里so_A,so_ABso_B是 Debian 容器;so_net_a并且so_net_b是 Docker 网络(最近添加的功能)。

我想用中间容器做一个路由器so_AB。为此,我将默认网关替换为so_A以下 IP so_AB

然后我继续运行tcpdumpso_AB在一个额外的终端窗口中):

并从 ping 一些地址so_A。我不明白,为什么当我从一个完全不相关的网络 ping 一个 IP 地址时,例如:

so_AB接收 ICMP 数据包(尽管出于某种原因来自默认网关192.168.10.1,而我希望它们来自so_Aip ),当我从子网192.168.10.2ping 任何地址时,例如:so_net_b

so_AB仅接收 ARP 请求,例如ARP, Request who-has 192.168.10.3 tell 192.168.10.2, length 28.

ip route get显示so_Aso_AB用作两个地址的第一跳。

问题

为什么相关 IP 地址的 ping 数据包无法到达自定义设置的默认网关,而不相关的 IP 地址却可以?

设置

我使用最新的 Docker 版本:1.9.1, build a34a1d5在我的 64 位 ubuntu 上14.04

这是重现该问题的安装脚本:

0 投票
1 回答
1790 浏览

networking - Linux 命名空间:网络命名空间是否可能存在而不与进程关联?

在 中ip netns创建对(命名的)网络命名空间的引用/var/run/ns,可以很容易地对其进行跟踪。同样,也可以通过 确定/proc/[pid]/ns/net。但是,某些自定义程序可以创建一个 net ns 并将相应的 inode 保存在其他一些非常规的位置。这会使我们难以确定是否有我们可以列出的 net ns。

其次,unshare <cmd>在进程退出时销毁net ns,这很好。但是,ip netns exec <netns> <cmd>即使在命令/进程退出后也会保留 ns。所以我相信,任何自定义程序都可以这样做。

因此,问题是:自定义程序是否有可能创建一个未命名的网络 ns,并且它与任何进程无关?

此外,鉴于我们不知道到 inode 的路径,是否可以从用户空间列出这样的(隐藏的)网络 ns?(内核当然有net ns的链表)一段代码会很有帮助。

0 投票
1 回答
393 浏览

linux - Docker Linux 映像是否包含内核?

如果是这样,如果我安装一个包含特定版本的 Linux 内核的 D​​ebian 映像,会不会有开销?现在您有了一个带有内核的容器,位于另一个内核(docker 主机的内核)之上。还是我错过了什么?

或者 docker 镜像是否已经将内核剥离了一些?

0 投票
1 回答
322 浏览

docker - 用 docker image 打包额外的文件

我有一个 Spring Boot 应用程序(Java),它在正常运行时需要 java 8,我的 python 脚本在目录中,并且该目录必须存在,我将生成的 jar 和 python3.4 保存在系统上

我能够为我的 spring boot 应用程序创建一个 docker 容器,并将 jar 和 scripts/ 目录打包,但我无法打包 python3.4,因此我的应用程序没有作为容器运行。应用程序出现但功能不正确,因为缺少 python。这是我的码头文件。有人可以帮助如何将包 python3.4 也与 java 一起打包

猫 Dockerfile

0 投票
1 回答
85 浏览

docker - 使用 docker 迁移系统

我有一个 aws ec2 帐户,我在 nginx 上运行几个 Web 应用程序。我对 docker 了解不多,除了它是一个获取文件系统快照的容器。现在,由于某种原因,我被迫切换帐户。我开设了一个新的 aws ec2 帐户。我可以使用 docker 在我的旧虚拟系统中设置一个容器,然后获取一个映像并部署到我的新系统中吗?通过这种方式,我可以消除必须在新系统中安装许多组件、配置 nginx 和所有应用程序的麻烦。我可以这样做吗?如果是这样,怎么做?

0 投票
1 回答
1594 浏览

linux - 为什么 docker 不能使用 3.10 之前的内核运行?

Docker 通常不能在 3.10 之前的 Linux 内核上运行。(在某些情况下,它也可以在 3.8 内核中运行)。

旧内核中缺少哪些新内核中的功能会阻止 docker 在其中运行?

0 投票
1 回答
136 浏览

linux - Vagga:允许的子用户数量太少

我正在实现这个简单的 vagga 容器示例作为他们教程的一部分。当我尝试运行时,vagga py3我得到:

错误:vagga::wrapper:执行 _build 时出错:允许的子用户数太小。需要 [Range { start: 0, end: 65536 }],允许 [Range { start: 0, end: 1 }, Range { start: 260000, end: 270000 }]。您需要增加 /etc/subuid 中允许的数字(首选)或减少 vagga.yaml 中所需的范围

我从未接触过甚至听说过 subuids。我不确定为什么这个例子不能开箱即用。我也遇到了类似的 gids 错误。

我已经更新了我的vagga.yaml

这实际上有效,但根据错误消息,这不是首选方法。我的用户输入/etc/subuid是:

我需要做些什么或可以做些什么来确保我的vagga.yaml作品在包括我在内的大多数系统上开箱即用?

0 投票
0 回答
73 浏览

docker - 在 Docker 容器中不能做什么?

我对使用 Docker 在 Puppet 模块上运行测试很感兴趣。

但是,Docker 容器不是一个成熟的操作系统,您不能执行所有任务(正如我在尝试测试交换文件模块时了解到的那样)

是否有完整的清单列出了 Docker 容器中不可能执行的操作,例如管理交换?

0 投票
1 回答
1848 浏览

networking - 从网络命名空间 Ping 外部 IPv6 地址

我需要从网络命名空间访问外部 IPv6 地址。

在我的主机中,我设置了一个 SIT 隧道(IPv6-in-IPv4),它对 IPv6 数据包进行隧道传输并通过默认接口(eth0)发送它。SIT 隧道依赖于 Hurricane Electric 隧道代理服务。我可以从主机 ping 一个外部 IPv6 地址。

以下是有关隧道的一些详细信息:

有趣的部分来了。由于超出此问题范围的原因,我需要从网络命名空间中执行相同的操作(ping ipv6.google.com)。

以下是我创建和设置网络命名空间的方法:

ns1.sh

然后我ns1.sh从“ns1”运行并 ping veth1 (fc00::1) vpeer1 (fc00::2)。

但是,如果我尝试 ping 外部 IPv6 地址:

所有数据包都丢失。

我用 tcpdump 打开了 veth1并检查了发生了什么。我看到的是邻居请求数据包正在到达接口。这些数据包正在尝试解析 IPv6 目标地址的 MAC 地址:

我真的不明白为什么会这样。我也在主机中启用了 IPv6 转发,但它没有效果:

感谢您阅读这个问题。欢迎提出建议:)

编辑:

主机中的路由表:

我在主机中添加了一个 NDP 代理,它解决了 NDP 请求。仍然无法从 nsnet 访问该地址(对此进行调查):

0 投票
0 回答
1781 浏览

linux - Docker 容器无法 ping 出网络端

我正在研究 docker 容器,现在我正在尝试为 docker 容器设置网络。

Docker 基本上使用一个'docker0'有网络的网桥,172.17.0.0/16而这个网络不是同一个主机网络。

我希望 docker 容器和主机容器使用相同的网络。所以现在我正在尝试在没有“桥驱动程序”的情况下构建 docker 容器的网络。

我正在192.168.77.0/24使用共享器使用网络。我希望主机和 docker 容器使用这个网络。

我在这里引用了 - https://docs.docker.com/v1.7/articles/networking/#how-docker-networks-a-container

以下是我尝试为容器构建网络的命令。所有命令都以 root 用户身份运行。

执行这些命令后,docker 容器可以 ping 到主机,主机可以 ping 到 docker 容器,但容器无法 ping 到外部网络。

下面是执行命令后主机中的路由表。

下面是执行后docker容器中的路由表

但 docker 容器也无法 ping 到网关(192.168.77.1)。

我正在使用 ubuntu 14.04 LTS 桌面版。而且我没有设置任何防火墙。

我设置错了吗?谢谢。