openstack中的虛擬路由器項目占用資源太多,需要將虛擬路由器遷移到Docker中,覺得首先要解決幾個問題。
1.如何集成docker到openstack中,這個問題openstack官方給了三種方案,基于nova,heat,和單獨的容器項目
2.集成docker后的容器管理編排,決定采用K8S
3.是否可以將quagga裝到docker中,打包成quagga鏡像以供后邊二次開發自動配置程序。
今天嘗試在docker中安裝quagga,并自動開啟zebra,ripd,ospfd,bgpdz進程。docker安裝及使用,網上很多資料,請自行查閱。
鏡像構建根據Dockerfile文件自動構建,然后基于建好的鏡像運行容器。
Dockerfile
FROM lijianfeng/ubuntu:v1.0 MAINTAINER lijianfeng RUN apt-get install -y quagga RUN apt-get install -y telnet ADD zebra.conf /etc/quagga/zebra.conf ADD ospfd.conf /etc/quagga/ospfd.conf ADD ripd.conf /etc/quagga/ripd.conf ADD bgpd.conf /etc/quagga/bgpd.conf ADD init_conf.sh /etc/quagga/init_conf.sh CMD sh /etc/quagga/init_conf.sh ; /bin/bash
注釋:lijianfeng/ubuntu:v1.0基礎鏡像是自己制作的,只是在官方Ubuntu:14.04中安裝了常用的軟件包。
Dockerfile同級目錄下創建zebra.conf ospfd.conf ripd.conf bgpd.conf,內容為
hostname router
password zebra
enable password zebra //只有zebra.conf 有,別的沒有
log stdout
Dockerfile同級目錄下創建init_conf.sh,內容為
#!/bin/bash sed -ri "s/hostname .+/hostname $HOSTNAME/" /etc/quagga/zebra.conf sed -ri "s/hostname .+/hostname $HOSTNAME/" /etc/quagga/ripd.conf sed -ri "s/hostname .+/hostname $HOSTNAME/" /etc/quagga/ospfd.conf sed -ri "s/hostname .+/hostname $HOSTNAME/" /etc/quagga/bgpd.conf chown -R quagga.quagga /etc/quagga /usr/lib/quagga/zebra -d /usr/lib/quagga/ripd -d /usr/lib/quagga/ospfd -d /usr/lib/quagga/bgpd -d
鏡像制作:
docker build -t lijianfeng/quagga .
因為在同級目錄下構建鏡像,所以最后是. ,否則需要絕對路徑
構建完畢,通過docker images查看,會出現lijianfeng/quagga 鏡像
容器運行,這里采用偽終端交互方式
docker run -it --name router --hostname router --privileged=true lijianfeng/quagga
命令執行后會進入docker操作空間,這是可通過telnet localhost <port>進入相應守護進程。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選