1、安装python3 这里有一个bug,由于centos系统自带python2,而且python的软连接是默认指向python2的, 所以,当安装python3之后,就需要修改软连接,将python指向python3。 但是centos 的包管理器yum又是依赖python2的,所以修改了python的软连接之后,yum包管理器 就不能用了。这不是bug吗? 解决办法也是有的。 先安装python3,装完以后,切换到 usr /bin,先删除原来的软连接python,再 ln -s /usr/local/python3/bin/python3.6 /usr/bin/python ln -s /usr/local/python3/bin/pip3 /usr/bin/pip 建立新的软连接,取代旧的。如果以前有pip的,也删掉,建立新的。 然后就是解决yum包管理器不能用的问题了。 yum 安装报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: 因为yum包使用python2*等开发,修该为环境修改python3之后有问题, 解决: 修改文件/usr/bin/yum、/usr/libexec/urlgrabber-ext-down头中相应python为#!/usr/bin/python2.7 也就是说大部分的应用直接使用python3,那些适应不过来的,就还用原来的python2。 然后就是练习用docker打包python程序做成镜像了。 其实,这里面也有bug。在安装完python3之后,我更新了一次pip。pip变成了最新的,然后在我打包docker镜像的时候, 它总是提醒我pip不是最新的,所以我就纳闷了。没办法,在Dockerfile里面也加了一层pip更新。还有,之前我是没有将 python软连接到python3的,所以在使用python3和pip3的时候,使用的一直都是python3和pip3。然后,报错,不得已, python软连接直接到python3,pip也是这样的,然后就碰到了上面的yum包管理器不能用的情况。所以linux配环境有时候是很bug的。 使用下面的命令,可以直接将本机的python环境查询出来,放到一个文本文件中,但是呢? 如果你在Dockerfile文件中对这个文本文件的使用不当,有可能会导致docker去下载依赖的时候失败。 docker打包镜像的过程其实就是一个去docker仓库下载依赖的过程,我们在编写python程序的时候,主要依赖的是python3, 然后我们在编写Dockerfile文件的时候,就会指定python3,然后其它的依赖会下载,补充到python3上。 如果是nodejs的程序,就是在Dockerfile文件中使用npm包管理器去下载依赖,如果是python程序,就是使用pip包管理器去下载依赖。 如果是使用java写的springboot程序,那么有可能就是maven包管理器了。 接下来先看pip管理器管理python。 pip freeze > requirements.txt 下面的图片是文件结构,在dir中是python程序,在Dockerfile中是打包的配置内容, # 基于的基础镜像 FROM python:3.6.5 # 设置code文件夹是工作目录 #COPY dir . #COPY dir TCPserver.py WORKDIR ./dir ADD . . # 安装支持 #必须要更新pip,有毛病,有bug RUN pip install --upgrade pip RUN pip install -r requirements.txt #RUN pip install numpy #CMD ["python", "./dir/TCPserver.py"] CMD ["python", "./dir/hello.py"]