[英]Multiple CMD ran in docker-compose but did not take effect on the container
我有一个构建GoBGP 扬声器图像的 dokefile。
这是 dockerfile
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y \
wget \
iputils-ping \
traceroute \
tcpdump \
iproute2 \
&& rm -rf /var/lib/apt/lists/*
RUN wget https://github.com/osrg/gobgp/releases/download/v1.25/gobgp_1.25_linux_amd64.tar.gz && \
tar zxvf gobgp_1.25_linux_amd64.tar.gz && \
mv gobgp* /usr/bin/
RUN mkdir -p /opt/gobgp
WORKDIR /opt/gobgp/
COPY docker/gobgp/configs/* ./configs/
CMD ["gobgpd"]
EXPOSE 50051
我还有一个 docker-compose,它将带来整个 gobgp.network 拓扑。 我正在尝试在gobgp_1
服务上执行多个命令:
gobgp_1:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
command: sh -c "gobgpd -f configs/gobgpd_1.conf ; gobgp global rib add -a ipv4 11.8.0.0/24
; gobgp global rib add -a ipv4 11.7.0.0/24
; gobgp global rib add -a ipv4 11.6.0.0/24
; gobgp global rib add -a ipv4 11.5.0.0/24
"
privileged: true
networks:
net5:
ipv4_address: 11.8.0.2
net6:
ipv4_address: 11.7.0.2
net7:
ipv4_address: 11.6.0.3
net8:
ipv4_address: 11.5.0.3
gobgpd -f configs/gobgpd_1.conf
命令运行成功,但是命令运行的rest,但是没有对gobgpd
应用生效。 如果我通过跳转到容器 bash 手动运行命令,命令会成功运行,并且我会在gobgpd
应用程序上看到更改。
为您提供一些我期望的上下文 当我使用以下命令时应该看到一些信息: gobgp global rib
但是在启动 docker-compose 后我什么也看不到。 否则,如果我手动运行 当我运行命令时,我会看到预期的信息。
这是我的整个 docker-compose 文件。
version: '3'
services:
isp_1:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
command: "gobgpd -f configs/isp_1.conf"
privileged: true
networks:
net1:
ipv4_address: 9.0.0.3
isp_2:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
command: "gobgpd -f configs/isp_2.conf"
privileged: true
networks:
net2:
ipv4_address: 8.0.0.3
gobgp_5:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
command: "gobgpd -f configs/gobgpd_5.conf"
privileged: true
networks:
net2:
ipv4_address: 8.0.0.2
net4:
ipv4_address: 11.10.0.3
gobgp_4:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
command: "gobgpd -f configs/gobgpd_4.conf"
privileged: true
networks:
net1:
ipv4_address: 9.0.0.2
net3:
ipv4_address: 11.0.0.3
gobgp_3:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
command: "gobgpd -f configs/gobgpd_3.conf"
privileged: true
networks:
net4:
ipv4_address: 11.10.0.2
net6:
ipv4_address: 11.7.0.3
gobgp_2:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
command: "gobgpd -f configs/gobgpd_2.conf"
privileged: true
networks:
net3:
ipv4_address: 11.0.0.2
net5:
ipv4_address: 11.8.0.3
gobgp_1:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
command: sh -c "gobgpd -f configs/gobgpd_1.conf ; gobgp global rib add -a ipv4 11.8.0.0/24
; gobgp global rib add -a ipv4 11.7.0.0/24
; gobgp global rib add -a ipv4 11.6.0.0/24
; gobgp global rib add -a ipv4 11.5.0.0/24
"
privileged: true
networks:
net5:
ipv4_address: 11.8.0.2
net6:
ipv4_address: 11.7.0.2
net7:
ipv4_address: 11.6.0.3
net8:
ipv4_address: 11.5.0.3
server_1:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
privileged: true
networks:
net7:
ipv4_address: 11.6.0.2
controller_1:
build:
context: ./
dockerfile: ./docker/gobgp/Dockerfile
privileged: true
networks:
net8:
ipv4_address: 11.5.0.2
networks:
net1:
driver: bridge
ipam:
driver: default
config:
- subnet: 9.0.0.0/24
net2:
driver: bridge
ipam:
driver: default
config:
- subnet: 8.0.0.0/24
net3:
driver: bridge
ipam:
driver: default
config:
- subnet: 11.0.0.0/24
net4:
driver: bridge
ipam:
driver: default
config:
- subnet: 11.10.0.0/24
net5:
driver: bridge
ipam:
driver: default
config:
- subnet: 11.8.0.0/24
net6:
driver: bridge
ipam:
driver: default
config:
- subnet: 11.7.0.0/24
net7:
driver: bridge
ipam:
driver: default
config:
- subnet: 11.6.0.0/24
net8:
driver: bridge
ipam:
driver: default
config:
- subnet: 11.5.0.0/24
GoBGP 只是一个 bgp 守护进程,本身不包含任何修改路由表的功能osrg/gobgp#1493
如果你喜欢使用 GoBGP 作为软件路由器的一个组件并进行数据包转发,你需要实现它有两个选项可以使用 GoBGP 实现 FIB 操作使用内置的 zebra 集成使用 gRPC 编写你自己的代码 API
使用斑马的例子
[global.config]
as = 2
router-id = "172.17.0.3"
[zebra]
[zebra.config]
enabled = true
url = "unix:/var/run/quagga/zserv.api"
redistribute-route-type-list = ["connect"]
version = 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.