虚拟机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

虚拟机centos7上安装docker+jenkins

2. 装置docker

yum install docker-ce -y

虚拟机centos7上安装docker+jenkins

虚拟机centos7上安装docker+jenkins

3. 发动docker

装置结束,就能够运用systemctl指令来发动Docker了。systemctlLinux的进程办理服务指令,能够协助咱们发动docker

systemctl start docker
systemctl enable docker

虚拟机centos7上安装docker+jenkins

履行一下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

虚拟机centos7上安装docker+jenkins

虚拟机centos7上安装docker+jenkins

装置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

虚拟机centos7上安装docker+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

虚拟机centos7上安装docker+jenkins

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

虚拟机centos7上安装docker+jenkins

5. 初始化jenkins装备

  • 解锁jenkins

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

    虚拟机centos7上安装docker+jenkins

    Jenkins发动后,会生成一个初始暗码。该暗码在服务器的文件内寄存,咱们能够进入服务器检查暗码内容,将暗码填写在Jenkins的办理员暗码输入框内:

    cat /var/lib/jenkins/secrets/initialAdminPassword
    

    点击继续按钮,解锁Jenkins。

  • 下载插件

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

    虚拟机centos7上安装docker+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
    

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

    虚拟机centos7上安装docker+jenkins

6. 装置结束

插件装置结束后,接着是注册办理员账号。依照提示一路装备后,直到看到以下界面代表装置成功。

虚拟机centos7上安装docker+jenkins

全体装置成果测验

Jenkins算是发动成功了。但是还需求对Jenkins做一点简单的装备,才干够让它构建docker镜像。

点击Jenkins主页->左边导航->新建使命->Freestyle project

新建结束后,找到构建一项,挑选添加构建过程,挑选履行shell,输入以下指令:

docker -v
docker pull node:latest

该指令会去拉取一个nodejs稳定版的镜像,咱们能够来测验Docker的可用性

保存后,咱们点击左边菜单的立即构建Jenkins就会开端构建。挑选左边历史记载第一项(最新),点击控制台输出,检查构建日志。

虚拟机centos7上安装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