制作镜像
本节为您介绍如何基于已有镜像制作标准镜像。
# 背景说明
将开发环境 临时保存 为镜像是以 commit 方式构建镜像,该方式会将大量缓存文件打入镜像内,造成镜像臃肿,且每保存一次就会 commit 一次,commit 次数多了易形成巨无霸镜像,既占用存储空间,又影响开发环境启停速度,两种镜像构建的方式详细说明可参考 Docker镜像及分层结构。
如果您的临时存储额度用完了,建议您使用标准镜像构建的方式。
# 前提条件
- 用于制作镜像的基础镜像需是 dockerfile 方式构建的标准镜像,不可是临时镜像,且镜像需小于 120 层。
- 本次构建,环境新增内容不可超过 10GB。
# 操作步骤
在平台首页,左侧导航栏中选择 镜像,进入 镜像 页面。
单击右上角的 制作镜像,进入镜像制作页。
在 制作镜像 页配置镜像制作任务。
镜像名称:根据您的需求自定义,不可与空间内其他镜像重名。
基础镜像:选择基础镜像,基础镜像需满足如下条件。
- 非临时镜像,即必须是以 dockerfile 方式构建的镜像,若原镜像是一个commit方式保存的镜像,会一直追溯到最近一个以dockerfile方式构建的镜像,作为这里的基础镜像。
- 镜像层数不超过 120。
上传文件:Dockerfile 中如需用到文件,可通过此处上传。默认上传到平台中与 dockerfile 同级的目录下,上传后需在 dockerfile 中增加如下指令拷贝文件到待构建的操作系统中。
COPY <file> <path-in-os>
<file>
:上传的文件,例如上传文件为 requirements.txt。<path-in-os>
:待构建的操作系统中的路径,任何存在的路径即可,例如拷贝到/tmp/
下。
按上述举例,则完整的指令应为:
COPY requirements.txt /tmp/
拷贝完成,才可在 dockerfile 中使用该文件,如:
RUN pip install -r /tmp/requirements.txt
镜像描述:可备注该镜像的使用场景等。
Dockerfile:参考 编写dockerfile,需注意单次新增的工具、包、依赖库不可超过 10GB。
单击 pip 换源,一键生成换源指令,将官方镜像源换成趋动源,生成的指令建议放在首行。在趋动云平台使用趋动源拉取包,其拉取速度优于其他国内镜像源。
单击 构建,提交镜像制作任务。
系统默认进入 构建列表,在该列表中可查看镜像构建的状态及日志。说明: 您也可通过如下方式进入 构建列表。
- 平台左侧导航栏选择 镜像,进入 镜像 页。
- 单击 镜像 页右上角的 构建列表。
# 异常处理
如果构建失败,您可以在 构建列表 中:
- 通过 错误信息 和 查看日志 确认失败的原因。
- 错误信息:仅展示执行过程中的报错信息,将鼠标悬于错误信息上可查看详细报错。
- 查看日志:日志中记录 dockerfile 中所有命令的执行情况。
- 单击 重新编辑,进入 制作镜像 页,根据失败原因修改 dockerfile。
- 单击 构建,重新提交镜像构建任务。
# 常见报错
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(hos……(Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FA……) 报错指令后增加
--trusted-host xxx
参数指定该镜像源为信任,如:pip install --no-cache-dir xxx -i https://mirror.baidu.com/pypi/simple --trusted-host mirror.baidu.com
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv pip 的 root 用户警告提示,pip 不建议所有包都安装到 root 环境,官方推荐使用 env,可以忽略。
提示xxx包应安装xxx版本。
说明当前安装的软件存在版本不兼容问题,按照报错信息提示,在 dockerfile 中以numpy==xxx
的方式指定安装提示的版本。