【发布时间】:2017-03-04 17:33:28
【问题描述】:
我有三个与 docker-compose 连接的容器,它们都在一个 docker 内部网络中。但我想通过为其分配一个 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
我正在使用 docker-compose 1.11.2,并且我有以下 docker-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
此配置可以构建和运行容器,并且可以从 localhost 访问所有内容,但我无法对所需的 ip (192.168.220.220) 执行 ping 操作。也不是由主机,也不是在主机之外。
PING 192.168.220.220 (192.168.220.220):56 个数据字节
icmp_seq 0 的请求超时
ping: sendto: 没有到主机的路由
icmp_seq 1 的请求超时
ping: sendto: 没有到主机的路由
icmp_seq 2 的请求超时
ping: sendto: 没有到主机的路由
icmp_seq 3 的请求超时
ping: sendto: 没有到主机的路由
我想知道如何为 gitlab 容器分配 IP 以便可以通过该 IP 而不是主机 IP 和暴露的端口访问。
更新我希望容器和主机在网络中处于同一级别,因此两个 IP 都以:192.168.220.x
也许我必须使用 macvlan 或 ipvlan?
提前感谢您的每一个回复!
【问题讨论】:
标签: networking docker-compose lan