一、docker 命令总结
exec 进入docker 容器 docker exec -it 775c7c9ee1e1 /bin/bash
二、docker 安装
1、拉去镜像 docker pull jenkins
2、创建映射本地数据卷的路径为/data/jenkins_home/
mkdir -p /data/jenkins_home/
3、修改容器中jenkins用户操作权限 chown -R 1000:1000 /data/jenkins_home/
4、创建容器
docker run -d --name jenkins -p 8040:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins
docker run --name jenkins2 -p 8082:8080 -p 50002:50000 -v /var/run/docker.sock:/var/run/docker.sock -v /var/jenkins_home:/var/jenkins_home -d jenkinsci/blueocean-d
标识是让 docker 容器在后台运行--name
定义一个容器的名字,如果没有指定,那么会自动生成一个随机数字符串当做UUID-p 8040:8080
端口映射,我本地的8080
被占用了,所以随便映射了一个8040
-p 50000:50000
端口映射-v /data/jenkins_home:/var/jenkins_home
绑定一个数据卷,/data/jenkins_home
是刚才创建的本地数据卷
-v /var/run/docker.sock:/var/run/docker.sock 使得容器中可以操作docker
三、docker 修改已经启动的容器的挂载目录及端口(防止已经在使用的容器还要重新通过镜像启动新的容器)
1、停止docker服务
systemctl stop docker.service(关键,修改之前必须停止docker服务)
2、vim /var/lib/docker/containers/container-ID/config.v2.json
修改配置文件中的目录位置,然后保存退出
"MountPoints":{"/home":{"Source":"/docker","Destination":"/home","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"//docker/","Target":"/home"}}}
四、docker 启动容器并挂载 maven目录,profile配置文件,docker.sock 等
docker run --name jenkins3 -p 8083:8080 -p 50003:50000 -v /var/run/docker.sock:/var/run/docker.sock -v /var/jenkins_home:/var/jenkins_home -v /usr/local/maven/:/usr/local/maven/ -v /usr/local/mavenrepo/:/usr/local/mavenrepo/ -v /etc/profile:/etc/profile -d jenkinsci/blueocean
五、使用的问题总结
1.目录权限的问题导致jenkins无法构建
2.docker 容器中mvn环境的问题,需要执行 source /etc/profile
3.maven 构建时无法连接远程仓库,选择其他远程仓库尝试
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
4.jenkins shell mvn 命令不识别
在jenkins shell中执行没有加载/etc/profile .bash_profile中的环境变量 需要在shell 命令前面加一条申明:#!/bin/bash -il