python arm 基础镜像构建

之前公司运行的docker 环境是 x86 基础 上的,但是由于为兼顾国产化,要求开发对应的 ARM 版docker 镜像;但是构架机上无法连接公网,导致一些之前的包下载不了;特此记录实现的过程。

由于Python 是高级语言,对底层的依赖比较少,所以采用文件复制的办法实现x86 docker 到 arm64的迁移实现;

# 首先将x86 版本的基础镜像运行起来
docker run --rm -ti  python_x86:v2.7 bash

# 查看 site-packages 所在位置
root@8ed298a1b4ba:/# python -m site
sys.path = [
    '/',
    '/usr/local/lib/python27.zip',
    '/usr/local/lib/python2.7',
    '/usr/local/lib/python2.7/plat-linux2',
    '/usr/local/lib/python2.7/lib-tk',
    '/usr/local/lib/python2.7/lib-old',
    '/usr/local/lib/python2.7/lib-dynload',
    '/usr/local/lib/python2.7/site-packages',
]

# 将安装包拷出 ,另起一个终端 将site-packages 目录拷贝出来
docker cp  96f7f14e99ab:/usr/local/lib/python2.7/site-packages /tmp/

原来的安装包拷贝出来了,存在 site-packages 中。

然后将文件拷贝到 运行 构建 arm docker 镜像的机器上,将文件夹进行替换;

docker run --rm -ti  python_arm64:v2.7 bash

# 查看 site-packages 所在位置
root@8ed298a1b4ba:/# python -m site
sys.path = [
    '/',
    '/usr/local/lib/python27.zip',
    '/usr/local/lib/python2.7',
    '/usr/local/lib/python2.7/plat-linux2',
    '/usr/local/lib/python2.7/lib-tk',
    '/usr/local/lib/python2.7/lib-old',
    '/usr/local/lib/python2.7/lib-dynload',
    '/usr/local/lib/python2.7/site-packages',
]

# 清理 site-packages 目录
rm -rf /usr/local/lib/python2.7/site-packages

# 将原来文件包,拷贝进去
docker cp /tmp/site-packages  96f7f14e99ab:/usr/local/lib/python2.7/

# docker commit 
docker commit 96f7f14e99ab python_arm64_new:v2.7

上一篇:Python随手记


下一篇:Python全局引用自定义包