docker私有仓库搭建与使用实战

hub.docker.com上可以保存镜像,但是网速相对较慢,在内部环境中搭建一个私有的公共仓库是个更好的方案,今天我们就来实战搭建私有docker仓库吧;

环境规划

需要两台机器:docker私服仓库的server和使用docker的普通机器,这两个机器都是ubuntu16版本的server,ip信息如下:

机器名

ip

功能

docker-registry

192.168.119.148

docker私有仓库服务器

docker-app

192.168.119.155

运行docker服务的普通服务器

准备机器

本次实战中,上述两台机器是vmware上创建的两个虚拟机,都安装了docker服务,详细的创建和安装过程,请参照《rancher下的kubernetes之一:构建标准化vmware镜像》,记得在vmware中给两个镜像把名字分别改成“docker-registry”和“docker-app”,以免后面搞错了;

虚拟机启动后,请先修改/etc/hostname文件,将两个机器的hostname分别修改成“docker-registry”和“docker-app”,然后用reboot命令重启;

安装私有仓库

  • 登录docker-registry机器(推荐使用SecureCRT);
  • 执行以下命令,会启动一个registry容器,该容器用于提供私有仓库的服务:
docker run --name docker-registry -d -p 5000:5000 registry
  • 执行docker ps命令看一下容器情况,如下图:

容器正常启动,对外提供服务通过5000端口映射到docker-registry的5000端口;

  • 执行命令curl -X GET http://127.0.0.1:5000/v2/_catalog,收到的响应如下,是个json对象,其中repositories对应的值是空的json数组,表示目前仓库里还没有镜像:
{"repositories":[]}

OK,私有仓库已经创建和启动完毕了,接下来试试如何使用吧;

支持http协议推送

正常情况下,应用服务器推送镜像到仓库用的是https,此处我们通过命令行来测试推送用的是普通的http,所以需要修改docker的启动参数,使之允许以http协议工作;

  • 执行推送镜像的机器是docker-app,所以登录到此机器(推荐使用SecureCRT);
  • 修改/etc/default/docker文件,加入以下红框内容:
  • 再修改 /lib/systemd/system/docker.service,以下红框中的内容,第一行为新增,第二行为修改:
  • 执行以下命令,重新加载配置信息再重启docker服务:
systemctl daemon-reload;service docker restart

推送镜像到私有仓库

  • 接下来我们在docker-app先下载一个镜像,再将这个镜像推送到私有仓库中去;
  • 登录docker-app机器(推荐使用SecureCRT);
  • 执行命令docker pull tomcat,从hub.docker.com下载最新版本的tomcat镜像,如下图:
  • 下载完毕后,执行docker images查看镜像的信息,如下图:
  • 如上图红框所示,这个镜像的ID是3dcfe809147d,所以我们执行以下命令,给这个镜像添加一个带有私有仓库IP的TAG,这样后面才能成功推送到私有仓库:
docker tag 3dcfe809147d 192.168.119.148:5000/tomcat
  • 再执行docker images查看镜像的信息,如下图,出现了一个新的镜像,REPOSITORY是192.168.119.148:5000/tomcat:
  • 执行以下命令进行推送:
docker push 192.168.119.148:5000/tomcat

可以看到顺利进行中,如下图:

使用私有仓库的镜像

  • 在docker-app机器上,先执行以下命令将本地镜像删掉:
docker rmi 192.168.119.148:5000/tomcat tomcat
  • 再执行以下命令,用私服上的镜像来创建一个容器,映射8080端口:
docker run --name tomcat001 -p 8080:8080 -idt 192.168.119.148:5000/tomcat
  • 本地没有镜像就去私服下载,如下图:
  • docker-app的IP是192.168.119.155,所以在当前电脑上打开浏览器,输入:192.168.119.155:8080,可以看到下图熟悉的tomcat欢迎页:

至此本次实战就结束了,希望能对您的私有仓库搭建有所帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

『高级篇』docker之gitlab和jenkins安装(42)

PS:可能有的插件安装不了,不要慌老铁,进入到jenkins的管理页面会提示你更新jenkins更新下,然后插件又可以自动下载安装完毕了。

1531
来自专栏实战docker

Docker搭建disconf环境,三部曲之二:本地快速构建disconf镜像

在上一篇文章《Docker搭建disconf环境,三部曲之一:极速搭建disconf》中,我们用最快的速度在本地运行了disconf环境,对disconf有了初...

2115
来自专栏Java开发者杂谈

Redis(1):入门

在Linux下安装redis: wget http://download.redis.io/redis-stable.tar.gz tax xzf redi...

3268
来自专栏静下来

腾讯云Linux系统盘网站数据更换至数据盘

主要看你原网站的目录叫什么名称,如果原网站目录文件夹是用的一键安装包,也就是叫:alidata 那就不能按照第四步来了,这样可能会出错的。 今天来把腾讯云的也挂...

6036
来自专栏A周立SpringCloud

手动安装Docker 17.06

以前我们已经讨论过如何使用 yum 之类的包管理工具安装Docker(可在本博客搜索)。 然而有时,我们的机器无法联网,此时就需离线安装了。 本文详细探讨如何...

3827
来自专栏Java架构

大神教你轻松玩转Docker和Kubernetes中如何运行MongoDB微服务介绍对于MongoDB的思考利用Docker和Kubernetes实现MongoDB冗余备份冗余控制命名为mongo-r

2787
来自专栏nice_每一天

docker学习笔记(一)—— ubuntu16.04下安装docker

本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即...

1023
来自专栏dalaoyang

linux6.8安装docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容...

4178
来自专栏人工智能LeadAI

Anaconda使用总结

序 Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候。为了解决这些问题,有不少发行版的P...

6336
来自专栏美丽应用

备选方案:在Linux Deploy上使用镜像部署Linux系统

4285

扫码关注云+社区

领取腾讯云代金券