下载镜像registry
[root@registry ~]# docker pull registry
查看当前镜像、
[root@registry ~]# docker images
运行registry容器 (将宿主机端口映射到容器中去,容器的5000端口是不能更改的。)
[root@registry ~]# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
# 参数说明
# -itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
# -v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
# -p:映射端口;访问宿主机的5500端口就访问到registry容器的服务了;
# --restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
# --name registry:创建容器命名为registry,你可以随便命名;
# registry:latest:这个是刚才pull下来的镜像;
#测试镜像仓库中所有的镜像
#现在是空的,因为才刚运行,里面没有任何镜像内容。
[root@registry ~]# curl http://0.0.0.0:5000/v2/_catalog
{"repositories":[]}
#客户端操作
#下载busybox镜像
[root@node ~]# docker pull busybox
[root@node ~]# docker images
#4.2 为镜像打标签
#必须要先将镜像的名称给变成 域名或ip/镜像名
#格式说明:Usage: docker tag SOURCE_IMAGE[:TAG] 服务器ip[:TAG]
[root@node ~]# docker tag busybox:latest 127.0.0.0:5000/busybox:v1
#添加私有镜像服务器的地址,注意书写格式为json,有严格的书写要求,然后重启docker服务:
[root@node ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [ "https://registry.docker-cn.com"],
"insecure-registries": [ "镜像厂库IP:5000"]
}
#这里的IP同上
#registry-mirrors 下载源
#insecure-registries 上传源
#重启 docker 一定要重启才会生效哦 如果上面的json 写错了 docker 会启动不了 insecure-registries 写错了或者容器端口号不是5000 会报登陆错误
systemctl restart docker
#上传到镜像服务器
[root@node ~]# docker push 172.18.18.90:5000/busybox:v1
The push refers to repository [172.18.18.90:5000/busybox]
#测试下载镜像
#上传测试没问题了,我们接下来测试一下从registry服务器上下载刚才上传的busybox镜像,先删除node主机上的镜像:
[root@node ~]# docker rmi -f $(docker images -aq)
#然后,从registry服务器上下载busybox镜像: 一定要带上IP:端口 不然会报未登录 未带标签会报找不到
[root@node ~]# docker pull 172.18.18.90:5000/busybox:v1
#列出所有镜像:
[root@node ~]# curl http://39.96.214.60:5000/v2/_catalog
#tsop docker 容器
docker stop [id]
#移除应用容器
docker rm [id]