环境配置
Ubuntu22.04 64位
搭建流程
Linux安装Docker
Install Docker Engine On Ubuntu
1.尝试安装新版本之前卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
2.更新apt包索引,安装依赖包支持通过HTTPS使用存储库
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg
3.添加Docker官方GPG密钥
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
4.设置存储库
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5.安装Docker引擎
更新apt库,安装Docker Engine、containerd和Docker Compose(这里安装最新版本)
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
6.验证Docker安装
运行hello-world镜像
sudo docker run hello-world
Docker安装Jenkins
Dockers Hub - Jenkins
Jenkins Docker Image Usage
docker run -d --name jenkins -p 8001:8080 -p 50000:50000 --restart=on-failure -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
命令 | 说明 |
---|---|
-d | 启动在后台 |
–name | 容器名称 |
-p | 端口映射(宿主机端口:容器内部端口) |
–restart | 重启策略,on-failure容器因错误退出重启 |
-v | 显式卷设置(宿主机目录:容器内部目录),即使容器停止、启动或删除,Docker卷仍会保留其内容 |
启动容器遇到问题:
docker: Error response from daemon: driver failed programming external connectivity on endpoint jenkins (bc5fe4b81154796fa19c0a01a4005430e7852d5e2140b88e0df6f4582fe97f18): (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 192.168.0.2 --dport 50000 -j ACCEPT: iptables: No chain/target/match by that name.
解决方式:
参考问题
sudo iptables -t filter -F
sudo iptables -t filter -X
service docker restart
查看Jenkins启动情况
docker ps | grep jenkins
查看日志发现问题:
# docker logs -f --tail 1000 jenkins
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
解决方式:
主机文件夹挂载到/data/jenkins_home,可能会存在权限问题,这里/data/jenkins_home宿主机目录为root权限,这里可以确保容器内的 jenkins 用户(jenkins 用户 - uid 1000)具有权限,可以访问主机上的目录来解决。
chown 1000 /data/jenkins_home
访问初始化Jenkins
如果是云机器需要开启相应端口,本地机器注意防火墙配置
http://{机器ip}:{Jenkins应用宿主机端口}
首次登录密码路径(容器内部):/var/jenkins_home/secrets/initialAdminPassword
由于显式卷映射,在宿主机即可获取:
cat /data/jenkins_home/secrets/initialAdminPassword
选择安装推荐的插件(Install suggested plugins)即可,等待安装完成;
创建管理员用户;
实例配置可以先选择not now;
完成jenkins配置,访问首页;