温馨提示×

Ubuntu Jenkins如何使用Docker容器化

小樊
49
2025-09-23 03:19:44
栏目: 智能运维

Ubuntu上使用Docker容器化部署Jenkins的完整指南

一、环境准备

在开始部署前,需确保Ubuntu系统已安装Docker(容器运行环境)和Java(Jenkins依赖)。

  1. 安装Docker
    更新包索引并安装依赖包:

    sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common -y 

    添加Docker官方GPG密钥并设置APT源:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 

    安装Docker CE并启动服务:

    sudo apt update sudo apt install docker-ce -y sudo systemctl start docker sudo systemctl enable docker 

    验证安装:docker --version(显示Docker版本即成功)。

  2. 安装Java
    Jenkins基于Java运行,需安装OpenJDK 11及以上版本:

    sudo apt install openjdk-11-jdk -y java -version # 验证安装(显示Java版本即成功) 

二、拉取Jenkins镜像

从Docker Hub获取Jenkins官方镜像(推荐使用LTS长期支持版本,稳定性更高):

docker pull jenkins/jenkins:lts 

若需最新版本(不推荐生产环境),可使用docker pull jenkins/jenkins

三、创建并启动Jenkins容器

使用docker run命令启动Jenkins容器,关键参数说明:

  • -d:后台运行容器;
  • --name jenkins:指定容器名称为“jenkins”(便于后续管理);
  • -p 8080:8080:将容器8080端口映射到主机8080端口(Jenkins Web界面入口);
  • -p 50000:50000:将容器50000端口映射到主机50000端口(Jenkins代理通信端口);
  • -v jenkins_home:/var/jenkins_home:使用Docker卷持久化Jenkins数据(避免容器删除后数据丢失);
  • -v /var/run/docker.sock:/var/run/docker.sock:挂载宿主机Docker套接字(允许容器内执行Docker命令,如构建镜像);
  • --restart=always:容器重启时自动启动(提升可用性)。

完整命令:

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts 

若需自定义Jenkins配置目录(如将/home/user/jenkins_data映射到容器内),可将-v jenkins_home:/var/jenkins_home替换为-v /home/user/jenkins_data:/var/jenkins_home

四、初始化Jenkins

  1. 获取初始管理员密码
    容器启动后,通过以下命令查看初始密码(用于解锁Jenkins):

    docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 

    复制输出的密码(如123456abcdef...)。

  2. 访问Web界面
    在浏览器中输入http://<主机IP>:8080(如http://localhost:8080或服务器公网IP),输入初始密码完成解锁。

  3. 安装插件与创建用户

    • 解锁后,选择“安装推荐的插件”(快速搭建基础环境),或手动选择所需插件(如Git、Maven、Docker Pipeline);
    • 插件安装完成后,创建管理员用户(填写用户名、密码、邮箱等信息),完成Jenkins初始化。

五、常见问题排查

  1. 端口冲突
    若启动容器时报“端口已被占用”,可通过sudo lsof -i :8080查看占用进程,停止冲突进程或修改-p参数(如-p 8081:8080,将主机8081端口映射到容器8080端口)。

  2. 无法获取初始密码
    docker exec命令无法执行,检查容器是否运行(docker ps),或通过docker logs jenkins查看启动日志(密码会在日志中显示)。

  3. 权限问题
    若Jenkins无法访问Docker(如执行docker build失败),需确保宿主机Docker权限正确。可将容器用户改为root-u root参数),或在宿主机上将jenkins用户加入docker组(sudo usermod -aG docker jenkins,需重启容器生效)。

  4. 数据丢失
    若未使用-v参数挂载卷,容器删除后Jenkins数据会丢失。务必使用-v jenkins_home:/var/jenkins_home或自定义主机目录挂载。

六、可选:使用Docker Compose管理Jenkins

若需管理多个服务(如Jenkins+数据库+Nginx),可使用Docker Compose。步骤如下:

  1. 安装Docker Compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose 

    验证安装:docker-compose --version

  2. 创建docker-compose.yml文件
    /home/user/jenkins-compose目录下创建文件,内容如下:

    version: '3' services: jenkins: image: jenkins/jenkins:lts ports: - "8080:8080" - "50000:50000" volumes: - jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock restart: always volumes: jenkins_home: 

    该文件定义了Jenkins服务及端口、卷配置。

  3. 启动服务
    docker-compose.yml所在目录执行:

    docker-compose up -d 

    此时会自动拉取镜像并启动容器(-d表示后台运行)。

0