0

如果在未找到链接容器的情况下运行映像,我可能会收到不正确的行为和错误消息:

# this works:
> docker run --rm -d --name natsserver nats
> docker run --rm -it --name hello-world --link natsserver hello-world

# now stop natsserver again...
> docker stop natsserver

当我使用相同的命令再次运行 hello-world 时,我不明白错误处理的第一部分 - 为什么 docker 尝试拉动?

> docker run --rm -it --name hello-world --link natsserver hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
Digest: sha256:b8ba256769a0ac28dd126d584e0a2011cd2877f3f76e093a7ae560f2a5301c00
Status: Image is up to date for hello-world:latest
docker: Error response from daemon: could not get container for natsserver: No such container: natsserver.
See 'docker run --help'.

如果我尝试运行我在本地构建的映像,情况会变得更糟:

> docker build -t nats-logger .
[...]
Successfully tagged nats-logger:latest

> docker run --rm -it --name nats-logger --link=natsserver nats-logger
Unable to find image 'nats-logger:latest' locally
docker: Error response from daemon: pull access denied for nats-logger, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.

所以我的问题是:

a) 是否允许docker在这种情况下尝试拉动,或者这是一种不良行为?

b)这真的是一个糟糕的错误消息,还是我错过了什么?

PS:我正在运行 Docker 版本 19.03.2,在 Windows 10 上构建 6a30dfc。

4

2 回答 2

1

在这种情况下是否允许 docker 尝试拉动

如果机器上不可用,Docker 将提取图像。

无法在本地找到图像“hello-world:latest”

此警告消息不是由于链接,而是因为hello-world:latest您的系统本地映像中不存在。所以运行docker run时它会在本地查看,如果不存在则从远程提取。

在此处输入图像描述

现在首先,最好使用 docker-compose 而不是旧版容器链接。

如果容器未运行,则无法链接容器。验证容器natsserver使用docker ps,然后如果它正在运行,那么你可以链接。

docker run --rm -it --name hello-world --link natsserver:my_natserver_host hello-world

启动后,您可以检查链接。

docker inspect hello-world | grep -A 1 Links

旧版容器链接

警告:这--link flag是 Docker 的遗留功能。它最终可能会被删除。除非您绝对需要继续使用它,否则我们建议您使用用户定义的网络来促进两个容器之间的通信,而不是使用--link. 用户定义的网络不支持您可以使用的一项功能 --link是在容器之间共享环境变量。但是,您可以使用其他机制(例如卷)以更可控的方式在容器之间共享环境变量。

于 2019-09-16T10:40:58.280 回答
0
  • 只需尝试“docker login”。

  • 检查您的图像名称是否存在于 docker hub 中

  • 并检查正确的 docker build 命令 ->docker build -t image-name .

  • 检查 Docker 文件脚本的正确性

于 2020-06-10T09:12:27.940 回答