Docker如何将本地镜像推送到私有库
作者:我不是少爷.
1.下载镜像支持
Docker Registry镜像是使用官方镜像来启动私有仓库
docker pull registry#拉取镜像 docker images#查看镜像
使用如上命令来拉取镜像
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是容器内的目录。
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命令的环境
我们还可以先验证一下我们私有仓库中是否有镜像。
curl -XGET http://192.168.244.188:5000/v2/_catalog
(3)打包-上传-查看-拉取
每个镜像都不一样,所以仓库一般会设置统一的规范,在上传镜像前,我们需要对镜像进行打包。
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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。