目的: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