Docker之将本地镜像推送到私有库

1.下载镜像支持

Docker Registry镜像是使用官方镜像来启动私有仓库

docker pull registry#拉取镜像
docker images#查看镜像

使用如上命令来拉取镜像
Docker之将本地镜像推送到私有库_第1张图片

2.运行镜像

运行私有库Registry,相当于你在本地创建了一个私有库,即Docker hub。默认情况,仓库被创建在容器的/var/lib/registry目录下。我建议自行使用容器卷映射,可以有利于宿主机的协调管理。

docker run -d -p 5000:5000 -v /wang/myregistry/:/tmp/registry --privileged=true registry

/wang/myregistry是宿主机的目录,也许这个目录你并没有一开始就创建,无需担心,在执行这个命令后,会自动将这个目录创建好。/tmp/registry是容器内的目录。
1.png

3.案例

案例将以ubuntu为模板,演示如何将镜像推送至私有库与获取。

(1)从仓库获取ubuntu镜像到本地并运行。
docker pull ubuntu

如果没有特殊版本要求,那直接运行pull命令拉取镜像会直接从仓库获取最新版的镜像到本地。

(2)运行镜像

我们先将镜像运行,然后进入容器。原始的ubuntu是不支持ifconfig的命令,所以我们可以以这个来分辨镜像的区别。

docker images#查看是否成功拉取ubuntu
docker run -it ubuntu /bin/bash#运行ubuntu镜像成为一个容器并进入
apt-get update
apt-get install net-tools#这两行命令是让这个容器拥有支持ifconfig命令的环境

Docker之将本地镜像推送到私有库_第2张图片Docker之将本地镜像推送到私有库_第3张图片
我们还可以先验证一下我们私有仓库中是否有镜像。

curl -XGET http://192.168.244.188:5000/v2/_catalog

1.png

(3)打包-上传-查看-拉取

每个镜像都不一样,所以仓库一般会设置统一的规范,在上传镜像前,我们需要对镜像进行打包。

docker tag ubuntu 192.168.244.188:5000/myubuntu:1.1#打包
docker images#查看是否打包成功

公式是:docker tag (镜像名):Tag Host:port/Repository:Tag
温馨提示:每个人的host主机ip地址都不一样,所以请不要照着复制。
Docker之将本地镜像推送到私有库_第4张图片
我们需要修改主机的配置文件以让其支持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

Docker之将本地镜像推送到私有库_第5张图片
验证看看我们是否上传成功。

curl -XGET http://192.168.244.188:5000/v2/_catalog

1.png
到了检验成果的时候了,首先我们移除本身的ubutun镜像,然后再去拉取我们上传的镜像,如果我们的实验成功,那么我们拉取的ubuntu镜像是可以直接进行ifconfig命令的。

docker pull 192.168.244.188/myubuntu:1.1#拉取镜像
docker run -it <容器id> /bin/bash

Docker之将本地镜像推送到私有库_第6张图片Docker之将本地镜像推送到私有库_第7张图片
Docker之将本地镜像推送到私有库_第8张图片Docker之将本地镜像推送到私有库_第9张图片

你可能感兴趣的:(Docker,docker,容器,运维)