虚拟机centos7上安装docker+jenkins

学习某册子的CICD时,安装了docker和jenkins,记录的安装过程和中间碰到的问题。

使用的虚拟机为Parallels Desktop,配置为2核4G,系统为centos 7,下载地址

安装docker

在开始安装之前,需要安装device-mapper-persistent-datalvm2两个依赖。

  • device-mapper-persistent-dataLinux下的一个存储驱动,Linux上的高级存储技术。
  • lvm的作用则是创建逻辑磁盘分区。

1. 安装依赖

使用CentOSYum包管理器安装两个依赖:

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

依赖安装完毕后,将阿里云的Docker镜像源添加进去。可以加速Docker的安装:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. 安装docker

yum install docker-ce -y

3. 启动docker

安装完毕,就可以使用systemctl命令来启动Docker了。systemctlLinux的进程管理服务命令,可以帮助我们启动docker

systemctl start docker
systemctl enable docker

执行一下docker -v,可以用来查看Docker安装的版本信息。也可以帮助我们查看docker的安装状态;如果正常展示版本信息,代表Docker已经安装成功。

4. 关于配置阿里云镜像源

Docker安装完毕后,之后我们去拉取docker镜像时,一般默认会去docker官方源拉取镜像。但是外网比较慢,所以更换为阿里云镜像仓库源进行镜像下载加速。

登录阿里云官网,打开阿里云容器镜像服务,点击左侧菜单最下面的镜像加速器,选择CentOS,按照官网的提示执行命令,即可更换docker镜像源地址。

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://***.mirror.aliyuncs.com"]
}
EOF

安装jenkins

安装完Docker后,我们只是拥有了一个可以承载服务的载体。想实现自动化构建,还需要安装一个构建工具Jenkins

Jenkins是一个基于Java语言开发的持续构建工具平台,主要用于持续、自动地构建/测试你的软件和项目。它可以执行你预先设定好的设置和构建脚本,也可以和Git代码库做集成,实现自动触发和定时触发构建。

1. 安装Java

因为JenkinsJava编写的持续构建平台,所以安装Java必不可少。

openjdkSunJDK的一种开源实现。openjdk和sunjdk的具体区别

直接使用yum包管理器安装openjdk即可:

yum install -y java

2. 使用yum安装Jenkins

由于yum源不自带Jenkins的安装源,我们需要自己导入一份Jenkins安装源进行安装。导入后,使用yum命令安装即可。

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

注:wget后面的参数是大写O

3. 启动Jenkins

Jenkins安装后,会将启动命令注册到系统Service命令中。所以直接使用系统service命令启动Jenkins即可。有三个命令可以使用,分别对应启动/重启/停止。

service jenkins start # 启动Jenkins
# service jenkins restart # 重启Jenkins
# service jenkins stop # 停止Jenkins

4. 给jenkins放行端口

在启动Jenkins后,Jenkins会开启它的默认端口8080。但由于防火墙限制,我们需要手动让防火墙放行8080端口才能对外访问到界面。

这里我们在CentOS下的firewall-cmd防火墙添加端口放行规则,添加完后重启防火墙。

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=50000/tcp --permanent systemctl reload firewalld

服务启动后,访问IP:8080Jenkins第一次启动时间一般比较长(看服务器性能)

5. 初始化jenkins配置

  • 解锁jenkins

    Jenkins启动完成后,会自动跳转至下面这个界面。这是Jenkins的解锁界面,你需要输入存放在服务器的初始解锁密码才能进行下一步操作。

    Jenkins启动后,会生成一个初始密码。该密码在服务器的文件内存放,我们可以进入服务器查看密码内容,将密码填写在Jenkins的管理员密码输入框内:

    cat /var/lib/jenkins/secrets/initialAdminPassword

    点击继续按钮,解锁Jenkins。

  • 下载插件

    解锁后就到了插件下载页面,这一步要下载一些Jenkins的功能插件。

    因为Jenkins插件服务器在国外,所以速度不太理想。需要更换为清华大学的Jenkins插件源,再安装插件。

    更换方法:进入服务器,将/var/lib/jenkins/updates/default.json内的插件源地址替换成清华大学的源地址,将google替换为baidu即可。

    sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json

    接着点击安装推荐的插件即可。

6. 安装完毕

插件安装完毕后,接着是注册管理员账号。按照提示一路配置后,直到看到以下界面代表安装成功。

整体安装结果测试

Jenkins算是启动成功了。但是还需要对Jenkins做一点简单的配置,才可以让它构建docker镜像。

点击Jenkins首页->左侧导航->新建任务->Freestyle project

新建完毕后,找到构建一项,选择增加构建步骤,选择执行shell,输入以下命令:

docker -v
docker pull node:latest

该命令会去拉取一个nodejs稳定版的镜像,我们可以来测试Docker的可用性

保存后,我们点击左侧菜单的立即构建Jenkins就会开始构建。选择左侧历史记录第一项(最新),点击控制台输出,查看构建日志。

执行后,发现提示无访问权限。这里就涉及到Linux下的Unix Socket权限问题

