Docker构建镜像报错ERROR [internal] load metadata for docker.io/library/XXX
(一)问题描述
我需要以官方python镜像作为基础镜像来构建自己的镜像,dockerfile是这样子的:
# 使用官方Python镜像作为基础镜像
FROM python:3.12
# 设置工作目录
WORKDIR /app
# 将当前目录下的文件复制到容器的工作目录中
COPY . /app
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 指定容器启动时运行的命令
CMD ["python", "gdelt_analysis_v2.py"]
执行构建镜像命令:
docker build -t gdelt_analysis:v1 .
结果报错:ERROR [internal] load metadata for docker.io/library/python:3.12
(二)解决思路
尝试执行docker pull hello-world,结果发现pull不下来,报错网络问题,访问不到docker hub。于是我去尝试配置镜像,但是不知道为什么还是失败了(具体报错信息忘记截图了),使用的是阿里云的镜像,报错大意是找不到host。立刻科学上网,然后docker pull hello-world就没问题了,但是执行构建命令又报了新的错:
看报错信息,好像又是因为代理所以访问才失败。 可为什么docker pull hello-world可以呢?于是我又执行了docker pull python:3.12,这条命令也成功了,没报错。难道是只能pull不能build?我在执行完docker pull python:3.12又尝试了构建命令,这次成功了。
所以总的来说两个步骤:(1)配置镜像/科学上网,网络问题解没解决看docker pull hellow-world成不成功,成功了就说明现在网络是没问题的;(2)先pull基础镜像,再构建自己的镜像(执行build命令)。