docker+gitlab+gitlab-runner部署详解

环境

服务端:centos7

客户端:window

在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传,打包镜像,发布运行测试

一、centos7上安装docker和docker-compose

安装docker:

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过uname -r命令查看你当前的内核版本

 $ uname -r

2、使用root权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker docker-common docker-selinux docker-engine

4、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r

7、安装docker

$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
如果错误:
问题: 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解决:https://www.cnblogs.com/suanmiaoup/p/12772140.html输入:yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm再输入:yum install docker-ce docker-ce-cli containerd.io

8、启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

$ docker version

10、建议更换docker的镜像源:

1.修改或创建daemon.json文件:vi /etc/docker/daemon.json

将以下配置写入到文件中,保存并退出(不会操作的百度下vi命令吧):

{

  "registry-mirrors": ["http://hub-mirror.c.163.com"]

}

2.重启docker:systemctl restart docker

安装docker-compose:

参考官网:https://docs.docker.com/compose/install/

1、Run this command to download the latest version of Docker Compose:

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

2、Apply executable permissions to the binary:

sudo chmod +x /usr/local/bin/docker-compose

二、拉取gitlab中文版镜像

地址:https://hub.docker.com/r/twang2218/gitlab-ce-zh

1、利用xshell+xftp在centos7中创建存储日志、配置、数据的文件夹

  文件夹结构如下:

gitlab
  -config
  -logs
  -data
docker-compose.yml

2、利用docker-compose.yml启动

version: '3'
services:
  gitlab:
   image: 'twang2218/gitlab-ce-zh:11.1.4'
   restart: unless-stopped
   hostname: 'gitlab.domain.com'
   container_name: gitlab
   environment:
    TZ: 'Asia/Shanghai'
    GITLAB_OMNIBUS_CONFIG: |
     external_url 'http://gitlab.domain.com/'
     registry_external_url 'https://gitlab.domain.com'
     gitlab_rails['gitlab_shell_ssh_port'] = 1022
     gitlab_rails['time_zone'] = 'Asia/Shanghai'
     # gitlab_rails['smtp_enable'] = true
     # gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
     # gitlab_rails['smtp_port'] = 465
     # gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
     # gitlab_rails['smtp_password'] = "password"
     # gitlab_rails['smtp_authentication'] = "login"
     # gitlab_rails['smtp_enable_starttls_auto'] = true
     # gitlab_rails['smtp_tls'] = true
     # gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
   ports:
    - '80:80'
    - '443:443'
    - '1022:22'
   volumes:
    - ./data:/var/opt/gitlab
    - ./config:/etc/gitlab
    - ./logs:/var/log/gitlab

如果你的服务器有域名,将上面的gitlab.domain.com替换为实际域名。

实验时,也可以直接修改/etc/hosts方便测试。比如:127.0.0.1 gitlab.example.com

3、cd到gitlab目录下执行docker-compose up -d启动,稍作等待。。

4、启动完毕后打开浏览器访问gitlab.domain.com

5、SSH 连接GitLab

首先我们需要得到一个SSH Key,输入

cat ~/.ssh/id_rsa.pub

如果出现 ssh-rsa打头的字符,说明本地已经有了SSH Key那我们可以直接拿来用,如果没有则需要我们自己创建一个SSH Key。

6、创建SSH Key

输入以下命令创建一个SSH Key。

ssh-keygen -t rsa -C "your.email@example.com" -b 4096

完成之后可以再输入 上面的cat命令 或者pbcopy直接复制生成的ssh key。

pbcopy < ~/.ssh/id_rsa.pub

在GitLab中账号-》设置中找到 SSH Keys中添加这个Key即可。

7、SSH 连接 1022 端口

正常情况下你已经可以通过git命令来连接我们部署的gitlab,但这里不一样的是我们把容器的 22端口映射到了 host的 1022上,我们需要指定端口来进连接。

ssh -p 1022 git@gitlab.domain.com

同时还需要更改GitLab的配置文件中的 ssh端口(如果上面配置过就不用了),否则GitLab中为我们生成的项目连接地址会连接不上。/gitlab/config/gitlab.rb

gitlab_rails['gitlab_shell_ssh_port'] = 1022

更改完ssh端口之后重启gitlab容器,之后我们的项目 ssh连接址会变为:

