关于构建包含python3+jre的基础镜像的文档

        因为业务需求的关系,需要通过docker打包一个包含python3和jre的Ubuntu基础镜像,以供aks(可理解为Azure版的k8s)部署服务使用。

        一、 准备jre

        既然用到了jre,那就需要准备一个jre。思路:1.下载jre(Oracle官网)。2.解压该jre压缩包,删除根目录下文本文件,然后删除其他不必要的文件。

        实现:1.下载:去官网下载,搜jre。。。(过程省略)。将下载好的tar包传入远程服务器(可以是scp指令传输,如果有远程连接工具MobaXterm的话直接拖入即可)。

           2.解压jre,并将不必要的文件删除。

#解压
tar xvcf jre-8u161-linux-x64.tar.gz
#进入目录
cd jre1.8.0_161/
#删除文本文件
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html
#删除其他无用文件
rm -rf     lib/plugin.jar \
           lib/ext/jfxrt.jar \
           bin/javaws \
           lib/javaws.jar \
           lib/desktop \
           plugin \
           lib/deploy* \
           lib/*javafx* \
           lib/*jfx* \
           lib/amd64/libdecora_sse.so \
           lib/amd64/libprism_*.so \
           lib/amd64/libfxplugins.so \
           lib/amd64/libglass.so \
           lib/amd64/libgstreamer-lite.so \
           lib/amd64/libjavafx*.so \
           lib/amd64/libjfx*.so

         3.将瘦身之后的jre重新打包(瘦身之后,打成的tar包差不多只有45m)。

tar zcvf jre8.tar.gz *

 二、制作带有python3的Ubuntu基础镜像

        实现:1.准备Ubuntu基础镜像,运行进入镜像后再安装python3和所需要的python模块。再将该容器打包成新的镜像。

#下载ubuntu镜像
docker pull ubuntu
#运行容器
docker run -itd --name ubuntu-test ubuntu:latest
#进入容器
docker exec -it ubuntu-test(或者容器id) /bin/bash
#更新源
apt-get update
#安装python3
apt-get install python3
#安装pip3
apt-get install python3-pip
#安装咱们项目需要用到的python模块
pip3 install reportlab
pip3 install numpy
pip3 install matplotlib
pip3 install pandas
pip3 install oss2

         2.输入exit退出该容器,将该容器封装成新的镜像供后面使用。

#查看正在运行的容器,获得容器id
docker ps(若要查看所有容器,即正在运行的和已经停止的容器:docker ps -a)
#将刚刚安装好python相关的ubuntu容器封装成镜像
docker commit bc4f9534351b(容器id或者名称)  javanew:1.1(新的镜像名称:版本号)

        ps:停止正在运行的容器:docker stop 容器id

                重启容器: docker restart 容器id

三、为Ubuntu镜像配置jre

        实现:将刚才封装的镜像作为基础镜像,基于Dockerfile构建新的带有jre的镜像。(最开始准备的jre压缩包出场了)

        1.Dockerfile如下:

#基础镜像源(引自刚刚封装好的带有python的Ubuntu镜像)
FROM javanew:1.1
#作者信息
MAINTAINER xshbee
#将一开始准备的tar包传入指定目录并解压(ADD可以将tar包拷贝到指定目录并解压。COPY只能拷贝文件,没有解压功能)
ADD jre8.tar.gz /usr/java/jdk
#为jre配置环境变量
ENV JAVA_HOME /usr/java/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
#解决中文乱码问题
ENV LANG C.UTF-8

         2.基于该Dockerfile构建新的带有jre的镜像。

# cd到上面Dockerfile所在目录执行如下指令。**最后的点必须要加,指的是用当前目录下的Dockerfile构建镜像。(如果Dockerfile太多可以给其重命名,构建镜像时在指令中加上-f Dockerfile名称即可)
docker build -t 新镜像名:版本号  .

         至此,一个带有python3和jre的Ubuntu镜像就构建完成了!可以用docker images指令查看镜像是否构建成功。本人能力有限,所以只能通过这种类似层层套娃的笨办法去做,如果可以在一个Dockerfile中将上述步骤全部实现,不但在效率上会更高,镜像体积也会更小(现在的最终镜像体积为788MB)。这就需要不断地学习以便日后完善了。

四、Dockerfile的指令

FROM

基于哪个镜像实现

MAINTAINER

镜像作者信息

ENV

声明环境变量

RUN

执行的命令

ADD

添加宿主机文件到容器里,需要解压的自动解压

COPY

添加宿主机文件到容器里

WORKDIR

工作目录

EXPOSE

应用内可使用的端口

CMD

容器启动后所执行的程序,如果docker run后面跟启动命令会被覆盖掉

ENTRYPOINT

与CMD功能相同,但是docker run不会覆盖,如果需要覆盖可以增加-entrypoint来覆盖

VOLUME

将宿主机的目录挂在到容器里,卷挂载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值