Unix Socket权限问题

docker的架构是C/S架构。使用docker命令时,其实是命令使用socketdocker的守护进程进行通信,才能正常执行docker命令。

而在Linux中,Unix socket属于root用户,因此需要root权限才能访问。官方的解释:

Manage Docker as a non-root user The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user. If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

docker中,docker提供了一个用户组的概念。我们可以将执行Shell的用户添加到名称为docker的用户组,则可以正常执行docker命令。

Jenkins中执行的终端用户为jenkins,所以我们只需要将jenkins加入到docker用户组即可:

groupadd docker            # 新增docker用户组
gpasswd -a jenkins docker # 将当前用户添加至docker用户组
newgrp docker # 更新docker用户组

加入后,重启Jenkins

service jenkins restart

重启Jenkins后,再次执行脚本,此时执行成功。

虚拟机centos7上安装docker+jenkins的更多相关文章

  1. Centos7上安装docker (转)

    Centos7上安装docker Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如 ...

  2. centos7上安装docker社区版

    container(容器) docker(集装箱) 容器的优点 1. 启动速度快 2. 节省资源 3. 兼容性高 保证机器正常上网 #ping www.baidu.com CPU需要支持虚拟化 # g ...

  3. 在centos7上安装Docker CE

    Docker CE的基本安装 https://docs.docker.com/engine/installation/linux/docker-ce/centos/ 一.系统要求 1.安装Docker ...

  4. Centos7上安装docker (新手版本)

    1首先要有一个安装好的Centos7 2打开终端,输入一下命令(自动安装最新版本) curl -fsSL https://get.docker.com | bash -s docker --mirro ...

  5. Centos7上安装docker

    Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施.容器 ...

  6. 在CentOS7上安装Docker

    具体过程如下 到网站下载centos7: http://isoredirect.centos.org/ http://isoredirect.centos.org/centos/7/isos/x86_ ...

  7. Docker:测试环境的准备-centos7上安装docker

    Dockers官方部署文档:https://docs.docker.com/install/linux/docker-ce/centos/ 1.建议先关闭 selinux (selinux是 linu ...

  8. Centos7上安装docker及使用scrapy-splash

    下载docker  https://www.cnblogs.com/yufeng218/p/8370670.html 安装scrapy-splash  https://www.cnblogs.com/ ...

  9. Docker(2)--Centos7 上安装部署

    Centos7 上安装docker Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比 ...

  10. 在centos7上安装Jenkins

    在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...

随机推荐

  1. excel 启用迭代计算

    迭代,即计算程序中一组指令的重复.在Excel中有些公式需要启用迭代计算,才能正常运算. 注:公式直接或间接引用自身单元格,会导致计算结果不正确,可以尝试使用该方法解决.所愿单元格的初始值都为0. 参 ...

  2. 使用ClamAV进行linux病毒扫描

    前言 ClamAV是一个在命令行下查毒(并非杀毒)的软件,其免费开源跨平台.ClamAV默认只能查出服务器内的病毒,但是无法清除,最多删除. 安装ClamAV yum install -y epel- ...

  3. debian11安装mysql5.7

    前言 mysql官网5.7版本的只找到debian10的,没有debian11的,试了下也能用. 系统版本:debian 11 mysql版本:5.7.35 步骤 下载bundle的tar包.官网地址 ...

  4. LeetCode 周赛上分之旅 #40 结合特征压缩的数位 DP 问题

    ️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...

  5. 遗传算法解决航路规划问题(MATLAB)

    遗传算法 文章部分图片和思路来自司守奎,孙兆亮<数学建模算法与应用>第二版 定义:遗传算法是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,模拟自然界中的声明进化机制,在人工系统中实 ...

  6. KRPANO PR10最新激活码(破解)分享

    KRPano pr10最新版本激活码下载地址: http://pan.baidu.com/s/1qYv2vO4 适用于最新pr10以及之前版本,解压密码为KRPano技术解密群群号:551278936 ...

  7. PivotGridControl自定义行数据的统计公式

    我们在使用PivotGridControl进行数据统计的时候,用时候需要在不同的行使用不同的汇总公式的情况,本文就是为了说明怎么实现此功能,如下图说明 数据源: 注意:此时数据列指定的SummaryT ...

  8. Gradle 设置全局镜像源

    复制 init.gradle.kts 文件到 Windows 的 %USERPROFILE%/.gradle 或者 Linux 的 ~/.gradle 目录下.也可以直接复制文末的代码为 init.g ...

  9. 【爬虫笔记】Python爬虫简单运用爬取代理IP

    一.前言 近些年来,网络上的爬虫越来越多,很多网站都针对爬虫进行了限制,封禁了一些不规则的请求.为了实现正常的网络爬虫任务,爬虫常用代理IP来隐藏自己的真实IP,避免被服务器封禁.本文将介绍如何使用P ...

  10. Java 中for循环和foreach循环哪个更快?

    摘要:本文由葡萄城技术团队于博客园发布.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在Java编程中,循环结构是程序员常用的控制流程,而for循环 ...