Linux环境中搭建Docker私有镜像仓库
简介:本文将对镜像、仓库、容器的概念与三者之间的联系进行详细介绍,重点介绍Docker私有仓库的搭建与管理操作。
1、Docker镜像是一个只读的模板,含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。比如,一个镜像可以包含一个运行在Apache上的Web应用和其使用的CentOS操作系统。镜像是用来创建容器的。Docker提供了简单的方法来建立新的镜像或者升级现有的镜像,也可以下载别人已经创建好的镜像。Docker镜像是Docker的构造部分。
2、Docker容器是容器镜像的运行实例。容器镜像是一个不可变的只读文件,其中包含有关创建Docker容器的说明。每次基于容器镜像文件启动容器时,无论在何处部署容器镜像文件,都将获得完全相同的Docker容器。
3、Docker仓库,Registry可以理解为仓库,是用来保存所有创建好的镜像统一存储的位置。分为私有仓库(Private Registry)和公有仓库(Public Registry)。公有的Docker仓库名字是Docker Hub。Docker Hub提供了庞大的镜像集合供使用。这些镜像可以是自己创建的,或者也可以在别人的镜像基础上创建。Docker仓库是Docker的分发部分。
Dockers不仅提供了一个公有仓库,同时也允许使用registry搭建本地私有仓库。使用私有仓库有许多优点:节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可。同时方便管理,使用高效。
详细情况请参考下文。
一、安装Docker容器
1、登陆Linux系统
2、更新yum包
执行指令# yum update更新yum包
3、安装依赖包
执行指令# yum install -y yum-utils device-mapper-persistent-data lvm2安装需要的软件包
4、设置yum源
执行指令# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo设置仓库
5、查看Docker仓库
执行指令# yum list docker-ce --showduplicates | sort -r
6、安装Docker
执行指令# yum install docker-ce-18.03.1.ce安装docker
7、启动Docker
执行指令# systemctl start docker 启动docker
执行指令# systemctl enable docker 设置开机启动
8、查看Docker运行情况
执行指令# systemctl status docker
执行指令# docker version查看docker版本信息
二、Docker搭建私有仓库
1、运行并创建私有仓库
创建私有库的执行指令如下:
docker run -d \
-v /opt/registry:/var/lib/registry \
-p 5000:5000 \
--restart=always \
--name registry \
registry
上述指令的参数说明如下:
-d 后台运行容器
-v 本地目录:容器目录,挂载主机的本地目录/opt/registry目录到容器的/var/lib/registry目录,本地目录的路径必须是绝对路径
-p 5000:5000指定主机的5000端口映射到容器的5000端口
执行指令# docker ps -a查看运行的容器
2、配置Docker可信任私有库
执行指令# vim /etc/docker/daemon.json
3、私有仓库查询操作
执行指令# curl http://172.16.26.91:5000/v2/_catalog
4、验证私有库
说明:Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。
浏览器访问http://172.16.26.91:5000/v2,出现下面情况说明registry运行正常。
5、从公有库下载镜像
先执行指令# docker search nginx查看
然后执行指令# docker pull niginx下载
再执行指令# docker run -d --name nginx01 -p 1111:80 nginx运行镜像
访问测试
6、私有库上传下载测试
(1)、执行指令# docker images查看本地镜像
(2)、通过docker tag将该镜像标志为要推送到私有仓库
执行指令# docker tag nginx:latest localhost:5000/nginx:latest
(3)、通过 docker push 命令将 nginx 镜像 push到私有仓库中
执行指令# docker push localhost:5000/nginx:latest
(4)、访问 http://172.16.26.91:5000/v2/_catalog 查看私有仓库目录,可以看到刚上传的nginx镜像
(5)、下载私有仓库的镜像
执行指令# docker pull localhost:5000/镜像名:版本号
比如执行指令# docker pull localhost:5000/nginx:latest下载私有库的nginx镜像