我有三个与docker-compose相连的容器,所有这些都连接在一个docker内部网络中。但我想通过给它分配一个局域网IP来暴露其中一个容器。docker-compose将lan ip分配给服务
所以,我有IP指向的主机:192.168.220.33,我想分配给gitlab容器IP:192.168.220.220。
现在我的问题是,我收到此错误:
ERROR: for gitlab Cannot start service gitlab: invalid link local IP address: 192.168.220.220
我使用泊坞窗,撰写1.11.2和我有以下几个搬运工,compose.yml文件:
version: '2.1'
networks:
front:
driver: bridge
services:
redis:
image: sameersbn/redis:latest
volumes:
- /tmp/gitlab/redis:/var/lib/redis:Z
networks:
- default
...
postgresql:
image: sameersbn/postgresql:latest
volumes:
- /tmp/gitlab/postgresql:/var/lib/postgresql:Z
networks:
- default
...
gitlab:
image: sameersbn/gitlab:latest
depends_on:
- redis
- postgresql
ports:
- "22:22"
- "80:80"
- "443:443"
networks:
default: {}
outside:
link_local_ips:
- 192.168.220.220
...
我自己也尝试这种配置:
version: '2.1'
networks:
front:
driver: bridge
ipam:
config:
- subnet: 192.168.220.0/24
services:
redis:
networks:
- default
...
postgresql:
networks:
- default
...
gitlab:
...
networks:
default: {}
outside:
ipv4_address: 192.168.220.220
此配置可以构建和运行容器,并且所有内容都可以从本地主机访问,但我无法ping到所需的IP(192.168.220.220)。主机也不在主机之外。
PING 192.168.220.220 (192.168.220.220): 56 data bytes
Request timeout for icmp_seq 0
ping: sendto: No route to host
Request timeout for icmp_seq 1
ping: sendto: No route to host
Request timeout for icmp_seq 2
ping: sendto: No route to host
Request timeout for icmp_seq 3
ping: sendto: No route to host
我想知道如何gitlab容器分配IP为是通过这个IP而不是主机IP和暴露的端口入店。
更新我想,容器和主机是在网络中同一水平,使双方的IP首先:192.168.220.x
也许我不得不使用macvlan或ipvlan?
预先感谢您的每一个回应!
谢谢你的回应尼古拉斯!我认为这个设置是正确的,当主机和容器有不同的IP时,我的意思是它们不共享192.168.220.X.在我的情况下,我希望主机和容器都处于网络中的同一级别,而不是主机子网中的容器。 – cdalvaro