Docker Registry镜像是使用官方镜像来启动私有仓库
docker pull registry#拉取镜像
docker images#查看镜像
运行私有库Registry,相当于你在本地创建了一个私有库,即Docker hub。默认情况,仓库被创建在容器的/var/lib/registry目录下。我建议自行使用容器卷映射,可以有利于宿主机的协调管理。
docker run -d -p 5000:5000 -v /wang/myregistry/:/tmp/registry --privileged=true registry
/wang/myregistry是宿主机的目录,也许这个目录你并没有一开始就创建,无需担心,在执行这个命令后,会自动将这个目录创建好。/tmp/registry是容器内的目录。
案例将以ubuntu为模板,演示如何将镜像推送至私有库与获取。
docker pull ubuntu
如果没有特殊版本要求,那直接运行pull命令拉取镜像会直接从仓库获取最新版的镜像到本地。
我们先将镜像运行,然后进入容器。原始的ubuntu是不支持ifconfig的命令,所以我们可以以这个来分辨镜像的区别。
docker images#查看是否成功拉取ubuntu
docker run -it ubuntu /bin/bash#运行ubuntu镜像成为一个容器并进入
apt-get update
apt-get install net-tools#这两行命令是让这个容器拥有支持ifconfig命令的环境
curl -XGET http://192.168.244.188:5000/v2/_catalog
每个镜像都不一样,所以仓库一般会设置统一的规范,在上传镜像前,我们需要对镜像进行打包。
docker tag ubuntu 192.168.244.188:5000/myubuntu:1.1#打包
docker images#查看是否打包成功
公式是:docker tag (镜像名):Tag Host:port/Repository:Tag
温馨提示:每个人的host主机ip地址都不一样,所以请不要照着复制。
我们需要修改主机的配置文件以让其支持http。
vi /etc/docker/daemon.json#修改配置文件
{
"registry-mirrors":["https://aa25jngu.mirror.aliyuncs.com"],
"insecure-registries":["192.168.244.188:5000"]
} #增添内容
在修改完配置文件后,重启docker服务,启动registry服务。因为docker服务重启,所以默认registry服务会停止。
systemctl restart docker.service#重启服务
docker start (registry进程ID)#启动registry服务
现在,我们可以开始推送镜像到我们的私有库中了。
docker push 192.168.244.188:5000/myubuntu:1.1
curl -XGET http://192.168.244.188:5000/v2/_catalog
到了检验成果的时候了,首先我们移除本身的ubutun镜像,然后再去拉取我们上传的镜像,如果我们的实验成功,那么我们拉取的ubuntu镜像是可以直接进行ifconfig命令的。
docker pull 192.168.244.188/myubuntu:1.1#拉取镜像
docker run -it <容器id> /bin/bash