我可以创建一个运行注册表的容器: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
答案 0 :(得分:1)
这是默认注册表,即dockerhub:
另请参阅:
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守护程序使用映像名称(即10.10.100.30:80/public/ubuntu:18.04
)进行解析,以确定应在哪个注册表和存储库中进行搜索。
但是docker守护程序会先检查映像是否在本地磁盘上,然后再在注册表中进行远程搜索。这部分可能是您遭受的最困惑。
请在下面阅读更多信息。
正如人们所说,它不能被配置覆盖。也许出于安全考虑。
我非常确定我们可以为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
输出的位置。
有两种角度来了解如何将图像存储在本地磁盘上:
来自操作系统上的人/文件系统,表示文件和目录(仅适用于我 意见
默认目录为/var/lib/docker/image/<Storage Driver>
(
在docker info
的输出中与Storage Driver一起显示)。下一个,
有几个目录(distribution / imagedb / layerdb)和一个
名为repositories.json
的文件。这应该是最重要的
docker images
操作中保存文件。
来自docker daemon
多层图像组成。当我们使用Dockerfile执行docker
build
时,每个执行人员将导致生成一个层
通过docker daemon并且可以在图像之间共享同一层。
因此Docker守护程序维护一个基于图的数据库来管理
这些图像层之间的关系-
父母/孩子/下层/上层...
每次执行涉及docker映像的docker命令时,docker守护程序都会首先检查其自己的基于图的数据库。如果找不到,请自动执行docker pull
并将图像信息存储到数据库中以加快以后的操作。
由于我也是Docker的新手,所以我认为您可以在docker.com上查看Docs。相当详细。
请帮忙〜