Centos7 安装docker



$ sudo yum update$ sudo yum install -y yum-utils 
  device-mapper-persistent-data 
  lvm2
$ sudo yum-config-manager 
 --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum update
$ sudo yum install docker-ce



如出现错误提示:



Problem: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
  - package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.el7.x86_64 is excluded
  - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded



根据提示得知需要http://containerd.io >= 1.2.2-3,那我们就安装http://containerd.io。



$ yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm



然后继续安装docker即可。



$ yum install -y docker-ce



安装完成docker后,接下来拉取docker 的jenkins镜像



$ docker pull jenkins
$ docker run -d -p 9001:8080 --name jenkins jenkins



9001可以换成一个没有被用过的端口号,阿里云服务器的话,还需要去到安全组开放下端口号。

之后访问 http://ip:端口号 ,(例如192.190.1.3:9001)会出现如下图的页面




nginx 代理docker registry配置_docker


因我docker run时没有挂载本地文件夹,所有需进容器看密码


nginx 代理docker registry配置_centos7安装gitlab_02


$ sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword


选择第一个进行安装,并新建一个账号


nginx 代理docker registry配置_centos7安装gitlab_03


等待插件安装完成,有部分没安装成功也没关系,可以进入后再继续安装。


nginx 代理docker registry配置_git_04


准备工作做完后,开始正题:

接下来是参考下面文章一步步搭建起来的:

鑫鑫鑫鑫:采用docker+jenkins+nginx_proxy部署多项目环境zhuanlan.zhihu.com

nginx 代理docker registry配置_git_05


nginx 代理docker registry配置_docker_06

图片来源:https://www.jianshu.com/p/358bfb64e3a6

1、开发人员提交代码到gitlab。

2、gitlab将代码变动提交到jenkins上(这一步可后续补上)。

3、jenkins进行Dockerfile自动化构建项目。

4、push项目镜像到阿里云镜像仓库。

5、命令远程服务端执行shell脚本,拉取前一步构建好的阿里云镜像,在本地启动并允许项目容器。

6、将构建结果通知到相关测试人员。

一、准备工作

  • 基本了解docker容器命令及用法(Dockerfile、docker-compose)。
  • 一台安装好docker、docker-composer环境的服务器。
  • 一个gitlab账号,也可以是码云、github
  • 项目文件
  • 部署所需镜像 (后面会提供)
  • nginx_proxy镜像:起到反向代理、负债均衡等等作用。
  • jenkins镜像:起到自动化部署作用。
  • nginx+php(项目镜像,也可以是java、web,根据需要而定)
  • 其他非必须扩展镜像(mysql、redis、mongo等等)。

二、Docker Compose 文件配置

Compose 是用于定义和运行多容器Docker应用程序的工具,通过Compse,你可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有容器。

Compose 使用的三个步骤:

  • 使用Dockerfile定义应用程序的环境
  • 使用docker-compose.yml,定义构成应用程序的服务,这样它们可以在隔离环境一起进行。
  • 执行docker-compose up命令来启动并运行整个程序。

以下是一个完整的docker-compose.yml文件


version


在yml中,简单的配置了一个nginx_proxy容器、项目容器、redis容器、mysql容器。

参数说明:

  • image:拉取所需镜像
  • container_name:容器名称
  • restart:always重启时默认启动
  • environment:环境变量
  • VIRTUAL_HOST:域名,不同项目配置不同域名
  • MYSQL_ROOT_PASSWORD:数据库密码
  • ports:映射端口
  • links:关联网络

配置说明:

nginx_proxy容器:当docker容器发送变化后,会生成 nginx 反向代理配置并且重新加载 nginx,将VIRTUAL_HOST域名信息代理到对应项目容器。

项目容器:集成了php+nginx的项目镜像,nginx_proxy代理到项目容器后,由项目容器里的nginx去调用php文件。

redis容器、mysql容器:作为项目文件需要的扩展镜像。

执行下命令并访问

http://phpinfo.kylel.club/phpinfo.kylel.club


docker-compose up 
docker ps


当终端正常显示docker进程,页面正常显示,那么手动构建流程顺利完成。


nginx 代理docker registry配置_docker_07

这里mongo连接失败不影响

接下来我们进行jenkins 自动化构建步骤:(如没有以下配置的地方,请先去安装对应插件)

需要对Jenkins进行一些配置,进入系统管理->系统配置,找到SSH remote hosts、Gitlab,添加服务器进行配置和gitlab账号,并connection成功,如下图。


nginx 代理docker registry配置_docker_08

Credentials 添加 账号密码类型, 输入你的服务器账号密码即可。

nginx 代理docker registry配置_centos7安装gitlab_09

gitlab api token 在gitlab 设置里面添加

最后拉到最后,配置cloud configuration信息,将自己服务器的docker服务端口2376开放出来(阿里云服务器记得去安全组打开),并connection成功,如图所示。


nginx 代理docker registry配置_centos7安装gitlab_10

可以开通其他端口,我刚开始开通的是2375,然后给别人植入挖矿程序了,o(╥﹏╥)o我就关了2375端口,用了2376

四、自动化构建配置

这是一个简单的项目部署文件,可以配置在自己的gitlab或者码云上。

https://gitlab.com/Jkaiy/phpinfogitlab.com


1、选择第一个进行配置构建项目


nginx 代理docker registry配置_git_11


2、按下图信息进行配置。


nginx 代理docker registry配置_docker_12


配置gitlab凭证,并连接成功。


nginx 代理docker registry配置_centos7安装gitlab_13


nginx 代理docker registry配置_docker_14


配置阿里云项目镜像


nginx 代理docker registry配置_docker_15


配置shell脚本命令,根据自己服务器目录进行对应修改。


nginx 代理docker registry配置_git_16


点击应用保存。

3.项目构建


nginx 代理docker registry配置_centos7安装gitlab_17

出现蓝色即代表构建成功,

如果构建失败,会报红色,可以点击进入查看报错原因。


nginx 代理docker registry配置_docker_18


至此,jenkins自动化部署 流程已大致完成,git 推代码到gitlab上,然后在jenkins上点击 立即构建 即可。

如觉得在jenkins 上点击 立即构建相对繁琐,可以在gitlab上加钩子,即可实现git push 推代码同时 jenkins 自动构建。

以下是附加内容

sudo docker-compose: 找不到命令

解决办法:


$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose