CrazyAirhead

疯狂的傻瓜,傻瓜也疯狂——傻方能执著,疯狂才专注!

0%

如何基于Docker快速实现持续交付系统-环境搭建

目的

这篇介绍基于Docker快速实现持续交付系统。持续交付主要涉及代码管理,集成打包与自动部署几个环节。我们使用GitLab CE解决代码管理,使用Jenkins解决集成打包,使用Ansible解决自动部署,同时使用Portainer来管理Docker。这次先把需要的环境搭建起来,后续还会继续写一篇关于验证和调整的部分。

本文使用CentOS 7.8。

软件简单介绍

Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,比虚拟机更加强大,体积小,运行速度快,Docker 容器可以打包为镜像文件(类似VM虚拟机的那些快照文件),迁移的时候我们只需要在新服务器上安装Docker,就能把之前打包好的镜像文件导入到 Docker 里面,运行容器,就能实现访问,不需要重新配置环境。

Portainer

PortainerDocker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。

Gitlab

GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的web服务。GitLab是由 GitLabInc. 开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有 wiki 和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。

Jenkins

Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Ansible

ansible 是新出现的自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible 是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible 所运行的模块,ansible 只是提供一种框架。

安装Docker

  • 设置仓库
1
2
3
4
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
  • 安装Docker Engine
1
sudo yum install docker-ce docker-ce-cli containerd.io
  • 启动Docker
1
sudo systemctl start docker
  • 开机启动
1
sudo systemctl enable docker
  • 下载Docker Compose
1
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 设置权限
1
sudo chmod +x /usr/local/bin/docker-compose

安装Portainer

  • 单机版运行
1
2
3
4
5
docker run -d -p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--name prtainer \
portainer/portainer

安装Gitlab CE

安装Jenkins

  • 通过Portainer的GitlabCE的模板创建容器,设置容器名,及高级选项,注意为端口和卷的映射,这里
  • 连接到容器里,/var/jenkins_home/secrets/initialAdminPassword,取出初始密码。
  • 安装推荐插件
  • 创建管理员用户(root/jenkins)

安装Ansible

  • 更新源
1
sudo yum install -y epel-release
  • 安装
1
sudo yum install -y ansible

这里暂时没有使用Docker来安装,而是直接安装在宿主机上。这样可以通过Jenkins启动宿主机脚本,从而执行Ansible脚本,创建容器。

还有一个思路是在Jenkins的Docker中同时安装Ansible,这样Jenkins编写部署脚本会更容易些。后面把流程跑通后进一步尝试。

未完待续

下一篇会继续介绍,整体持续交付系统的验证过程。

参考链接

这次其实网上查看了不少文档,但自己时间拖得比较长,不少文章链接可能没记上。

Install Docker Engine on CentOS

https://blog.csdn.net/hanzheng260561728/article/details/105138225

https://blog.csdn.net/A632189007/article/details/78779920

https://www.cnblogs.com/leozhanggg/p/12040338.html

https://www.jianshu.com/p/14e356cf8bb4

https://cloud.tencent.com/developer/news/370703

https://www.jianshu.com/p/4923348ef3da

https://www.cnblogs.com/bigben0123/p/7886092.html

https://www.jianshu.com/p/eb3cbb34be97

https://www.jianshu.com/p/080a962c35b6

https://blog.csdn.net/anqixiang/article/details/104968469

https://www.jianshu.com/p/eeb15a408d88

https://www.w3cschool.cn/automate_with_ansible/automate_with_ansible-1khc27p1.html

欢迎关注我的其它发布渠道