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