docker-compose.yml中的图片来自哪里?

Where do the images in docker-compose.yml come from?

我不确定 docker 图片究竟是如何工作的,它们来自哪里。这基本上是一个由三部分组成的问题。

  1. 例如当你输入
docker run armhf/helloworld

它在本地不可用,它会拉取图像。

现在是从网上拉取图片吗?或者在本地意味着在容器内部,例如它从 pc 中提取。

现在在 Hyperledger 中 docker-像这样编写文件(取自现有示例)

networks:
  basic:

services:
  ca.example.com:
    image: hyperledger/fabric-ca
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca.example.com
     ...

我是否需要将它从某个地方下载到电脑上以便容器可以找到它,或者这是否能够以某种方式自行将它从互联网上拉下来?或者它是否取决于其 运行 的位置、是否可以访问互联网等?

  1. 如果有这样的 yaml 文件意味着什么(取自 kubernetes 上 hyperledger 的另一个示例)
image:
  tag: 1.2.0

persistence:
  accessMode: ReadWriteOnce
  size: 1Gi

peer:
  databaseType: CouchDB
  couchdbInstance: cdb-peer1
  mspID: AidTechMSP
...

此示例甚至没有 docker-compose 文件,而是分成不同的组件。它不使用图像吗?

  1. (来自同一个例子)
...
image: hyperledger/fabric-orderer:$IMAGE_TAG
...

(来自同一示例)$ 后面是否有与 docker 图片相关的内容?

只是一些让我困惑的事情,因为我只习惯了Windwos,我还没有找到可以全面回答这些看似简单的基本问题的东西。

根据您的 docker 守护程序指向的注册表从互联网上提取图像:

#docker info|grep "^Registry:"
Registry: https://index.docker.io/v1/

关于你的第二个问题,我不知道你是在哪里举的例子,如果你能提供源的话会很有用。

在评论后编辑第二个答案:

你在第二个问题中提到的 yaml 看起来像一个 kubernetes 的,而不是 docker 如果我没记错的话(对 kubernetes 了解不多)。

对于你的第三个问题,变量是指镜像的版本,镜像有标签可以代表多个不同版本的容器,你可以在这里看到这个例子:

https://hub.docker.com/_/centos?tab=tags

在适当的标签后拉取图像,你应该能够得到例如:

Centos 6:

 docker pull centos:6

Centos 7:

 docker pull centos:7

Centos 7.6.1810

docker pull centos:7.6.1810