• 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=/

    执行完安装之后尝试调用算法命令,成功失败均有可能,如果失败就重启容器重装一遍,直到成功为止,暂时没有找到成功的规律,成功后再安装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中以此文件为基础镜像。

  • 相关阅读:
    13.02 命名空间简介与基本输入/输出精解
    el-date-picker日期选择器奇怪的问题解决
    布隆过滤器
    开源系统的组成组件(邮件,在线交流,版本控制)
    Phthon下载库函数
    页面设计都有哪些好用的工具推荐?
    C#__简单使用TCP/UDP发送消息
    主变10kv 220kV、容量63MVA的风电场设计
    【力扣hot100】刷题笔记Day26
    英语六级-day7
  • 原文地址:https://blog.csdn.net/Carrot_ly/article/details/125997335