制作镜像

英博云平台上启用了Docker容器功能的开发机,支持制作和推送镜像。

前提条件

  • 开发机已打开Docker容器开关。

通过Dockerfile构建

支持使用命令docker build, 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

注意:

  1. 无法从docker.io源站拉取,建议在使用FROM指定基础镜像时,尽量不要使用Docker Hub的容器镜像。
  2. 平台已对GCR、GHCR、NVCR、Quay等镜像源做了加速,使用FROM指定基础镜像时,前缀只需要加入registry-cn-huabei1-internal.ebcloud.com。
  3. 用户自定义镜像仓库地址可通过选择 镜像 > 自定义镜像 页面左上角获取。
  1. Dockerfile示例,保存在共享存储卷/data下,执行docker build 命令:
FROM registry-cn-huabei1-internal.ebcloud.com/cadvisor/cadvisor:v0.39.3
CMD ["echo", "Hello from minimal Docker image!"]
docker build -t registry-cn-huabei1-internal.ebcloud.com/myprject/images1:tag1 .

参数说明:

  • -t :指定要创建的目标镜像名。
  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径。
  1. 使用docker images查看创建的镜像已经在列表中存在,镜像ID为1785e2bcc6a9
  1. 设置镜像标签,使用docker tag命令,为镜像添加一个新的标签。
docker tag 1785e2bcc6a9 registry-cn-huabei1-internal.ebcloud.com/myprject/images1:tag2
  1. 使用docker push命令,推送镜像到用户的自定义镜像仓库中。
docker push  registry-cn-huabei1-internal.ebcloud.com/myprject/images1:tag2

通过Docker commit构建

支持在 Docker 容器中安装和部署一些软件,再通过docker commit将更新后的容器打包为一个新的镜像。

# 列出当前运行的 Docker 容器
root@demo2-0-server:/data2/ss# docker ps
CONTAINER ID   IMAGE                                                                      COMMAND                  CREATED         STATUS                            PORTS      NAMES                                                      244bcf77cc25   images   "/usr/bin/cadvisor -…"   9 seconds ago   Up 8 seconds (health: starting)   8080/tcp   boring_bell 

# 从运行中的容器创建新的镜像,并命名为 demo:v1.0
root@demo2-0-server:/data2/ss# docker commit 244bcf77cc25 demo:v1.0
sha256:d1564a370f47c493f24c4954906590492217b6f826f99db910dcf10b8ec298f5

# 列出所有 Docker 镜像
root@demo2-0-server:/data2/ss# docker images
REPOSITORY    TAG                                 IMAGE ID       CREATED         SIZE
demo          v1                                  d1564a370f47   16 seconds ago   87MB

# 给 Docker 镜像打标签
root@demo2-0-server:/data2/ss# docker tag d1564a370f47 registry-cn-huabei1-internal.ebcloud.com/myprject/images1:tag2

# 推送镜像到用户的自定义镜像仓库中
root@demo2-0-server:/data2/ss# docker push registry-cn-huabei1-internal.ebcloud.com/myprject/images1:tag2

通过Docker save构建

支持通过docker save命令将 Docker 镜像保存为 tar 文件,尽量存在持久化存储卷中。

docker save -o /data2/demo.tar demo:v1.0