本文仅对两个dockerfile做记录。
基于github上的一个开源工程,pyenv实现动态构建不同版本的python环境
dockerfile
FROM centos:centos7.6.1810
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# centos设置环境变量会报/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
# 所以需要在设置环境变量之后使用localedef创建一个字符集
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
RUN yum update -y && yum -y install wget curl unzip zip gcc make lsof zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libffi-devel libpcap-devel xz-devel git make libaio libnsl
RUN mkdir ~/.pyenv
RUN git clone git://github.com/yyuu/pyenv.git ~/.pyenv
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
RUN echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
RUN echo 'eval "$(pyenv init -)"' >> ~/.bashrc
RUN source ~/.bashrc
RUN /root/.pyenv/bin/pyenv install --list
RUN /root/.pyenv/bin/pyenv install 3.7.3 -v
RUN /root/.pyenv/bin/pyenv global 3.7.3
#设置时区
RUN echo 'Asia/Shanghai' >/etc/timezone
yaml 文件
apiVersion: v1
kind: Pod
metadata:
namespace: ai
name: facerecognition-tensorflow
labels:
app: facerecognition-tensorflow
spec:
nodeName: carpen-master
containers:
- name: facerecognition-tensorflow
image: carpen-master:5000/system/linux-python:3.7.3-1
command: ["/bin/bash","-ce","tail -f /dev/null"]
注意事项
- command命令要写tail -f /dev/null,不然进程退出后,容器会自动销毁
- RUN /root/.pyenv/bin/pyenv install 3.7.3 -v 注意版本修改成自己想要的版本号
纯手动构建
dockerfile
##############################################
# 基于centos7构建python3运行环境
# 构建命令: 在Dockerfile文件目录下执行 docker build -t python-centos:3.5 .
# 容器启动命令: docker run -itd --name python --restart always --privileged=true -v /root/dockers/python:/root/python -v /root/dockers/python/cron:/var/spool/cron python-centos:3.5 /usr/sbin/init
# 进入容器:docker exec -it python /bin/bash
##############################################
FROM 192.168.3.5:5000/system/centos:centos7.6.1810
MAINTAINER numgal # 指定作者信息
RUN set -ex \
# 预安装所需组件
&& yum install -y wget tar libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make initscripts \
&& wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz \
&& tar -zxvf Python-3.7.3.tgz \
&& cd Python-3.7.3 \
&& ./configure prefix=/usr/local/python3 \
&& make \
&& make install \
&& make clean \
&& rm -rf /Python-3.7.3* \
&& yum install -y epel-release \
&& yum install -y python-pip
# 设置默认为python3
RUN set -ex \
# 备份旧版本python
&& mv /usr/bin/python /usr/bin/python27 \
&& mv /usr/bin/pip /usr/bin/pip-python2.7 \
# 配置默认为python3
&& ln -s /usr/local/python3/bin/python3.7 /usr/bin/python \
&& ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
# 修复因修改python版本导致yum失效问题
RUN set -ex \
&& sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/bin/yum \
&& sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/libexec/urlgrabber-ext-down \
&& yum install -y deltarpm
# 基础环境配置
RUN set -ex \
# 修改系统时区为东八区
&& rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& yum install -y vim \
# 安装定时任务组件
&& yum -y install cronie
# 支持中文
RUN yum install kde-l10n-Chinese -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
# 更新pip版本
RUN pip install --upgrade pip
ENV LC_ALL zh_CN.UTF-8
yaml文件
同上
注意事项
- 注意在dockerfile中修改版本号