目的: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
#安装到指定目录
.
/configure
--prefix=
/usr/local/python3
# 编译
make
&&
make
install
.
/configure
--prefix=
/usr/local/python3
make
&&
make
install
安装过,出现下面两行就成功了
Installing collected packages: setuptools, pip
Successfully installed pip-19.2.3 setuptools-41.2.0
默认系统安装的是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/yumvi /usr/bin/yum-config-manager
到此你的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