注册表在哪里运行

时间:2018-08-29 11:48:32

标签: docker docker-registry

我可以创建一个运行注册表的容器:docker run -d -p 5000:5000 --restart = always --name注册表注册表:2

但是docker有一个默认注册表,我可以看到该注册表位于Registry: https://index.docker.io/v1/上,它必须是本地的,但是它在哪里-您知道吗?

正确的是,如果使用浏览器并转到:https://index.docker.io/v1/,它将带您进入docker hub:https://index.docker.io/v1/

但是我所有的本地映像都是我的计算机上的本地映像,因此必须有一些注册表正在运行。

您可以查看注册表:

docker system info
Containers: 32
 Running: 29
 Paused: 0
 Stopped: 3
Images: 205
Server Version: 18.06.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d64c661f1d51c48782c9cec8fda7604785f93587
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.93-linuxkit-aufs
Operating System: Docker for Mac
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 2.934GiB
Name: linuxkit-025000000001
ID: Q6IO:V5CP:OHJL:4KJP:ZG2X:GV5W:YHMM:2WCK:4V4O:O6T3:A4E4:BJHM
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 206
 Goroutines: 223
 System Time: 2018-08-29T11:56:34.8224409Z
 EventsListeners: 2
HTTP Proxy: gateway.docker.internal:3128
HTTPS Proxy: gateway.docker.internal:3129
Registry: https://index.docker.io/v1/
Labels:
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

2 个答案:

答案 0 :(得分:1)

这是默认注册表,即dockerhub:

https://hub.docker.com/

另请参阅:

https://github.com/moby/moby/issues/7203

您无法更改默认注册表(即dockerhub)。您可以做的就是使用注册表作为前缀来进行推和拉。

例如:

docker push localhost:5000/yourimage

docker pull localhost:5000/yourimage

根据我在下面的评论-该注册表在本地运行,并带有

docker ps | grep registry:2

您可以看到它正在运行。然后,您可以使用它的ID来获取您将在其中看到活动的日志。

您还可以通过调用以下命令来使用api:

curl -X GET http://localhost:5000/v2/_catalog

这将列出您推送到本地注册表的所有图像。

答案 1 :(得分:0)

Docker有两种存储映像的方式:

  • 远程注册表(默认为docker.io,其他为私有) 手动配置)
  • 本地磁盘(默认为/ var / lib / docker / image,可以使用-g标志进行配置)

Docker守护程序使用映像名称(即10.10.100.30:80/public/ubuntu:18.04)进行解析,以确定应在哪个注册表和存储库中进行搜索。
但是docker守护程序会先检查映像是否在本地磁盘上,然后再在注册表中进行远程搜索。这部分可能是您遭受的最困惑。
请在下面阅读更多信息。

默认注册表:docker.io

正如人们所说,它不能被配置覆盖。也许出于安全考虑。

用户定义的私人注册表

我非常确定我们可以为Docker映像定义自己的私有注册表。部署注册表后,这应该很容易实现,我们要做的就是用/etc/docker/daemon.json配置文件{“insecure-registries”: [“10.10.100.30:80”]}(如果不存在则创建它)。

当然,我们应该在配置后重新启动docker daemon。执行systemctl restart docker。如果使用此注册表设置了用户名/密码,则应执行登录操作。执行docker login 10.10.100.30:80,然后输入用户名和密码。如果没有发生错误,您可能会看到成功的登录消息。
现在,尝试输入docker info,您可能会看到如下消息:

Insecure Registries:
10.10.100.30:80
127.0.0.0/8

最后,您可以使用专用注册表URL前缀(即10.10.100.30:80/public/ubuntu:18.04)推/拉图像。

本地磁盘存储

这是docker images输出的位置。

有两种角度来了解如何将图像存储在本地磁盘上:

  1. 来自操作系统上的人/文件系统,表示文件和目录(仅适用于我 意见

    默认目录为/var/lib/docker/image/<Storage Driver>( 在docker info的输出中与Storage Driver一起显示)。下一个, 有几个目录(distribution / imagedb / layerdb)和一个 名为repositories.json的文件。这应该是最重要的 docker images操作中保存文件。

  2. 来自docker daemon

    多层图像组成。当我们使用Dockerfile执行docker build时,每个执行人员将导致生成一个层 通过docker daemon并且可以在图像之间共享同一层。 因此Docker守护程序维护一个基于图的数据库来管理 这些图像层之间的关系- 父母/孩子/下层/上层...

每次执行涉及docker映像的docker命令时,docker守护程序都会首先检查其自己的基于图的数据库。如果找不到,请自动执行docker pull并将图像信息存储到数据库中以加快以后的操作。

由于我也是Docker的新手,所以我认为您可以在docker.com上查看Docs。相当详细。

请帮忙〜