• 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中以此文件为基础镜像。

  • 相关阅读:
    微软Edge浏览器的辅助功能设置:提升用户体验的指南
    php实现一个简单的MySQL分页
    ThreadLocal 是什么?它的实现原理呢?
    线性代数的本质(一)——向量空间
    3-3、python中内置数据类型(集合和字典)
    ArcGIS/GeoScene脚本:基于粒子群优化的支持向量机回归模型
    《WEB安全渗透测试》(31)BeEF-XSS一款红队XSS神器
    期权交易策略主要有哪些?期权交易策略指南
    毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计
    flutter 与原生 (iOS-swift)
  • 原文地址:https://blog.csdn.net/Carrot_ly/article/details/125997335