最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

docker镜像跨平台使用

XAMPP新闻 admin 553浏览 0评论

# 即使是不成熟的尝试,也胜于胎死腹中的策略。

我们利用镜像创建一个容器,该镜像必须与Docker宿主机系统架构一致,与Linux x86_64架构的系统只能使用Linux  x86_64的镜像创建容器。

实际场景:

当我们需要部署一个docker镜像到不同架构的电脑上时候,需要不同架构版本的镜像,每次pull对应架构的镜像,这样太麻烦。

解决办法:
manifest则能够解决分别pull不同架构名字的镜像。

 

Docker引擎会首选查找镜像是否有manifest列表,如果有的话Docker引擎会按照Docker运行环境查找出对应架构docker镜像。

# 查看这个manifest列表结构
docker manifest inspect golang:alpine

# 制作不同架构的docker images

docker build -t jiaxiaofeng/x8664-server

docker build -t jiaxiaofeng/arm64v8-server

# 分别push到docker hub

docker login
docker push jiaxiaofeng/x8664-server

docker push jiaxiaofeng/arm64v8-server

# 查看docker hub

zzzzzs0066

# 创建 manifest列表

docker manifest create jiaxiaofeng/server \
> jiaxiaofeng/x8664-server \
> jiaxiaofeng/arm64v8-server
输出:
Created manifest list docker.io/jiaxiaofeng/server:latest

 

# 设置manifest列表

docker manifest annotate jiaxiaofeng/server jiaxiaofeng/x8664-server \
> --os linux --arch x86_64
输出:
manifest entry for image has unsupported os/arch combination: linux/x86_64

docker manifest annotate jiaxiaofeng/server \
> jiaxiaofeng/arm64v8-server \
> --os linux --arch arm64 --variant v8

 

# 查看manifest列表

docker manifest inspect jiaxiaofeng/server
输出:
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 946,
         "digest": "sha256:25e362b21e75f6eac14350dbdfc6bac47ab23f255754ef7fada726ba83b4b58c",
         "platform": {
            "architecture": "arm64",
            "os": "linux",
            "variant": "v8"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 946,
         "digest": "sha256:635232175077d0771998091ce7397a5de8ef92a9ca2624b8011b1edaea3c635f",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      }
   ]
}

 

# push manifest到docker hub

docker manifest push jiaxiaofeng/server
输出:
Pushed ref docker.io/jiaxiaofeng/server@sha256:25e362b21e75f6eac14350dbdfc6bac47ab23f255754ef7fada726ba83b4b58c with digest: sha256:25e362b21e75f6eac14350dbdfc6bac47ab23f255754ef7fada726ba83b4b58c
Pushed ref docker.io/jiaxiaofeng/server@sha256:635232175077d0771998091ce7397a5de8ef92a9ca2624b8011b1edaea3c635f with digest: sha256:635232175077d0771998091ce7397a5de8ef92a9ca2624b8011b1edaea3c635f
sha256:7a2f8ac1eb53752a79998053552b80ac70bf374696931cdb6f7ad48b7c69dc94

 zzzzzs000066

查看OS/ARCH可以看到两个版本的server,一个是x86架构的,一个是arm架构的。

 

# 下载镜像测试

# 在不同架构分别执行
docker run -it --rm jiaxiaofeng/server

转载请注明:XAMPP中文组官网 » docker镜像跨平台使用

您必须 登录 才能发表评论!