ssh://git@gitlab.domain.com:1022/test/projectname.git

到这里我们已经完成了GitLab的部署。

三、拉取gitlab-runner镜像

地址:https://hub.docker.com/r/gitlab/gitlab-runner

1、利用xshell+xftp在centos7中创建存储日志、配置、数据的文件夹

  文件夹结构如下:

gitlab-runner
  -config
docker-compose.yml

2、利用docker-compose.yml启动

version: '3'
services:
  runner:
   image: 'gitlab/gitlab-runner:v11.4.2'
   container_name: gitlab-runner
   restart: always
   networks:
    - gitlab_default
   volumes:
    - ./config:/etc/gitlab-runner
    - /var/run/docker.sock:/var/run/docker.sock
networks:
 gitlab_default:
  external: true

其中gitlab_default为上面gitlab的网络

注意:gitlab-runner的版本要和gitlab尽量对应不然会出现连不上gitlab

3、cd到gitlab目录下执行docker-compose up -d启动

四、配置gitlab-runner连上gitlab

1、注册gitlab-runner

docker exec -it gitlab-runner gitlab-runner register

2. 我们会输入 http://gitlab.domain.com或http://ip:port 也就是我们安装在本地的GitLab

3. Please enter the gitlab-ci token for this runner 要求输入 gitlab-ci token

在项目的 管理区域->runners中可以找到(这里注册的是share类型runner)

4. 输入描述,如:test

5. 输入tag(留空也可以,之后可以进行编辑 )

6. 选择当遇到没有打标签的提交时是否会执行,我们选 true

7. 是否锁定此runner 到当前项目, 我们选 false

8. 选一个执行者 executor

这一步比较重要 (ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell)

我们选docker

9. 选择默认使用的镜像: docker:stable

在注册完之后,我们可以在GitLab获取gitlab-ci token 的页面看到我们刚刚注册的这个 runner

同时可以在gitlab-runner/config下可以看到生成一个config.toml的文件,文件内容如下:

concurrent = 1
check_interval = 0

[[runners]]
 name = "test"
 url = "http://192.168.1.157/"
 token = "69c0ff735a76c0bb3cce977a361661"#这个token是gitlab-runner根据第三步骤的token生成的
 executor = "docker"
 [runners.docker]
  extra_hosts = ["gitlab.domain.com:192.168.1.157"] #如果在执行上面步骤中碰到连接不上gitlab,是因为gitlab-runner在docker内部解析不了gitlab.domain.com,通过添加配置这个可以解决问题
  tls_verify = false
  image = "docker:stable" #这里之所以这样是因为基于这个镜像它包含了docker等工具,可以在gitlab-runner执行的.gitlab-ci.yml中有docker指令时而无需再安装docker 参考地址:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
  privileged = false #使用docker-in-docker时通常为true
  disable_cache = false
  volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
  shm_size = 0
  [runners.cache]

或者直接先配置好,gitlab-runner运行时会自动加载该配置文件

参考地址:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

五、提交项目代码完成CI/CD

1、在项目根目录下添加.gitlab-ci.yml,提交项目代码后会自动运行该文件打包项目

image: docker:stable

image:
 name: docker/compose:1.23.2 # update tag to whatever version you want to use. 这个是因为我下面脚本用到docker-compose
 entrypoint: ["/bin/sh", "-c"]

before_script:
 - docker version
 - docker-compose version

build:
 script: #下面脚本根据自己情况写
  - COMPOSE_HTTP_TIMEOUT=200 docker-compose -f docker-compose-efk.yml up -d  #这是因为我的项目已经用docker-compose编排好了
  - COMPOSE_HTTP_TIMEOUT=200 docker-compose up -d --build --force-recreate

2、在win10上通过git提交代码

cd到项目根目录,如果有安装git的话可以直接在根目录下打开git bash 执行,如果没有安装打开powershell也行

git init #如果还没有初始化
git add . #把项目都添加进去
git commit -m "init" 提交到git
git remote add origin git@gitlab.domain.com:1022/root/test.git #注意端口为1022 这个是上面运行gitlab是指定的,执行一次就行了
git push -u origin master #推送到服务器gitlab上

