容器部署Jenkins的优势:
1、安全。容器之间的进程是相互隔离的,单独容器环境稳定,宿主机中环境变量的修改,不容易影响容器的运行结果。
2、更轻松地部署和扩展。容器可方便迁移,一次交付,多次利用,容器可将打包好的jenkins环境迁移到其他设备中。
3、容器启动迅速,环境恢复方便。容器修改可追溯,可通过定时生成docker镜像,保证后续即使出现环境异常,也能快速回复,此外,创建容器实例比创建虚拟机示例快得多。文章来源:https://www.toymoban.com/news/detail-645555.html
前提条件:
- 安装docker:
- 参考文档Docker基础篇--安装docker环境_windows10安装使用docker_傻乎乎的胖鱼的博客-CSDN博客
- 安装docker-composer:
- 安装python3,pip list没问题后可用pip安装:sudo pip install docker-compose
- 赋予权限:chmod +x /usr/local/bin/docker-compose
- 检查是否安装成功:docker-compose -v
- 选取最新的jenkins镜像,否则jenkins下载插件会失败,原因是jenkins版本不匹配:
- 执行命令:docker pull jenkins/jenkins:Its
- 映射路径:sudo chown -R 1000:1000 /home/docker/jenkins(这个本地路径可自行修改,后面会用到该路径)
两种方式:
-
docker run的方式,直接运行命令行
- 创建一个属于 Jenkins 容器的 docker 网络:
- 执行命令:docker network create jenkins_network(网络名)
- 运行 jenkins 容器:
- 执行命令:docker run --name jenkins-in-docker --network jenkins_network(网络名) --publish 8080(访问的端口号,可设置):8080 --publish 50000:50000 --volume /home/docker/jenkins(前提条件4映射路径):/var/jenkins_home --volume /usr/bin/docker:/usr/bin/docker --volume /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
- 观察容器运行的打印,看到日志“Jenkins is fully up and running”,说明 jenkins 启动成功
- 浏览器访问 http://服务器IP:8080,如果访问不了,确保自己防火墙开放了 8080 端口
- 这时如果ctrl+c退出容器,则jenkins服务关闭,执行命令时可以加上-d,保证容器后台执行;或者docker start docker_jenkins(容器名),可以重启容器
-
浏览器访问 http://服务器IP:8080,进入jenkins配置界面,Jenkins配置可参考:Jenkins基础篇--linux安装Jenkins_傻乎乎的胖鱼的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-645555.html
- 创建一个属于 Jenkins 容器的 docker 网络:
-
采用 docker-compose 方式运行 Jenkins 容器
- 创建一个yaml文件
- vim infrastructure-docker-compose.yml(名字可修改)
- 在yml中配置
- version: '3.7'
services:
jenkins-in-docker:
image: jenkins/jenkins:lts
container_name: jenkins-in-docker
privileged: true
restart: unless-stopped
ports:
- 8080:8080
- 50000:50000
environment:
JAVA_OPTS: "-Xmx2048m -Xms1024m -Djava.security.egd=file:/dev/./urandom -Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
volumes:
- ./jenkins_home:/var/jenkins_home
- /usr/bin/docker:/usr/bin/docker
- /var/run/docker.sock:/var/run/docker.sock
networks:
- jenkins_network
deploy:
resources:
limits:
memory: 4096M
cpus: '2'
networks:
jenkins_network:
external: true
- 创建一个sh文件,执行docker-composer命令
- vim startup-infrastructure-docker-compose.sh(脚本名称可修改)
- 脚本内容
- #!/usr/bin/env bash
# 设置docker网络名称和docker-compose文件
docker_network=jenkins_network
docker_compose_file=infrastructure-docker-compose.yml
# 输出下docker-compose文件内容
echo "The compose file as below: "
docker-compose -f ${docker_compose_file} config
nw=$(docker network ls | grep ${docker_network} | awk '{print $1}')
if [[ ${nw} ]]; then
docker-compose -f ${docker_compose_file} --compatibility up --remove-orphans -d
else
docker network create ${docker_network} && docker-compose -f ${docker_compose_file} --compatibility up --remove-orphans -d
fi
- 给sh脚本赋权限,并执行该脚本
- chmod +x startup-infrastructure-docker-compose.sh
- ./startup-infrastructure-docker-compose.sh
- 查看容器:docker ps
- 可查看容器运行日志,执行命令:docker logs -f 容器名 --tail=50,看到日志“Jenkins is fully up and running”,说明 jenkins启动成功
- 浏览器访问 http://服务器IP:8080,进入jenkins配置界面,Jenkins配置可参考:Jenkins基础篇--linux安装Jenkins_傻乎乎的胖鱼的博客-CSDN博客
- 创建一个yaml文件
到了这里,关于Jenkins基础篇--Docker容器部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!