docker: 如何打包一个可用的 image 到 aliyun 的镜像仓库中

🕐

打包一个可用的 imagealiyun 的个人镜像中,方便在国内快速的下载

01 拉取正常的 ruby-slim 镜像

拉取正常的镜像

# 拉取镜像
docker pull ruby:3.3.6-slim

# 如果有问题可以从这里
docker pull m.daocloud.io/docker.io/library/ruby:3.3.6-slim

# 下面这个没有用(很多网上提示这个)
docker pull --platform linux/amd64 ruby:3.3.6-slim

02 编译 x86 方式的镜像

准备 Dockerfile,执行命令 touch Dockerfile 生成

FROM ruby:3.3.6-slim

# Use Aliyun mirror for faster downloads in China
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources && \
    sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources

编译 x86_64 位的

docker buildx build --platform=linux/amd64 -t ruby:3.3.6-slim-x86_64 .

03 确认一下版本

确认一下版本

docker inspect ruby:3.3.6-slim-x86_64 --format='{{.Architecture}}' # amd64

04 打好 tag

打好 tag,准备上传到 aliyun,b7b79209ffc4 为本地目标 image

# list all images
$ docker images
                                                                                                                                                       
IMAGE                     ID             DISK USAGE   CONTENT SIZE   EXTRA
jsw-rails-ng-web:latest   015f9de9d89c       1.65GB          482MB
ruby:3.3.6-slim           b210597cc7d0        611MB          162MB
ruby:3.3.6-slim-x86_64    b7b79209ffc4        293MB         80.6MB

docker tag b7b79209ffc4 crpi-waqi49lkajb6myha.cn-hangzhou.personal.cr.aliyuncs.com/jswork/ruby:3.3.6-slim-x86_64

05 push 到 aliyun

push 到目标镜像

docker push crpi-waqi49lkajb6myha.cn-hangzhou.personal.cr.aliyuncs.com/jswork/ruby:3.3.6-slim-x86_64

查看是否真实推送到 aliyun

06 在 linux 下拉取镜像

拉取刚处理好的 image ,有可能需要 login

docker pull crpi-waqi49lkajb6myha.cn-hangzhou.personal.cr.aliyuncs.com/jswork/ruby:3.3.6-slim-x86_64

重命名,并查看架构是否正确

$ dk-mv crpi-waqi49lkajb6myha.cn-hangzhou.personal.cr.aliyuncs.com/jswork/ruby:3.3.6-slim-x86_64 ruby:3.3.6-slim-x86_64

$ dk-ls
REPOSITORY   TAG                 IMAGE ID       CREATED         SIZE
ruby         3.3.6-slim-x86_64   820283e89026   13 months ago   187MB

07 确认版本是否正确

确认版本是否为 x86/amd 支持的

# 确认架构
docker inspect ruby:3.3.6-slim-x86_64 --format='{{.Architecture}}' # amd64
# 运行容器
docker run --platform linux/amd64 -it ruby:3.3.6-slim-x86_64 bash

08 如果需要更新

直接执行同样的命令

  • 变化的部分 docker hash: 4a630be4c3b4
  • 可替换部分: ruby:3.3.6-slim-x86_64
docker buildx build --platform=linux/amd64 -t ruby:3.3.6-slim-x86_64 .
docker tag 4a630be4c3b4 crpi-waqi49lkajb6myha.cn-hangzhou.personal.cr.aliyuncs.com/jswork/ruby:3.3.6-slim-x86_64
docker push crpi-waqi49lkajb6myha.cn-hangzhou.personal.cr.aliyuncs.com/jswork/ruby:3.3.6-slim-x86_64
aliyun
docker
image
daocloud