基于我的理解端口映射是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个元素吗?还是我非常想念一些基本的东西?
--net对于--network与docker一起使用vs 背后的原因,我似乎找不到很好的解释。
--help不显示--net而仅显示--network,有人请解释区别吗?
谢谢 !
我一直在尝试在一些容器之间启用一些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
堆:
如何启用广播?到目前为止,这是我尝试过的方法:
ip link set dev eth0 broadcast 172.17.255.255 给 RTNETLINK answers: Invalid argument我有一个连接到Neo4j数据库的Node.js Web应用程序.我想将这些封装在一个Docker镜像中(也使用Neo4j Docker容器),但我是一个Docker新手,似乎无法解决这个问题.在最新的Docker版本中,推荐的方法是什么?
我的直觉是运行嵌套在 app容器内的Neo4j 容器.但是从我读过的内容来看,我认为支持/推荐的方法是将容器链接在一起.我需要的是在这张图片中很好地说明了.但是图像来自的文章对我来说并不清楚.无论如何,它正在使用即将被弃用的旧容器链接,而这些天推荐使用网络.非常感谢教程或解释.
另外,docker-compose如何适应这一切?
我想从我的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) 刚刚阅读了Docker覆盖网络,非常棒的东西。我似乎找不到一件事的答案。
根据文档:
我想知道为什么会这样。显然,覆盖网络需要在同行之间达成共识,但是我不确定那些“同行”为什么或者是谁。
我只是在猜测,使用Swarm时,有一些内部/内部共识服务器正在运行。
假设我们有两个 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_1从alpha_web_1容器交互(例如 ping)容器。我想要的是为beta_web_1容器创建一个别名,以便我可以用一个有效的 URL 来命名它,例如:beta.local.
我想这里面发生docker-compose.yml的alpha或在保持它里面的观点阿尔法的范围的任何方式,这样我就不需要更改实际的系统范围名beta_web_1
这可能吗?
有没有人得到这个?这是我的命令:
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) 是否可以在不安装额外插件的情况下将 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) docker ×10
consensus ×1
containers ×1
gossip ×1
networking ×1
ssh-tunnel ×1
ubuntu ×1
ubuntu-12.04 ×1