docker学习(四)--仓库

一、第三方仓库

 

二、私有仓库搭建使用

2.1私有仓库搭建

docker私有仓库搭建很简单,一条命令即可.

docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry:2

-p 5000:5000 表示将linux的5000映射到docke容器的5000端口。你可以理解为监听linux的5000端口

-v /opt/data/registry:/var/lib/registry 表示将镜像存放到linux宿主机的/opt/data/registry目录,默认镜像存放在容器的/var/lib/registry目录。

registry:2 表示从远程仓库下载的镜像

还可加上

--restart=always  : 自动重启

--name registry    :仓库名称

docker学习(四)--仓库

可以看到私有仓库已经搭建成功,并创建了一个4be7da92的容器。

执行curl -X GET http://127.0.0.1:5000/v2/_catalog收到的响应如下,是个json对象,其中repositories对应的值是空的json数组,表示目前仓库里还没有镜像:

[root@adsl-172-10-101-250 /]# curl -X GET http://127.0.0.1:5000/v2/_catalog

{"repositories":[]}

2.2支持http协议推送

docker默认使用https协议实现镜像的推送,如果你直接使用docker push命令会报错。这里我们改为让他支持http协议。

参看网上教程第一步修/etc/default/docker文件,在该文件中增加DOCKER_OPTS="--insecure-registries ip:port"

docker学习(四)--仓库

有的同学可能并没有该文件,这是docker版本的原因,高版本的docker在/etc/docker/daemon.json文件中加入。"insecure-registries":["ip:port"]即可。具体如下,如果配置了镜像仓库代理,那么两者需要,隔开。其中ip为你linux的ip,port为刚才我们监听的端口号。

docker学习(四)--仓库

再修改 /lib/systemd/system/docker.service。增加EnvironmentFile=-/etc/docker/daemon.json

此句表示使用daemon.json做为环境配置.

docker学习(四)--仓库

执行以下命令,重新加载配置信息再重启docker服务:

 systemctl daemon-reload;service docker restart

2.3镜像上传到私有仓库

1.为要推送到私有仓库的镜像打标签,注意标签的格式为ip:port/imageName。注意一定要这种格式。至于为什么,还有待考察。

2.使用push推动到私有仓库

docker学习(四)--仓库     3.查看私有仓库

使用curl -X GET http://127.0.0.1:5000/v2/_catalog,可以看到myhello镜像。注意因为我们在本机操作所以使用127.0.0.1可以看到输出,最好还是使用本机ip地址。

docker学习(四)--仓库

2.3从私有仓库下载镜像

  为了演示效果,先删除已有172.10.101.250:5000/myhello镜像。

docker rmi 172.10.101.250:5000/myhello

然后从私有仓库获取镜像

docker pull 172.10.101.250:5000/myhello

docker学习(四)--仓库

2.4运行私有仓库下载的镜像

docker run -it 172.10.101.250:5000/myhello

docker学习(四)--仓库

三、杂项

3.1如何进入仓库容器?

我们一般使用exec进入到容器的bash,命令为 docker exec -it 4be7da92d986 /bin/bash,可是报错了。因为仓库镜像的基础镜像是alpine,他没有bash,但是他有sh,所以应该为docker exec -it 4be7da92d986 sh

docker学习(四)--仓库

参考

1.详解docker私有仓库搭建与使用实战

2.alpine docker exec: "/bin/bash": stat /bin/bash: no such file or directory 解决方案

3.registry的Dockerfile

上一篇:基因检测真正的壁垒:大数据和高端人才


下一篇:docker学习(二)--镜像