随着自动化部署越来越普及,加上docker容器化部署越来越多,很多时候可能存在这样一种需求:jenkins通过docker启动,然后jenkins打包镜像并上传私服,再通过jenkins进行部署(远程服务器从私服下载镜像并启动)。这里面就涉及了在docker里面执行docker命令的问题,也就是docker in docker。这个问题,我研究了好久,中间太曲折,不赘述了。最后做成了镜像,有需要的就直接拿去用吧。
默认进去就是root用户
docker-compose up -d
docker-compose.yml
version: '3.2'
services:
jenkins:
container_name: jenkins
image: wjf8882300/jenkins
restart: unless-stopped
ports:
- target: 8080
published: 8080
protocol: tcp
mode: host
volumes:
- /data/jenkins:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
Jenkins默认安装完可能不是最新的,需要替换为最新的,不然很多插件会安装失败。
# 进入jenkins所在docker容器
docker exec -it jenkins bash
# 进入安装目录
cd /usr/share/jenkins/
# 下载最新安装包(自己到官网找)
wget http://updates.jenkins-ci.org/download/war/2.176.2/jenkins.war
# 退出容器
exit
# 重启容器
docker restart jenkins