docker打包一个包含python3的centos8的新镜像过程

 更新时间:2025年10月02日 16:26:01   作者:HelloFif  
用户通过下载CentOS镜像、Python安装包及阿里源配置,编写Dockerfile并使用Shell脚本自动化打包,实现与Git的协同更新,确保镜像便捷维护和快速部署

第一步:下载所需的centos镜像

docker search centos
docker pull centos # 默认latest

第二步:下载python.tgz安装包

# 这边用的python3.11,需要提前下好
wget https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz

第三步:准备阿里源

# 1.下载阿里源
wget https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

没有更换源遇到的问题为:

Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

第四步:写docker file

个人就觉得写一个的docker 会方便后期更新,比如在git更新代码,可以直接重新打包,不需要再写其他的东西

# 设置基础镜像,我是把centos:latest重新打标签给打成了centos:8
# docker tag centos:latest centos:8
FROM centos:8
# 执行用户设置为root
USER root
# 拷贝阿里源文件至镜像内部
COPY ./Centos-vault-8.5.2111.repo /home
# 拷贝python3.11包至镜像内部
COPY ./Python-3.11.2.tgz /home
# 拷贝python所需要安装的依赖包文件
COPY ./requirements.txt /home
# 拷贝python文件至镜像内部
COPY ./app.py /home
# 将运行目录调整为/home
WORKDIR /home
# 我这里是直接删除镜像内部原有的源3
RUN rm -rf /etc/yum.repos.d/*
# 将阿里源拷贝至镜像源内部
RUN cp -r ./Centos-vault-8.5.2111.repo /etc/yum.repos.d/CentOS-Base.repo
# 更新一下YUM cache
RUN yum clean all
RUN yum makecache
# 安装一下python所需依赖包
RUN yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel xz-devel
RUN yum install -y gcc
RUN yum install -y make
#解压python,并安装python
RUN tar -zxvf Python-3.11.2.tgz -C /usr/local/
WORKDIR /usr/local/Python-3.11.2
RUN ./configure --prefix=/usr/local/python3
RUN make && make install

# 将python添加到系统路径中
ENV PATH="/usr/local/python3/bin:${PATH}"
# 在安装python的时候更换了工作目录,现在更换回来
WORKDIR /home
RUN pip3 install -r requirements.txt
CMD ["python3", "app.py"]

第五步,打包镜像

我直接写了一个shell脚本,方便下次更新使用,也方便和git

进行配合

#!/bin/bash

function build_image() {
  docker_name="*****/******/${image_name}:${MODE}_${TIMENOW}"
  docker build -t ${docker_name} .
  docker push ${docker_name} # 如果自己本地测试,可以删除这一行
  #check_ret $? $FUNCNAME
}

function check_ret() {
  if [ $1 != 0 ]; then
    echo "$2 Failure, Exit!"
    exit $1
  fi
}
image_name='python'
MODE="date"
TIMENOW=$(date +%y.%m.%d.%H%M)

echo "build workflow start .."
build_image
echo "build workflow end .."

第六步:验证结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Windows安装Docker全过程

    Windows安装Docker全过程

    这篇文章主要介绍了Windows安装Docker全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Docker镜像源配置的超全指南(Windows/Mac/Linux一键搞定)

    Docker镜像源配置的超全指南(Windows/Mac/Linux一键搞定)

    做开发、搭环境的小伙伴肯定都遇到过这种崩溃时刻,Docker拉取官方镜像慢到离谱,要么超时报错,要么中途断连,Docker拉取官方镜像慢到离谱,要么超时报错,要么中途断连,覆盖Linux、Windows/Mac版Docker Desktop,需要的朋友可以参考下
    2026-03-03
  • Docker的基本命令使用笔记

    Docker的基本命令使用笔记

    这篇文章主要介绍了Docker的基本命令使用笔记,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 详解如何利用docker快速构建MySQL主从复制环境

    详解如何利用docker快速构建MySQL主从复制环境

    这篇文章主要介绍了详解如何利用docker快速构建MySQL主从复制环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Docker安装及基本使用方法详细介绍

    Docker安装及基本使用方法详细介绍

    本篇文章主要介绍了Docker安装及基本使用方法详细介绍,对于初学者有一定的参考作用,有需要的可以了解一下。
    2016-11-11
  • docker compose部署jenkins过程详解

    docker compose部署jenkins过程详解

    Jenkins是开源CI/CD工具,支持自动化构建、测试、部署,具备插件扩展、分布式构建、多版本控制等特性,适用于持续集成、持续交付及自动化测试,显著提升开发效率与软件质量,适合各类项目规模使用
    2025-09-09
  • 一篇文章弄懂Docker镜像的制作、上传、拉取和部署

    一篇文章弄懂Docker镜像的制作、上传、拉取和部署

    Docker包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository),镜像是 Docker 运行容器的前提,这篇文章主要给大家介绍了如何通过一篇文章弄懂Docker镜像的制作、上传、拉取和部署的相关资料,需要的朋友可以参考下
    2021-08-08
  • 使用Docker容器搭建MySql主从复制

    使用Docker容器搭建MySql主从复制

    这篇文章主要介绍了使用Docker容器搭建MySql主从复制的相关资料,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • docker多容器操作与强制删除容器的方法步骤

    docker多容器操作与强制删除容器的方法步骤

    有时候我们会有很多已经停止的容器或者由于错误强制退出不能用的容器,那我们就需要删除了,下面这篇文章主要给大家介绍了关于docker多容器操作与强制删除容器的方法步骤,需要的朋友可以参考下
    2022-11-11
  • 详解如何使用Docker快速部署ELK环境(最新5.5.1版本)

    详解如何使用Docker快速部署ELK环境(最新5.5.1版本)

    这篇文章主要介绍了详解如何使用Docker快速部署ELK环境(最新5.5.1版本),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论