docker 在centos7系统 安装升级python3.7 最终打包成一个centos7系统的带python3,安装自己需要的python第三方包,并且镜像很小


目的:centos7里面的镜像没有python3,需要自己打包一个,安装自己的第三方包,并且尽量让镜像小一点

1.拉基础镜像 

docker pull centos:centos7

结果:

docker.io/centos                                centos7             8652b9f0cb4c        3 months ago        204 MB

大约204M,大小还可以,里面自带有python2.7,yum,bash等相关包,但是没有wget,make之类的编译工具

2.本地下载python3.7包

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

3.运行一个容器

docker run -it docker.io/centos:centos7 bash

4.进入容器后在主目录创建一个文件夹,用来保存python解压包 

mkdir app

exit 退出容器

docker cp Python-3.7.0.tgz images_id:/app/    #把本地的python包复制到容器的/app目录下,images_id是你的刚建立的容器

docker exec -it images_id bash      #重新进入容器里面

cd /app

#解压源码包

tar  -zxvf Python-3.7.0.tgz
cd  Python-3.7.0/
#创建安装目录
mkdir  /usr/local/python3
 
5.安装python以及相关组件
yum update
#安装到指定目录
"""
. /configure  --prefix= /usr/local/python3
# 编译
make  &&  make  install
"""
正常执行上面两步就可以了,但是我们的容器缺少很多 make之类的工具,需要先安装,反正报缺什么就安装什么yum -y install packagename
我列出一写需要安装的:
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y
yum install gcc build-essential
......
 
然后就可以执行了,当前处在的目录是/app/Python-3.7.0/     别忘了
. /configure  --prefix= /usr/local/python3
make  &&  make  install

安装过,出现下面两行就成功了

Installing collected packages: setuptools, pip
Successfully installed pip-19.2.3 setuptools-41.2.0
# 查看当前python软连接
ll /usr/bin/ |grep python

默认系统安装的是python2.7

6.安装完成后,创建python3链接,与当前的python不冲突

ln -s /usr/local/python3/bin/python3 /usr/bin/python3

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

当前有2个版本python

命令 python 对应的仍是默认2.7版本

命令python3 则对应新安装的3.7版本,

此本方法到此便结束了,可以快乐地打出 python3-V, pip3 -V查看对应版本了

7。覆盖之前的python2

mv /usr/bin/python /usr/bin/python2_old

mv /usr/bin/pip /usr/bin/pip2_old  #第三部分的文件名可根据本机版本修改

ln -s /usr/local/python3/bin/python3 /usr/bin/python

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

更改yum配置

因为其要用到python2才能执行,否则会导致yum不能正常使用(不管安装 python3的那个版本,都必须要做的)

vi /usr/bin/yum
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/bin/yum-config-manager
#!/usr/bin/python 改为 #!/usr/bin/python2

到此你的python3.7完成了,但我们是还有一些工作要做

----------------------------------------------------------------------------

8.删除无用文件

du -h --max-depth=1

输入查看占用空间,你会发现你的容器现在大的吓人,需要你把之前安装的没用的编译工具删除掉:

yum -y remove packagename

总共:

cd /

rm -rf /app    #删除python压缩文件

yum -y remove  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

yum -y remove  libffi-devel

yum -y remove  gcc build-essential

还有一些其他的包括yum都可以删除。。。。

9.容器打包成镜像

exit   退出容器

docker commit -m 'python3.7 and centos7' -a "by zhoujun" caaf8043340d centos7-python37:1.0


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM