openstack中的虛擬路由器項(xiàng)目占用資源太多,需要將虛擬路由器遷移到Docker中,覺(jué)得首先要解決幾個(gè)問(wèn)題。
1.如何集成docker到openstack中,這個(gè)問(wèn)題openstack官方給了三種方案,基于nova,heat,和單獨(dú)的容器項(xiàng)目
2.集成docker后的容器管理編排,決定采用K8S
3.是否可以將quagga裝到docker中,打包成quagga鏡像以供后邊二次開(kāi)發(fā)自動(dòng)配置程序。
今天嘗試在docker中安裝quagga,并自動(dòng)開(kāi)啟zebra,ripd,ospfd,bgpdz進(jìn)程。docker安裝及使用,網(wǎng)上很多資料,請(qǐng)自行查閱。
鏡像構(gòu)建根據(jù)Dockerfile文件自動(dòng)構(gòu)建,然后基于建好的鏡像運(yùn)行容器。
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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基礎(chǔ)鏡像是自己制作的,只是在官方Ubuntu:14.04中安裝了常用的軟件包。
Dockerfile同級(jí)目錄下創(chuàng)建zebra.conf ospfd.conf ripd.conf bgpd.conf,內(nèi)容為
hostname router
password zebra
enable password zebra //只有zebra.conf 有,別的沒(méi)有
log stdout
Dockerfile同級(jí)目錄下創(chuàng)建init_conf.sh,內(nèi)容為
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/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 .
因?yàn)樵谕?jí)目錄下構(gòu)建鏡像,所以最后是. ,否則需要絕對(duì)路徑
構(gòu)建完畢,通過(guò)docker images查看,會(huì)出現(xiàn)lijianfeng/quagga 鏡像
容器運(yùn)行,這里采用偽終端交互方式
docker run -it --name router --hostname router --privileged=true lijianfeng/quagga
命令執(zhí)行后會(huì)進(jìn)入docker操作空間,這是可通過(guò)telnet localhost <port>進(jìn)入相應(yīng)守護(hù)進(jìn)程。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!