构建一个docker仓库服务
- 1.概要
- 2.搭建docker
- 3.搭建docker-compose
- step 1:下载相关文件
- step 2:目录授权
- step 3:验证结果
- 4.搭建Harbor
- 4.1 配置文件 harbor.cfg
- 4.2 配置文件 docker-compose.yml
- 4.2.1 修改挂载卷地址
- 4.2.2 修改访问端口
- 4.3 启动项目
- 5.客户端改造并推送镜像到私服
- 5.1服务端创建用户和项目
- 5.1修改客户端文件
- 5.2 推送镜像到私服仓库
- 5.3 私服仓库验证推送结果
- 小结
1.概要
通过上一章节的讲解,我们基本了解了docker的操作命令,在文章的最后我们成功的推送一个镜像到DockerHub的镜像仓库。从流程上说,操作过程可以说很完美,但是整个推送过程消耗的时间太长,我们消耗了大量时间在访问境外的镜像网站上,这无法满足我们实际应用中快速推送、快速部署的要求,我们今天就自己在内网搭建一个docker仓库(以下简称为私服),减少外网交互。
搭建私服需要安装三个组件:Docker、Docker-Compose、Harbor,其中Docker负责基础操作,Docker-Compose负责线程编排、Harbor提供可视化的界面。
2.搭建docker
我怎么可能会再写一次,请参见《持续化部署教程(三)初识docker 拥有docker》。(☺☺☺☺)
3.搭建docker-compose
step 1:下载相关文件
整个下载时间比较长,大家可以去看个美剧,再回来看结果。
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
下载过程如图:
step 2:目录授权
sudo chmod +x /usr/local/bin/docker-compose
step 3:验证结果
docker-compose --version
4.搭建Harbor
将Harbor的安装包解压缩到目标机器,然后调整配置文件。
4.1 配置文件 harbor.cfg
hostname = [“访问IP”]
harbor_admin_password = [“登录用户密码”]
ui_url_protocol = http #注意不是https
4.2 配置文件 docker-compose.yml
Harbor的运行模式就是采用容器发布的模式,所以我们修改他的编排文件,将挂载卷地址、项目访问端口改为我们指定的端口。
4.2.1 修改挂载卷地址
volumes下的默认地址基本上都是系统盘,现在将它改为你认为合适的磁盘,如果认为默认地址不影响使用,则可以跳过此步。
4.2.2 修改访问端口
实际的组网条件下,80端口是很珍贵的,所以我们要将默认的80端口改为我们指定的端口,我这里改为9001(需要修改两个文件docker-compose.yml和common/templates/registry/config.yml),如果认为默认端口不影响则可以跳过此步。
- 修改docker-compose.yml文件
- 修改config.yml文件
进入目录common/templates/registry/config.yml,修改相应节点。
4.3 启动项目
在harbor根目录下执行 ./prepare 更新配置文件中的引用文件,如果没有错误提示,则证明执行成功。
启动harbor项目。
在harbor根目录下执行 ./install.sh,如下图证明启动成功。
执行命令查看docker容器情况。
docker ps -a
发现我们的docker容器增加了很多,这些都是harbor自动下载,并运行的容器。
输入地址 http://127.0.0.1:9001 就可以访问harbor的web项目了。帐号默认为admin,密码是我们上面章节介绍修改配置文件的 harbor_admin_password = [“登录用户密码”]。
登录成功,获得如下界面,证明搭建成功了。
5.客户端改造并推送镜像到私服
5.1服务端创建用户和项目
harbor->[系统管理]->[用户管理],创建一个新用户。
harbor->[项目]->[新建项目]->[自定项目](我们这里的项目名称叫 mdjzbsq)。
harbor->[项目]->[mdjzbsq]->[成员](添加相应成员,我们这里的成员是 test)。
5.1修改客户端文件
我们打开 daemon.json文件,增加insecure-registries,重启dokcer服务,使配置文件生效。
vi /etc/docker/daemon.json
“insecure-registries”: [“127.0.0.1:9001”]
如图,如果存在多个访问节点,请使用逗号间隔。
5.2 推送镜像到私服仓库
我部署仓库的IP是192.168.1.100,所以我们指定登录命令,登录指定的仓库,如果不填写,则登录的是DockerHub的仓库。
docker login 192.168.1.100:9001
因为我们要演示的是推送过程,所以我们认为本地存在一个容器叫做[ubuntu18_base]。
执行如下命令,完成推送。
从命令中可以看到,我们生成的镜像名称是有规律的。
192.168.1.100:9001/mdjzbsq/docker_ubuntu_base:1.0
[私服地址]/[私服项目地址]/[镜像名称]:[版本号]
docker commit -a 'zhangbo' -m 'add jdk 1.8 add vim add nginx' ubuntu18_base 192.168.1.100:9001/mdjzbsq/docker_ubuntu_base:1.0
docker push 192.168.1.100:9001/mdjzbsq/docker_ubuntu_base:1.0
5.3 私服仓库验证推送结果
访问私服web项目,点击项目获得镜像列表。
点击镜像详情,可以查看到相关镜像信息。
小结
本章节介绍的是如何搭建私服并推送镜像的过程,访问私服可以大大提高我们对项目的访问速度,提升工作效率。勤做笔记,及时总结,祝大家学习愉快。
相关资料下载,我放到了百度云盘中,大家可以自行下载。
链接:https://pan.baidu.com/s/1-Jni8f4poNobf1La1kwqGQ
提取码:zrt9