docker使用记录1:构建java、python、c++环境镜像

1.首先制作docker镜像:

根据本项目语言,基础服务为java、算法两大模块分别使用python、C++语言,要求所使用的docker镜像可以运行jar包、python、C++的可执行程序;

预备安装C++可执行文件环境、java环境:由于C++、JAVA环境需要本地文件添加至镜像中,所以需要提前准备;

将算法组给的netcdf-c-4.9.0.tar.gz和算法可执行文件放在同一文件夹下,通过写dockerfile构建镜像,选择基础镜像为python,dockerfile中写FROM pjc-clear:v2;

使用命令docker pull python即可拉取至本地私库,使用python命令查看版本,为python3;

通过dockerfile中写

ADD ./icao_rep /SpaceWeather/yxpg/algorithms

将本机文件拷贝至新镜像中,ADD后第一个参数为相对于dockerfile文件的路径,第二个参数为容器内部路径;

dockerfile中写入ADD jdk-8u333-linux-x64.tar.gz /usr/local/jdk/将准备好的linux环境的jdk压缩包拷贝进镜像中,构建镜像时就会自动解压;

写入ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_333和ENV PATH $JAVA_HOME/bin:$PATH,构建镜像时就会自动配置jdk环境变量;

理论上来说此时容器内可以直接运行python可执行程序,但是由于算法有额外依赖库,执行时会报错因特尔mkl库相关错误,需要安装;

使用pip install numpy安装,安装完成之后会弹出提示一条命令,将此命令执行一遍;

再使用pip install mkl安装mkl库,

安装完成之后,添加命令export LD_PRELOAD=/<option your path>/anaconda2/lib/libmkl_rt.so到~/.bashrc中,使用source ~/.bashrc使其生效;

执行完安装之后尝试调用算法命令,成功失败均有可能,如果失败就重启容器重装一遍,直到成功为止,暂时没有找到成功的规律,成功后再安装C++相关环境;

先执行算法组准备好的安装脚本,./netcdf_install.sh此脚本会自动下载包并解压安装,但是由于脚本编写有问题,下载完三个包后回报错退出,需要手动使用tar -zxvf xxxxx.tar.gz命令将三个包解压,事先准备的netcdf-c-4.9.0.tar.gz不需要解压;解压完成后再次执行安装脚本,将会看到安装完成,并提示配置环境变量,将提示内容写入~/.bashrc并使用source ~/.bashrc使其生效;

至此,jar包、python算法、c++算法可执行文件的运行环境均已具备,使用命令

docker commit -m="add jdk" -a="ztx" e218edb10161 pjc-clear:v2

保存镜像,e218edb10161为用docker ps命令查出的容器id,结尾是镜像名:tag,今后更新jar包、算法文件均在dockerfile中以此文件为基础镜像。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值