在迁移镜像源之前,线上部署没问题。
dockerfile 做了这样的改动
# FROM nginx:latest as prod-stage
FROM registry.cn-hangzhou.aliyuncs.com/my_hub/nginx:latest
改动后,线上部署失败,容器报错 exec user process caused: exec format err
一开始以为是镜像本身问题,但是本地运行是跑通状态的。 于是改回:
#FROM nginx:latest as prod-stage
# FROM registry.cn-hangzhou.aliyuncs.com/my_hub/nginx:latest
服务端再部署,正常运行。
是服务端 docker 哪儿没有配置好吗?关键是本地也没怎么配置..
1
jiangzm 71 天前
是不是仓库权限问题
|
2
onichandame 71 天前
国内镜像源已经全面陷落。个人项目直接翻墙,企业项目部署到香港或者买个海外专线
|
3
90xchun 71 天前 via iPhone
应该是最近改的,即使你配置的公开仓库,直接拉是拉不动的,需要登录后就正常 pull 镜像了
|
4
Curtion 71 天前
我现在部署程序都是 docker save 和 docker load 了,太惨了
|
5
JensenQian 71 天前
要么挂代理
要么自己反代下 完毕 |
6
yunshangzhou OP @90xchun 服务端能拉镜像,只是容器无法运行。个人仓库公开的,不需要登也能 pull
|
7
90xchun 71 天前 via iPhone
@yunshangzhou 那服务是和本地一样的环境吗?你本地要啊是 mac 或者是 Windows ,而你服务器是 linux ,那是无法运行的
|
8
yanghanlin 71 天前 via Android 1
是不是服务器和本地架构不一样导致的呢?官方的 Nginx 镜像应该支持多平台所以没问题,自己做镜像时可能忽略了其他平台
|
9
yanghanlin 71 天前 via Android
@yanghanlin 比如本地是 Mac ( ARM ),服务器是 x86 ,自己镜像时可能只是 docker pull/push 了下,没有复制全部平台的镜像
|
10
swq1227 71 天前 1
#8 应该是正解,可以使用
```bash docker buildx build --platform=linux/amd64,linux/arm64 . ``` 指定 platform |
11
yunshangzhou OP |
12
yanghanlin 71 天前
@yunshangzhou #11 用 docker pull/push 如何正确复制镜像我暂时也不太清楚呢,推荐一下操作镜像的专用工具 skopeo https://github.com/containers/skopeo
|
13
sagaxu 71 天前
运行错误信息呢?
|
14
swq1227 71 天前
@yunshangzhou 一样的道理,例如你本地是 MAC M1, 那么你 pull 下来的镜像就是 arm 的,你重新打的 tag 也是给这个 arm 的镜像打的 tag ,push 到 acr 就只有 arm
|
15
JayZXu 71 天前
我这边一直用的阿里云的个人 docker 仓库跑流水线的,是正常的。应该是上面说到的架构问题
|
16
Baymaxbowen 71 天前
找赛博菩萨帮你反代一下
|
17
yunshangzhou OP @swq1227 嗯,我想应该是这个了,我以为是多架构复合型镜像
|
18
anonydmer 71 天前
exec format err 这个就是典型的架构不匹配的错误提示
|
19
guanzhangzhang 71 天前
exec format err 这个就是典型的架构不匹配的错误提示
而在没使用 qemu-user-static 和配合 docker buildx 指定 platform 下,默认都是使用机器的架构构建的 支持 manifest list 的镜像下,你 pull 没指定 platform 下默认是按照机器架构拉取,例如 nginx:alpine 你在 arm64 架构上拉取就是拉 arm64 的镜像,amd64 就是 amd64 架构 |
20
yunshangzhou OP @guanzhangzhang 我糊涂了,早应该想到这个
|