docker 不联网环境下启动nginx镜像提示错误:ERROR: failed to solve: nginx:1.23.3: failed to do request: Head "https://qlmy5iw9.mirror.aliyuncs.com/v2/library/nginx/manifests/1.23.3?ns=docker.io%22: dial tcp 116.62.81.173:443: i/o timeout怎么解决呢?
[root@localhost nginx-deploy]# docker build -t web .
[+] Building 60.0s (3/3) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 198B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/nginx:1.23.3 60.0s
------
> [internal] load metadata for docker.io/library/nginx:1.23.3:
------
Dockerfile:1
--------------------
1 | >>> FROM nginx:1.23.3
2 |
3 | #jnpf的配置文件
--------------------
**ERROR: failed to solve: nginx:1.23.3: failed to do request: Head "https://qlmy5iw9.mirror.aliyuncs.com/v2/library/nginx/manifests/1.23.3?ns=docker.io": dial tcp 116.62.81.173:443: i/o timeout**
联网情况下运行正常:
[root@localhost nginx-deploy]# docker build -t web .
[+] Building 18.0s (7/7) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 198B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/nginx:1.23.3 18.0s
=> [internal] load build context 0.0s
=> => transferring context: 92B 0.0s
=> [1/2] FROM docker.io/library/nginx:1.23.3@sha256:f4e3b6489888647ce1834b601c6c06b9f8c03dee6e097e13ed3e28c01ea3ac8c 0.0s
=> CACHED [2/2] COPY lxc347.conf /etc/nginx/conf.d/ 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:6ad6e7c01ccbadb3073a4656ad61602b76ab3c529e6f7a58caf4f279eb7f3822 0.0s
=> => naming to docker.io/library/web 0.0s
[root@localhost nginx-deploy]#
其中dockerfile文件内容:
FROM nginx:1.23.3
#jnpf的配置文件
COPY lxc347.conf /etc/nginx/conf.d/
#开放端口
EXPOSE 80
deploy.sh文件内容:
#!/bin/bash
#镜像名称
CONTAINER_IMAGE=nginx:master-$(date +%Y%m%d%H%M)
#容器名称
CONTAINER_NAME=nginx
#构建镜像
docker build -t $CONTAINER_IMAGE .
#停止之前的容器
docker stop $CONTAINER_NAME || true && docker rm -f $CONTAINER_NAME || true
#运行新的容器,/home/deploy/front是JNPF前端项目地址
docker run --network=bridge -d -p 3000:80 -v /home/deploy/front:/home/deploy/front --name $CONTAINER_NAME $CONTAINER_IMAGE
【以下回答由 GPT 生成】
问题分析:
根据错误信息,问题出现在无法解析manifest的步骤上。当我们在构建镜像时,Docker会尝试从远程仓库(在这里是docker.io
)获取所需的镜像层。然而,在不联网的情况下,Docker无法连接到远程仓库,因此无法解析manifest,从而导致构建过程失败。
解决方案:
要解决这个问题,我们可以使用本地镜像作为基础镜像,而不是从远程仓库获取。下面是解决问题的步骤:
docker pull nginx:1.23.3
这将下载名为nginx
、标签为1.23.3
的镜像。
docker images
输出类似以下内容:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.23.3 123456789abc 2 weeks ago 133MB
FROM
语句如下:FROM nginx:1.23.3
docker build
命令构建镜像:docker build -t web .
这将使用本地的nginx:1.23.3
镜像作为基础镜像进行构建。
docker images
输出中应该包含一个新的名为web
、标签为latest
的镜像。
这样,您就可以在不联网的环境中成功构建nginx镜像了。
希望这个解决方案对您有帮助。如果您有任何疑问,请随时提问。
【相关推荐】
引用 皆我百晓生 小程序回复内容作答:
在不联网的环境下启动nginx镜像出现错误是因为无法访问外部镜像仓库。要解决这个问题,可以通过以下方法之一:
使用离线方式加载镜像:在联网的环境下,使用docker pull命令下载nginx镜像并导出为一个tar文件。将该tar文件转移到不联网的环境中,然后使用docker load命令加载该离线镜像文件。接下来,在Dockerfile中使用该离线镜像作为基础镜像进行构建。
在联网的环境下,使用docker save命令将nginx镜像导出为一个tar文件,并将该文件转移到不联网的环境中。然后使用docker load命令加载该离线镜像文件。在Dockerfile中使用该离线镜像作为基础镜像进行构建。
在联网的环境下,使用docker save命令将nginx镜像导出为一个tar文件,并将该文件上传到不联网的服务器上。然后在不联网的环境中,使用docker load命令加载该离线镜像文件。在Dockerfile中使用该离线镜像作为基础镜像进行构建。
在联网的环境下,使用docker build命令构建镜像时,增加--network=none参数。这将禁止容器访问网络,从而避免访问外部镜像仓库。注意,这种方法在构建过程中无法使用apt-get等命令安装软件包。
选择合适的方法根据你的实际环境和需求进行操作即可。