docker镜像私有化仓库
私有仓库介绍
有时候使用Docker Hub这样的公共仓库可能不方便(有时候无法访问),用户可以创建一个本地仓库供私人使用,这里使用官方提供的工具docker-registry来配置私有库
使用官方提供的工具来配置
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
docker私有仓库地址:192.168.1.200
docker服务器地址 : 192.168.1.120
192.168.1.200 使用registry镜像搭建一个私有仓库
docker pull registry #从官网拉取镜像,如果网络不给力,可以用代理,部署方法在docker环境搭建的文章里面
默认情况下,Registry程序的存放镜像信息的目录是/var/lib/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地物理机一个目录如/opt/registry挂载到容器的/var/lib/registry下。使用-v参数,指定本地持久的路径。registry服务监听到端口号,默认是5000
docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry:latest #如果报错,看下防火墙是否关闭
用浏览器http://192.168.1.200:5000/v2/_catalog 验证是否成功启动
192.168.1.120(docker服务器)
安装环境:
1. 在线安装docker
安装docker环境依赖
yum install -y yum-utils device-mapper-persistent-data lvm2#配置国内docker的yum源(阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装yum源
yum install docker-ce docker-ce-cli containerd.io -y #安装docker-ce
systemctl start docker && systemctl enable docker #启动docker
修改docker配置文件,指定docker镜像加速结点为:私有仓库的地址
vim /etc/docker/daemon.json
{
"insecure-registries": [ "192.168.1.200:5000" ]
}
systemctl restart docker #启动docker服务
备注:insecure-registry不安全的注册。这里的不安全指的是走http协议,要想安全传输镜像,需要使用https协议。我们的私有仓库一般是局域中使用,所以直接使用http协议就可以了。
上传本地镜像到私有仓库
- 从Docker HUB 上拉取一个测试镜像,名字: busybox
BusyBox 概述: BusyBox是一个集成了一百多个最常用Linux命令和工具的软件。BusyBox 包含了BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。
docker pull busybox
- 创建镜像链接或为基础镜像打个标签(复制一个镜像并起一个名字)
docker tag busybox:latest 192.168.1.200:5000/busybox_pri:latest #一定要指定端口,不然会报错
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.200:5000/busybox latest ffe9d497c324 32 hours ago 1.24MB
- 将刚新打好标签的192.168.1.63:5000/busybox镜像,push到本地私有仓库中。
docker push 192.168.1.200:5000/busybox
4.登录192.168.1.200上,查看镜像的存储目录和文件
访问http://192.168.1.200:5000/v2/_catalog 可以查看私有仓库中的镜像列表,如下图:
- 使用私有仓库中的镜像创建服务
[root@localhost ~]docker rmi 192.168.1.200:5000/busybox_pri:latest #删除docker服务器原来的镜像
[root@localhost ~]docker pull 192.168.1.200:5000/busybox_pri:latest #从私有仓库拉去镜像
latest: Pulling from busybox_pri
Digest: sha256:50e44504ea4f19f141118a8a8868e6c5bb9856efa33f2183f5ccea7ac62aacc9
Status: Downloaded newer image for 192.168.1.200:5000/busybox_pri:latest
192.168.1.200:5000/busybox_pri:latest