提示:可以看到5000端口已经处于监听状态了;到此docker-distribution就启动起来了;这个仓库服务很简陋,没有用户认证功能,默认是基于http通信而非https,所以从某些角度讲,不是一个安全的仓库;所以一般不见在互联网上使用,在自己的内外环境中可以使用;
这里补充一点,docker的镜像通常是 registry地址加repository名称加版本这三部分组成,registry可以是域名,可以是ip地址加端口,也可以说域名加端口,默认https是443端口,http是80端口,如果不写端口默认是443而非80(原因是docker默认不支持从http协议的仓库下载/上传镜像);例如 quay.io/coreos/flannel:v0.12.0-s390x 从这个镜像名我们就可以知道registry是https://quay.io;repository名称为coreos/flannel 版本是v0.12.0-s390x;
示例:下载第三方仓库镜像到本地
提示:可以看到下载下来的镜像名称就是我们刚才说的registry+repository+版本;从上面的信息我们可以总结一点,docker镜像的名称(标签)反应了该镜像来自哪个registry的那个仓库;所以我们要下载私有镜像仓库中的镜像就需要把加上私有registry的名称或地址+repository+版本来下载私有镜像仓库中的镜像;同理上传镜像也需要写明上传到那个registry中的那个repository中去;
示例:上传本地镜像到私有仓库
提示:要把本地仓库镜像传到私有仓库中去,首先我们要把本地镜像打一个新的标签,按照我们刚才上面说的逻辑,然后在上传新打到标签的镜像到私有仓库就可以了;从上面的信息我们看到当我们打好标签后,上传镜像时报错了,提示我们仓库不是https的;默认情况docker不支持http明文上传/下载镜像;如果我们非要用http上传下载镜像我们需要在配置文件中明确的告诉docker非安全仓库地址;
配置docker支持私有仓库上传下载镜像
1
2
3
4
5
6
7
8
|
[root@docker_registry ~] # cat /etc/docker/daemon.json { "registry-mirrors" : [ "https://registry.docker-cn.com" , "https://cyr1uljt.mirror.aliyuncs.com" ], "insecure-registries" : [ "192.168.0.99:5000" ] } [root@docker_registry ~] # systemctl daemon-reload [root@docker_registry ~] # systemctl restart docker |
提示:我们通过在配置文件中配置insecure-registries来告诉docker192.168.0.99:5000这个registry是不安全的,但是我们信任这个仓库,大概就是这个意思嘛;通常我们是写主机名然后配合hosts文件来解析的方式来对registry解析;从而把镜像命名为主机名+仓库名+版本的形式;如下所示;这里还需要注意一点insecure-registries后面的列表中的仓库如果有域名,域名不能有下划线(“_”),否则重启docker会起不来;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
[root@docker_registry ~] # cat /etc/docker/daemon.json { "registry-mirrors" : [ "https://registry.docker-cn.com" , "https://cyr1uljt.mirror.aliyuncs.com" ], "insecure-registries" : [ "192.168.0.99:5000" , "docker-registry.io:5000" ] } [root@docker_registry ~] # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.99 docker-registry.io registry 192.168.0.22 docker-node01.io node01 192.168.0.23 docker-node02.io node02 [root@docker_registry ~] # systemctl restart docker [root@docker_registry ~] # docker info Client: Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 1 Server Version: 19.03.11 Storage Driver: overlay2 Backing Filesystem: xfs 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 local logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 3.10.0-693.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 1.785GiB Name: docker_registry ID: R34V:IG2F:23I6:6WG6:FFQ4:75SV:3UKZ:RFH7:DGCO:QS7V:CS7K:NSH6 Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https: //index .docker.io /v1/ Labels: Experimental: false Insecure Registries: 192.168.0.99:5000 docker-registry.io:5000 127.0.0.0 /8 Registry Mirrors: https: //registry .docker-cn.com/ https: //cyr1uljt .mirror.aliyuncs.com/ Live Restore Enabled: false [root@docker_registry ~] # |