定制python基础镜像的方法

  1. 前言
    一些开源软件依赖于许多python库,如果采用容器化技术,事先配置好一个安装了所有依赖组件的基础容器镜像,这样在软件部署过程中,就不需要再为依赖的库发愁了。
  2. 制作基础镜像的步骤

    1) 登陆到容器管理机器上,切换root账户
    2) 在容器管理机器上创建工作目录,例如 my_work
    3) 将依赖的python库制作成清单文件requirements.txt(具体语法参考pip命令相关文档),拷贝到容器管理机器上my_work目录下,例如:

    feedparser==5.2.1

    gevent==1.1.2 ; sys_platform != 'win32' and python_version < '3.7'

    gevent==1.3.4 ; sys_platform != 'win32' and python_version >= '3.7'

    greenlet==0.4.10 ; python_version < '3.7'

    greenlet==0.4.13 ; python_version >= '3.7'

    html2text==2016.9.19

    Jinja2==2.8.1

    libsass==0.12.3

    lxml==3.7.1 ; sys_platform != 'win32' and python_version < '3.7'

    lxml==4.2.3 ; sys_platform != 'win32' and python_version >= '3.7'

    lxml ; sys_platform == 'win32'

    ofxparse==0.16

    passlib==1.6.5

    Pillow==4.0.0

    psutil==4.3.1

    psycopg2==2.7.3.1

    4) 将制作基础镜像的Dockerfile拷贝到容器管理机器上my_work目录下,例如:

    FROM xxx.cn/cloud-manage/python:3.6                        # 已有的基础镜像,安装了python3.6环境

    RUN pip install --upgrade pip            # 升级pip,防止部分组件无法安装

    RUN apt-get update                    # 升级apt-get,防止部分组件无法安装

    RUN apt-get install -y --allow-unauthenticated libldap2-dev libsasl2-dev      # 安装一些python库依赖的本地模块(C/C++),忽略未认证的签名,忽略提示消息

    COPY ./requirements.txt ./              # 把容器管理机器上my_work目录下的清单文件拷贝到容器中

    RUN pip install -r ./requirements.txt --ignore-installed   # 安装清单文件中的所有python库,忽略文件冲突


    5) 在容器管理机器上my_work目录下执行以下命令,完成镜像的制作和发布

    export TAG_VERSION=1                                  # 设置基础镜像版本号

    export TAG_NAME=python3.6_4xxx     # 设置基础镜像名称,建议命名时能体现其用途

    docker build -t xxx.cn/cloud-manage/${TAG_NAME}_v${TAG_VERSION} .

    docker images |grep "${TAG_NAME}"         # 确认容器创建成功

    docker push xxx.cn/cloud-manage/${TAG_NAME}_v${TAG_VERSION}

你可能感兴趣的:(devops)