到此这篇关于docker+gitlab+gitlab-runner部署详解的文章就介绍到这了,更多相关docker gitlab gitlab-runner部署内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Docker快速部署Gitlab的方法

    1. 下载gitlab镜像 docker pull gitlab/gitlab-ce 2. 运行gitlab实例 GITLAB_HOME=`pwd`/data/gitlab docker run -d \ --hostname gitlab \ --publish 8443:443 --publish 80:80 --publish 2222:22 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/git

  • 详解Docker+Jenkins+Gitlab+Django应用部署实践

    一.背景介绍 在互联网应用快速更新迭代的大背景下,传统的人工手动或简单脚本已经不能适应此变化,此时Devops为我们提供了良好的解决方案,应用好CI/CD可以大大的方便我们的日常工作,自动化快速的持续集成/持续交付为我们带来了应用开放的更快速度.更好的稳定性和更强的可靠性. 二.拓扑环境 2.1 架构拓扑 如上图实例,简单花了下流程拓扑: 当研发push本地代码到gitlab-server后,webhook自动触发jenkins构建应用 在docker host上部署应用git clone来自g

  • Centos7使用docker搭建gitlab服务器

    了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux release 7.1.1503 (Core) git版本:/gitlab/gitlab-ce 一.安装和启动docker 安装:yum -y install docker 启动:systemctl start docker 开机启动:systemctl enable docker 二.拉取镜像文件 doc

  • 使用docker搭建gitlab详解

    使用docker搭建gitlab 在服务器上直接安装gitlab,会装入Git,Redis ,postgresql,nginx等.如果主机已有redis.nginx等,配置会比较麻烦.而且以后gitlab的备份和迁移都不方便.附主机安装教程: https://about.gitlab.com/downloads/#centos7 如果将gitlab进行Docker化部署,所有服务如redis,postgresql等放在一个docker容器里,将配置.数据等文件挂载在宿主机上,备份和迁移时候只要复

  • 基于Docker部署GitLab环境搭建的方法步骤

    注意:建议虚拟机内存2G以上,一定要配置阿里云的加速镜像 1.下载镜像文件 docker pull beginor/gitlab-ce:11.0.1-ce.0 2.创建GitLab 的配置 (etc) . 日志 (log) .数据 (data) 放到容器之外, 便于日后升级 mkdir -p /mnt/gitlab/etc mkdir -p /mnt/gitlab/log mkdir -p /mnt/gitlab/data 3.运行GitLab容器 进入/mnt/gitlab/etc目录,运行一

  • Docker-compose部署gitlab的方法步骤

    Docker-compose部署gitlab 1.安装Docker 安装必要工具 复制代码 代码如下: [root@vm_10_14_centos ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 添加Docker-ce镜像源并安装 [root@vm_10_14_centos ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/li

  • Docker-compose一键部署gitlab中文版的方法步骤

    一.gitlab介绍 gitlab官方地址:https://about.gitlab.com/ GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库.团队成员可以利用内置的简单聊天程序(Wall)进行交流.它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需

  • 用Docker安装Gitlab的方法步骤

    Gitlab简介 GitLab是一个Git的代码托管工具,有免费的社区版允许我们在本地搭建代码托管网站,也有付费的企业版网站,能够在线托管代码.传统方式是手动下载Gitlab的软件包,然后搭建相关运行环境.不过这种方式非常麻烦,而且如果要更换机器所有配置工作又得重来一边,如果有同学学过Java的话应该记得初学Java时配置环境变量的恐惧吧?因此更好的办法就是使用现在非常流行的Docker. 那么Docker又是个什么东西呢?这是一个虚拟化的运行工具,主要目的是将软件和整个运行环境打包起来,让我们

  • docker+gitlab+gitlab-runner部署详解

    环境 服务端:centos7 客户端:window 在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传,打包镜像,发布运行测试 一.centos7上安装docker和docker-compose 安装docker: 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过uname -r命令查看你当前的内核

  • docker资源限制和compose部署详解

    目录 一.私有仓库建立 二.Cgroup 资源配置方法 三.CPU使用率控制 使用 stress 工具测试 CPU 和内存 四. CPU 周期限制 五. CPU Core 控制 六. CPU 配额控制参数的混合使用 七. 内存限额 八.Block IO 的限制 九. bps 和 iops 的限制 十. 构建镜像(docker build)时指定资源限制 十一. compose部署 十二. consul部署 总结 一.私有仓库建立 docker pull registry 在docker 引擎终端

  • Linux Docker安装wordpress的方法详解教程

    安装mysql服务 下载mysql镜像: docker pull mysql 创建mysql容器并后台运行,指定数据库密码是123456.-e指定环境变量. docker run --name mysql_db -e MYSQL_ROOT_PASSWORD=123456 -d mysql 使用官方的wordpress wordpress镜像daocloud.io: docker pull daocloud.io/daocloud/dao-wordpress:latest 拉取镜像前请先登录: d

  • Docker的理解和基本命令详解

    如何通俗解释D ocker是什么? Docker思想来自于集装箱,集装箱解决了什么问题呢?比如,在一艘大船上,要把各种各样的货物要整理起来,集装箱(Docker)就可以做到,并且相互间不会影响.就不需要指定运输的船了(这个船运吃的那个船运穿的).只要把货物装在集装箱里封装好,就可以用一艘大船把他们都运走. 1.Docker就是类似的理念.云计算是运输船,Docker就是集装箱. 1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的

  • Docker工作模式及原理详解

    如下图所示: 我们在使用虚拟机和docker的时候,就会出现这样一个疑问:Docker为什么比VM虚拟机快呢? 上面这张图就很客观的说明了这个问题 1.Docker有着比虚拟机更少的抽象层. 2.Docker利用的是宿主机的内核,VM需要的是Guest os. 所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统.虚拟机是加载Guest os(花费时间分钟级别),而docker利用的是宿主机的操作系统,省略了这个复杂的过程(花费时间秒级别). 搞清楚这些,我们再来看看对

  • Docker(黑马spring cloud笔记)详解

    目录 介绍和安装 安装 启动 镜像加速 Docker基本操作 镜像操作 容器操作 数据卷操作 Dockerfile 镜像结构 Dockerfile Docker-Compose 安装 基本命令 Docker 私 服搭建 练习 练习1:save和load 练习2:docker部署nginx 练习3:部署MySQL 练习4:基于Ubuntu构建一个新镜像,运行一个java项目 练习5:部署微服务集群 问题:微服务注册失败 介绍和安装 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从

  • Docker 打包python的命令详解

    最近用Python写了一段爬虫程序,为了隔离其运行环境,易于分发,把项目打包成Docker镜像 Dockerfile FROM python:2.7.12-alpine ADD ./src /job CMD ["python", "/job/main.py"] 构建命令 $ docker build -t job . 运行 $ docker run -d --name job job 比较简单 以上所述是小编给大家介绍的Docker 打包python的命令详解,希望

  • docker cgroup 资源监控的详解

    docker cgroup 资源监控的详解 1.cgroup术语解析: blkio: 这个subsystem可以为块设备设定输入/输出限制,比如物理驱动设备(包括磁盘.固态硬盘.USB等). cpu: 这个subsystem使用调度程序控制task对CPU的使用. cpuacct: 这个subsystem自动生成cgroup中task对CPU资源使用情况的报告. cpuset: 这个subsystem可以为cgroup中的task分配独立的CPU(此处针对多处理器系统)和内存. devices

  • CentOS 7上安装Docker 1.8 的步骤详解

    Docker支持运行在以下CentOS版本: •CentOS 7.X 安装在二进制兼容的EL7版本如 Scientific Linux也是可能成功的,但是Docker 没有测试过并且不官方支持. 此文带你通过使用Docker管理的发行包和安装机制来安装.使用这些报能确保你使用最新的Docker版本. 如果你希望使用CentOS管理的包,请阅读你的CentOS文档. 要求 不过你的系统版本是多少,Docker都要求64位.并且当CentOS7时你的内核必须不小于3.10. 检查当前内核版本: #

  • 树莓派3B+安装64位ubuntu系统和docker工具的操作步骤详解

    想在树莓派3B上安装一些64位应用(例如64位JDK),因此首先要安装64位的操作系统,今天咱们就一起来实战: 原文地址:https://blog.csdn.net/boling_cavalry/article/details/80716098 环境要求一台树莓派3B设备:网络环境是内网,需要有线网络和网线一根:当树莓派通过网线连接到内网后,能够在路由器管理软件上查到树莓派的IP,例如我用的是小米路由器,通过路由器管理页面或者小米路由器的APP就能看到树莓派的接入情况:读卡器:电脑一台,系统是w

随机推荐