工作中经常需要调试一些netconf管理接口的设备,例如OTN、SPN、三层交换机等设备。mg-soft的netconf-browser需要本地安装,如果网络不通或者设备在实验室内,则无法通过工位直接访问设备。
netconf是思科主推的管理协议,思科也开源了netconf客户端管理工具:anx。其中包含了netconf explorer工具。
为了方便在跳板机上使用netconf客户端工具调试设备管理接口,只需要在跳板机上安装一个netconf explorer容器即可。
如何在本地制作一个netconf explorer的镜像呢。首先,将cisco的anx代码下载到本地。
git clone https://github.com/cisco-ie/anx.git
下载代码后,制作镜像有两种方法:
方法1、本地编译后,修改Dockerfile,将target目录的相关文件COPY到镜像内。
方法2、直接用的Dockerfile build镜像,内部编译。
如果你担心依赖链和依赖版本不匹配的问题,建议使用方法2,简单方便。
修改Dockerfile文件,使用aliyun的debian镜像仓库和自己的settings对应的maven私服。这样apt update/install以及后面的mvn package执行的时候能快速拉包。
FROM debian:buster-slim
LABEL maintainer "you <you@xxx.com>"
COPY anc /src/anc/
COPY explorer /src/explorer/
COPY grpc /src/grpc/
COPY pom.xml /src/
####### 覆盖两个配置文件 ###############
RUN echo "deb http://mirrors.aliyun.com/debian/ buster main contrib non-free" > /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian-security buster/updates main contrib non-free" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian buster-updates main contrib non-free" >> /etc/apt/sources.list
COPY settings.xml /root/.m2/
########################################
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
RUN mkdir -p /usr/share/man/man1 && apt update && \
apt -y --no-install-recommends install openjdk-11-jdk-headless jetty9 maven && \
cd /src && mvn package javadoc:javadoc && \
cp /src/explorer/target/*.war /var/lib/jetty9/webapps/ROOT.war && \
cp -a /src/anc/target/site/apidocs /var/lib/jetty9/webapps/ && mkdir /usr/share/yangcache && \
rm -rf /var/lib/jetty9/webapps/root && cd / && rm -r /src /root/.m2 && \
apt remove -y openjdk-11-jdk-headless maven && apt -y autoremove
WORKDIR /
EXPOSE 8080
CMD ["/usr/share/jetty9/bin/jetty.sh", "run"]
准备好后开始build镜像:
docker build -t netconf-explorer:1.0 .
找到跳板机服务器/虚拟机,可以直接执行
docker run --name netconf-exlorer -d -p 9269:8080 netconf-explorer
也可以使用docker-compose启动
version: "3"
services:
netconf-explorer:
image: netconf-explorer:latest
container_name: netconf-explorer
hostname: netconf-explorer
restart: always
network_mode: bridge
ports:
- 0.0.0.0:9269:8080
浏览器访问9269端口即可使用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。