1、Docker,Docker私有仓库配置和Jenkins环境配置

  • 参考文章:https://www.yuque.com/smallred-pvgul/djy/fsvatb

    2、配置Jenkins任务

    1、创建一个自由风格任务

    image.png

    2、丢弃构建配置

    image.png

    3、git配置

    1、配置地址和密码

    image.png

    2、配置分支

    image.png

    4、Maven编译配置

  • 添加构建目标

image.png

1、配置父项目编译

image.png

2、配置子项目编译

  • -f指定pom文件地址

image.png

5、配置shell脚本

1、选择添加shell脚本

image.png

2、配置shell

1、配置后效果

image.png

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

  1. <a name="gMilw"></a>
  2. #### 3、其中注意 有两条命令是设置镜像的时区
  3. - 该命令是帮写到本地dockerfile文件中
  4. ```shell
  5. echo RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> ${DockerFileName}
  6. 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、点击编译

    image.png

3、登录其他服务器进行私有仓库镜像拉取

1、配置ESC阿里云服务器的安全组

  • 如果不是云服务器请自己解决
  • 这里需要对私有仓库配置白名单,这样就可以在其他服务器进行镜像的拉取

image.png

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、系统设置

    系统设置-系统设置
    image.png

    2、新增SSH站点

    image.png

    3、添加信息

  • 输入主机IP

  • 端口22

image.png

4、添加一个凭证,就是服务器的用户名和密码

image.png

5、测试连接

image.png

2、登录SSH配置脚本

1、添加构建步骤

image.png

2、选择对应的站点

image.png

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