说明:本文中私有仓库的ip地址为10.10.172.203:5000,操作系统为CentOS7.2;
服务端:10.10.172.203/24
1、从Docker官方仓库里下载registry镜像
2、docker images命令查看本地镜像;
|
1
2
3
|
[root@docker ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest d1fd7d86a825 2 weeks ago 33.3MB
|
默认情况下,会将私有仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失。
所以一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,命令如下:
|
1
|
docker run -d -it --restart always --name docker-hub -p 5000:5000 -
v
/docker-hub/registry
:
/var/lib/registry
registry
|
查看容器运行
|
1
2
3
|
[root@docker ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
048805afbcf1 registry
"/entrypoint.sh /etc…"
11 seconds ago Up 8 seconds 0.0.0.0:5000->5000
/tcp
docker-hub
|
由上可以看到,已经启动了一个容器,地址为:10.10.172.203:5000。
3、由于仓库与客户端的https问题,需要修改/usr/lib/systemd/system/docker.service文件,添加 ExecStart=/usr/bin/dockerd --registry-mirror=http://019a7061.m.daocloud.io --insecure-registry 10.10.172.203:5000
|
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
|
[root@docker ~]
[Unit]
Description=Docker Application Container Engine
Documentation=https:
//docs
.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=
/usr/bin/dockerd
--storage-driver=devicemapper --storage-opt=dm.thinpooldev=
/dev/mapper/docker-thinpool
--storage-opt dm.use_deferred_removal=
true
--registry-mirror=http:
//019a7061
.m.daocloud.io --insecure-registry 10.10.172.203:5000
ExecReload=
/bin/kill
-s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=
yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
[root@docker ~]
或者
[root@docker ~]
{
"registry-mirrors"
: [
"http://df98fb04.m.daocloud.io"
],
"insecure-registries"
:[
"10.10.172.203:5000"
]
}
[root@docker ~]
重新加载docker服务
[root@docker ~]
[root@docker ~]
注:因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。
为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。
需要在docker的配置文件
/etc/sysconfig/docker
(ubuntu系统中的docker配置文件时
/etc/default/docker
)添加参数“--insecure-registry=10.10.172.203:5000”。
温馨提示:
这个是在客户机的docker配置文件里添加的(即上传镜像到私有仓库里或从私有仓库下载镜像的客户机)。
|
4、重新启动docker。(如果是在虚拟机中运行,重启一下虚拟机,要不然还是使用其他机器访问此仓库还是会有https的问题)
5、docker tag将镜像打tag,语法格式如下
|
1
|
docker tag <image_name> <registry_ip>:5000/<image_name>:<version>
|
|
1
2
3
4
5
|
[root@docker ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest d1fd7d86a825 3 weeks ago 33.3MB
10.10.172.203:5000
/centos7
latest ff426288ea90 3 weeks ago 207MB
centos latest ff426288ea90 3 weeks ago 207MB
|
6、镜像的上传与下载,语法格式如下
|
1
2
|
docker push <registry_ip>:5000/<image_name>:<version>;上传镜像至私有仓库
docker pull <registry_ip>:5000/<image_name>:<version>;从私有仓库pull镜像
|
|
1
2
3
4
5
|
[root@docker ~]
The push refers to repository [10.10.172.203:5000
/centos7
]
e15afa4858b6: Pushed
latest: digest: sha256:7e94d6055269edb455bcfb637292573117e4a8341e9b9abbc09b17d8aafe8fbe size: 529
[root@docker ~]
|
7、使用curl 10.10.172.203:5000/v2/_catalog 查看仓库中的镜像情况
|
1
2
3
|
[root@docker ~]
{
"repositories"
:[
"centos7"
]}
[root@docker ~]
|
注意查看镜像方法(docker pull registry:2.1.1):
客户端下载私有仓库镜像:
-
配置docker信任私有仓库地址(http)
|
1
2
3
4
5
|
[root@localhost ~]
{
"registry-mirrors"
: [
"http://df98fb04.m.daocloud.io"
],
"insecure-registries"
:[
"10.10.172.203:5000"
]
}
|
2.查看客户端本机镜像列表
|
1
2
3
|
[root@localhost ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest ff426288ea90 3 weeks ago 207MB
|
3.从私有仓库下载centos镜像
|
1
2
3
4
5
|
[root@localhost ~]
Using default tag: latest
latest: Pulling from centos7
Digest: sha256:7e94d6055269edb455bcfb637292573117e4a8341e9b9abbc09b17d8aafe8fbe
Status: Downloaded newer image
for
10.10.172.203:5000
/centos7
:latest
|
4.再次查看客户端本机镜像列表
|
1
2
3
4
5
|
[root@localhost ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
10.10.172.203:5000
/centos7
latest ff426288ea90 3 weeks ago 207MB
centos latest ff426288ea90 3 weeks ago 207MB
[root@localhost ~]
|
总结:使用企业内部私有镜像仓库中的镜像,大大节省了镜像下载的时间。
本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/2067156,如需转载请自行联系原作者