最近无聊想自己玩一玩devpos,方便以后接私活,或者学习,O(∩_∩)O,
以后直接安装这篇文档,傻瓜式安装,哈哈
废话不多说,直接进入实战,完成简单的搭建
1.初始化CentOS环境
1.1 关闭防火墙
sudo systemctl stop firewalld
1.2 禁用 firewalld 服务 在启动时自动运行
sudo systemctl disable firewalld
1.3 验证 firewalld 服务状态
sudo systemctl status firewalld
如果 firewalld 已经停止并且被禁用,你应该会看到类似以下的输出:
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
测试以下网络环境
ping aliyun.com
安装完毕后,如果需要开启防火墙输入以下命令
启动防火墙
sudo systemctl start firewalld
确保 firewalld 在系统启动时自动运行
sudo systemctl enable firewalld
2.Docker安装
docker安装要求系统内核高于3.10
2.1查看内核
uname -r
2.2更新yum包
yum -y update
或者
yum install -y yum-utils device-mapper-persistent-data lvm2
如果执行报:
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"
原因是:
由于 yum 无法访问 CentOS 的镜像列表,导致无法获取软件包。这可能是由于网络问题、DNS 解析失败或者 CentOS 7 的官方镜像列表已经不再维护(因为 CentOS 7 的生命周期已经结束)
解决方式:
更新镜像源,修改/etc/yum.repos.d/CentOS-Base.repo
sudo vi /etc/yum.repos.d/CentOS-Base.repo
将文件内容替换为阿里云的:
在进行任何修改之前,建议先备份原始的yum源配置文件,以便在需要时能够恢复。yum源配置文件通常位于/etc/yum.repos.d/
目录下,文件名为CentOS-Base.repo
(根据具体版本和发行版可能有所不同)。
bash复制代码
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载阿里云的yum源配置文件
有多种方法可以下载阿里云的yum源配置文件,常用的有wget
和curl
命令。以下是一个使用curl
命令下载CentOS 7阿里云源配置文件的示例:
bash复制代码
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
注意 :阿里云提供的yum源配置文件版本可能随时间更新,因此建议直接访问阿里云官方镜像站点(如
http://mirrors.aliyun.com/repo/
)查找最新版本。
清理yum缓存,并生成新的缓存
sudo yum clean all
sudo yum makecache
yum clean all
命令会清除所有已下载的包和头文件缓存,而yum makecache
命令则会重新生成缓存。
然后 验证 yum源是否更换成功 可以试试下载docker
sudo yum install docker-ce docker-ce-cli containerd.io -y
2.3 正式安装Docker
sudo yum remove docker
2.4 安装软件包
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.5 下载阿里云仓库
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2.6 下载docker
sudo yum install docker-ce docker-ce-cli containerd.io -y
2.7 启动docker
systemctl start docker
2.8 设置后台开机启动
sudo systemctl enable docker
2.9 验证docker服务状态
sudo systemctl status docker
如果 Docker 已经启动并且被启用,你应该会看到类似以下的输出:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since ...
2.9.1 检查 Docker 版本
docker --version
2.9.2 配置docker加速镜像
2.9.2.1 创建一个/etc/docker 目录
sudo mkdir -p /etc/docker
2.9.2.2 创建一个daemon.json的加速文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
2.9.2.3 挂载到docker下
sudo systemctl daemon-reload
2.9.2.4 重启docker
sudo systemctl restart docker
问题:
docker无法启动
报 Job for docker.service failed because the control process exited with error code.
查看docker日志
systemctl status docker.service
一般都是 daemon.json 问题。
试试拉取 jenkins镜像
docker pull jenkins/jenkins
如果出现了
Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
拉取不成功是应为国内的镜像加速基本都被墙了,无法访问。需要寻找网友搭建的镜像加速。例如:我找到了一个 https://dockerpull.org
详情请参考:https://dockerpull.org/
修改文件 /etc/docker/daemon.json 文件
{"registry-mirrors": ["https://dockerpull.org"]}
#重载systemd管理守护进程配置文件sudo systemctl daemon-reload
#重启 Docker 服务
sudo systemctl restart docker
或者 在docker pull 时加入加速镜像网址
例如 :docker pull dockerpull.org/jenkins/jenkin
加速镜像参考:
关于Docker官方镜像仓库被墙的一些解决办法 - 我不是矿神
3. 安装docker管理面板【DPanel 】
DPanel 有两个版本,一个是标准版本,还有个 Lite 版。其中 Lite 版本中,不包含域名转发功能。即容器内不会安装 nginx 及 acme.sh 等相关组件。
Lite 版如果需要域名转发,需要借助外部工具,例如 NginxProxyManager、Lucky、宝塔、Nginx 等
本文采用的是标准版 dpanel/dpanel:latest
如果你下载不了,可以使用国内镜像:
需要创建挂载目录
新建文件夹 dpanel 和 子目录
mkdir -p /volume1/docker/dpanel/data
进入 dpanel 目录cd /volume1/docker/dpanel
运行容器docker run -d
--restart unless-stopped
--name dpanel
-p 8807:8080
-v /var/run/docker.sock:/var/run/docker.sock
-v $(pwd)/data:/dpanel
-e APP_NAME=dpanel
APP_NAME:dpanel :APP_NAME 请保持与 container_name 一致
安装完成后,在浏览器中输入 http://IPxx.xx.x:8807 就能看到登录界面
可以参考以下文档,都是中文的
donknap/dpanel: docker可视化管理面板
地址:https://github.com/donknap/dpanel
DPanel 可视化 Docker 管理面板
Docker
4.安装Jenkins
4.1 创建jenkins挂载目录文件夹/volume1/docker/jenkins
mkdir -p /volume1/docker/jenkins
4.2 授权目录,给/volume1/docker/jenkins 权限
chmod 777 /volume1/docker/jenkins
4.3 安装maven
处理maven安装问题
因为我们要部署的是SpringBoot,所以需要准备JDK和Maven环境
直接输入命令下载:
wget https://downloads.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
创建一个maven文件夹
mkdir -p /volume1/docker/maven
然后使用命令进行解压,到对应文件夹下【-C /volume1/docker/maven】
tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /volume1/docker/maven
配置maven环境
到maven对应的目录下设置setting文件,例如我的在 /volume1/docker/maven 下
cd /volume1/docker/maven/apache-maven-3.8.8
编辑setting文件
vim settings.xml
将原来的mirror删除掉,按i进入编辑
加入新的mirror 和 localRepository
xml<localRepository>/volume1/docker/maven/repository</localRepository> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>https://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
mirror是配置远程仓库:我们选aliyun 的仓库
localRepository 是配置本地仓库 :我们选择本地对应的目录下
创建一个仓库文件夹
mkdir -p /volume1/docker/maven/repository
注意这里的仓库文件夹需要与我们配置的localRepository路径一致,不然找不到本地的maven仓
配置环境变量
打开环境变量文件:按i编辑,进入到最后一行进行编辑
vim /etc/profile
添加配置信息:MAVEN_HOME 配置咱们的maven路径
export MAVEN_HOME=/volume1/docker/maven/apache-maven-3.8.8 export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
从新载入配置文件
source /etc/profile
测试maven安装结果
mvn -v
出现 以下内容即安装成功
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /volume1/docker/maven/apache-maven-3.8.8
Java version: 1.8.0_332, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre
4.4 运行启动Jenkins命令:
docker run -u root -d --restart=always --privileged=true \
-p 10240:8080 -p 10241:50000 \
-v /volume1/docker/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v /volume1/docker/maven:/usr/local/maven \
-v "$HOME":/home \
--name jenkins jenkins/jenkins:lts
设置容器内的用户为 root。这意味着容器将以超级用户权限运行。
-d:以后台模式(即作为后台进程)启动容器。
--restart=always:
设置容器在宿主机重启后总是重新启动。
--privileged=true:
以特权模式运行容器,这给予了容器更多的权限,比如可以直接访问 Docker API。特权模式绕过了某些安全限制,因此只应在必要时使用。
-p 10240:8080:
映射容器的端口 8080 到宿主机的端口 10240。这意味着你可以通过访问宿主机的 10240 端口来连接到容器内的 Jenkins 服务。
-p 10241:50000:
类似地,映射容器的端口 50000 到宿主机的端口 10241。这通常是用于 Jenkins 的代理或者其他需要监听外部端口的服务。
-v //volume1/docker/jenkins :/var/jenkins_home:
将宿主机上的 /home/jenkins/workspace/ 目录挂载到容器内的 /var/jenkins_x 目录。这使得 Jenkins 可以在宿主机上存储工作空间数据。
-v /var/run/docker.sock:/var/run/docker.sock:
将 Docker 的 Unix socket 文件从宿主机挂载到容器内,使得容器内的 Jenkins 可以管理宿主机上的 Docker 服务。
-v /usr/bin/docker:/usr/bin/docker:
将宿主机上的 /usr/bin/docker 文件挂载到容器内的相同位置。虽然在特权模式下,容器内的 Docker 客户端可以连接到宿主机的 Docker 引擎,但这个选项可能是为了确保 Jenkins 能够直接访问 Docker 客户端。
-v /volume1/docker/maven:/usr/local/maven:
将宿主机上的 Maven 安装目录挂载到容器内的 /usr/local/maven 目录,这样容器内的 Jenkins 可以使用宿主机上的 Maven 版本。
-v "$HOME":/home:
将宿主机用户的主目录挂载到容器内的 /home 目录。这使得 Jenkins 可以访问宿主机用户的主目录下的文件。
--name jenkins:
给容器命名,便于后续管理。
jenkins/jenkins:lts:
4.5 Jenkins配置
可以参考以下博客
Docker+jenkins+Gitee自动构建部署SpringBoot项目
Jenkins + Docker + Github 自动部署-CSDN博客
基于Docker+Jenkins实现自动部署SpringBoot+Maven项目_gitee+jetkins+docker自动部署构建springboot+vue项目-CSDN博客