1、Docker,Docker私有仓库配置和Jenkins环境配置
参考文章:https://www.yuque.com/smallred-pvgul/djy/fsvatb
2、配置Jenkins任务
1、创建一个自由风格任务
2、丢弃构建配置
3、git配置
1、配置地址和密码
2、配置分支
4、Maven编译配置
添加构建目标
1、配置父项目编译
2、配置子项目编译
- -f指定pom文件地址
5、配置shell脚本
1、选择添加shell脚本
2、配置shell
1、配置后效果
2、具体命令
- 修改自己项目对应的配置
```shell
!/bin/bash
父子项目脚本
MavenPackageName=’seat-user-1.0.0.jar’ # maven打包出来的jar文件名 DockerProjectName=’seat-user’ # 项目名称 DockerFileName=’Dockerfile-service’ # dockerfile文件名 DockerfilePath=${DockerProjectName}/${DockerFileName} # dockerfile文件地址 RegistryAddr=’121.43.63.200:5000’ # 私有Docker镜像仓库地址DOCKERTAG=`date “+%Y%m-%d_%H-%M”` # 版本号
DOCKER_TAG=’1.0.0’ # 版本号 Namespace=’seat’ # 空间 ImageName=${RegistryAddr}/${Namespace}/${DockerProjectName} # 镜像名称 ServiceName=’seat-user-8085’ # 运行的容器名称 ServicePort=’8086’ # 容器内容端口端口号 ServiceExportPort=’8085’ # 服务对外暴露的端口号
echo “配置Dockerfile” rm -f ${DockerfilePath} cd ${DockerProjectName} touch ${DockerFileName}
echo FROM java:8 >> ${DockerFileName} echo VOLUME /tmp >> ${DockerFileName} echo ADD ${DockerProjectName}/target/${MavenPackageName} project.jar >> ${DockerFileName} echo RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> ${DockerFileName} echo RUN echo \’Asia/Shanghai\’ >/etc/timezone >> ${DockerFileName} echo RUN bash -c \’touch /project.jar\’ >> ${DockerFileName} echo ENTRYPOINT [\”java\”,\”-Djava.security.egd=file:/dev/./urandom\”,\”-jar\”,\”/project.jar\”] >> ${DockerFileName} cd ../
echo “检查docker镜像运行和删除” echo 执行:docker stop ${seat-user} docker stop ${ServiceName} echo 执行 docker rm ${ServiceName} docker rm ${ServiceName} docker rmi -f ${ImageName}:${DOCKER_TAG} docker rmi -f ${ImageName}:latest
docker build -f ${DockerfilePath} -t ${ImageName} . docker tag ${ImageName}:latest ${ImageName}:${DOCKER_TAG} docker push ${ImageName}:${DOCKER_TAG} docker push ${ImageName}:latest
echo “开始运行镜像” docker run —name ${ServiceName} -p ${ServiceExportPort}:${ServicePort} -idt ${ImageName}:${DOCKER_TAG} docker logs —tail 100 ${ServiceName}
echo “删除没有tag标签的镜像”
docker images | grep none | awk ‘{print $3}’ | xargs docker rmi
<a name="gMilw"></a>
#### 3、其中注意 有两条命令是设置镜像的时区
- 该命令是帮写到本地dockerfile文件中
```shell
echo RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> ${DockerFileName}
echo RUN echo \'Asia/Shanghai\' \>/etc/timezone >> ${DockerFileName}
6、配置本地私有镜像https转http访问
1、在/etc/docker/文件添加文件daemon.json
1、进入目录
cd /etc/docker
2、如果没有文件daemon.json
直接运行如下命令
echo { \"insecure-registries\": [\"私有镜像IP:私有仓库端口\"]} > daemon1.json
3、如果有该文件,就用vim添加如下内容
改成自己对应的ip和端口
{ "insecure-registries": ["私有镜像IP:私有仓库端口"]}
2、重启docker
并重新加载daemon
systemctl daemon-reload systemctl restart docker
7、开始编译项目
1、点击编译
3、登录其他服务器进行私有仓库镜像拉取
1、配置ESC阿里云服务器的安全组
- 如果不是云服务器请自己解决
- 这里需要对私有仓库配置白名单,这样就可以在其他服务器进行镜像的拉取
2、目标服务器同样配置私有镜像https转http访问
1、在/etc/docker/文件添加文件daemon.json
1、进入目录
cd /etc/docker
2、如果没有文件daemon.json
直接运行如下命令
echo { \"insecure-registries\": [\"私有镜像IP:私有仓库端口\"]} > daemon1.json
3、如果有该文件,就用vim添加如下内容
改成自己对应的ip和端口
{ "insecure-registries": ["私有镜像IP:私有仓库端口"]}
2、重启docker
并重新加载daemon
systemctl daemon-reload systemctl restart docker
3、jenkins任务中添加SSH登录shell脚本
2、添加SSH站点配置
1、系统设置
2、新增SSH站点
3、添加信息
输入主机IP
- 端口22
4、添加一个凭证,就是服务器的用户名和密码
5、测试连接
2、登录SSH配置脚本
1、添加构建步骤
2、选择对应的站点
3、添加命令
- 停止容器运行
- 删除容器
- 删除镜像
- 开始运行镜像 ```shell docker stop seat-user docker rm seat-user docker rmi 121.43.63.200:5000/seat/seat-user:latest
docker run —name seat-user -p 8086:8086 -idt 121.43.63.200:5000/seat/seat-user:latest
<a name="mqFBQ"></a>
# 4、查询docker私有仓库里的镜像
<a name="jjIgh"></a>
## 1、查询registry中所有的镜像名称
```shell
curl -XGET http://registry_ip:5000/v2/_catalog
2、依据镜像名称查询镜像版本
curl -XGET http://registry_ip:5000/v2/nginx/tags/list