Ubuntu上使用Docker容器化部署Jenkins的完整指南
在开始部署前,需确保Ubuntu系统已安装Docker(容器运行环境)和Java(Jenkins依赖)。
安装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版本即成功)。
安装Java:
Jenkins基于Java运行,需安装OpenJDK 11及以上版本:
sudo apt install openjdk-11-jdk -y java -version # 验证安装(显示Java版本即成功)
从Docker Hub获取Jenkins官方镜像(推荐使用LTS长期支持版本,稳定性更高):
docker pull jenkins/jenkins:lts
若需最新版本(不推荐生产环境),可使用docker pull 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):
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
复制输出的密码(如123456abcdef...
)。
访问Web界面:
在浏览器中输入http://<主机IP>:8080
(如http://localhost:8080
或服务器公网IP),输入初始密码完成解锁。
安装插件与创建用户:
端口冲突:
若启动容器时报“端口已被占用”,可通过sudo lsof -i :8080
查看占用进程,停止冲突进程或修改-p
参数(如-p 8081:8080
,将主机8081端口映射到容器8080端口)。
无法获取初始密码:
若docker exec
命令无法执行,检查容器是否运行(docker ps
),或通过docker logs jenkins
查看启动日志(密码会在日志中显示)。
权限问题:
若Jenkins无法访问Docker(如执行docker build
失败),需确保宿主机Docker权限正确。可将容器用户改为root
(-u root
参数),或在宿主机上将jenkins
用户加入docker
组(sudo usermod -aG docker jenkins
,需重启容器生效)。
数据丢失:
若未使用-v
参数挂载卷,容器删除后Jenkins数据会丢失。务必使用-v jenkins_home:/var/jenkins_home
或自定义主机目录挂载。
若需管理多个服务(如Jenkins+数据库+Nginx),可使用Docker Compose。步骤如下:
安装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
。
创建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服务及端口、卷配置。
启动服务:
在docker-compose.yml
所在目录执行:
docker-compose up -d
此时会自动拉取镜像并启动容器(-d
表示后台运行)。