centos7下 docker+jenkins自动化构建

  • • 发表于2019-01-04 10:02:46.0
  • • 作者 小徐同学
  • • 703 次浏览
  • • 0 条评论
  • • 最后编辑时间 2019-01-12 06:50:50.0
  • • 来自 [笔 记]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

前言

按目前java界发展,往后后端服务应该都会虚拟化,容器化,并且成为一个基础环境,开发也无需关心。

Docker安装

step 1: 安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Step 2: 添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Step 3: 更新并安装 Docker-CE

sudo yum makecache fast
sudo yum -y install docker-ce

Step 4: 开启Docker服务

sudo service docker start

Step 5: 查看version

docker version

查看容器内文件

//查看容器   
docker ps
//进入容器
docker exec -i -t  imageId /bin/bash
//按条件删除镜像
docker rmi --force `docker images | grep registry.cn-shenzhen.aliyuncs.com/xiaoxu/zzzz | awk '{print $3}'`

切换阿里云镜像

1. 安装/升级Docker客户端

推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce

2. 配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7w9w1soc.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装jenkins

sudo docker pull jenkins
// 8080端口jenkins默认,外部可以改,内部不能改
//挂载docker
sudo docker run -it -d --restart always --name jenkins -p 8080:8080 -p 50000:50000 -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v  /usr/local/docker/jenkins:/var/jenkins_home jenkins

jdk配置 默认

maven 自动安装

pom.xml 需要安装docker-maven-plugin 配置如下:

<plugin>
  <groupId>com.spotify</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <version>1.1.1</version>
  <configuration>
    <baseImage>openjdk:8u181-jre</baseImage>
    <forceTags>true</forceTags>
    <workdir>/app</workdir>
    <runs>
      <run><![CDATA[ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone]]></run>
    </runs>
    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
    <!-- <dockerDirectory>${basedir}/src/main/docker</dockerDirectory> -->
    <!-- 私有仓库配置,需要settings.xml文件配合serverId对应的服务地址 -->
    <serverId>${docker.serverId}</serverId>
    <registryUrl>${docker.repostory}</registryUrl>
    <!--install阶段也上传,否则只有deploy阶段上传 -->
    <pushImage>true</pushImage>
    <imageName>
      ${docker.repostory}/${docker.registry.name}:${project.version}-${maven.build.timestamp}
    </imageName>
    <imageTags>
      <!--docker的tag为项目版本号、latest -->
      <imageTag>${project.version}-${maven.build.timestamp}</imageTag>
      <imageTag>latest</imageTag>
    </imageTags>
    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
    <resources>
      <resource>
        <targetPath>/app</targetPath>
        <directory>${project.build.directory}</directory>
        <include>${project.build.finalName}.jar</include>
      </resource>
    </resources>
  </configuration>
</plugin>

setting.xml配置

**自己指定,需要配置阿里云镜像仓库账号密码

**

setting.xml 如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <pluginGroups>

  </pluginGroups>

  <proxies>

  </proxies>

  <servers>


    <server>
      <id>docker-aliyun</id>
      <username>account</username>
      <password>password</password>
      <configuration>
        <email>mail@qq.com</email>
      </configuration>
    </server>
  </servers>
  <mirrors>
      <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>
  <profiles>

  </profiles>
</settings>

构建后阿里云镜像仓库会看到:

阿里云镜像服务相关

1. 登录阿里云Docker Registry

$ sudo docker login --username=409413474@qq.com registry.cn-shenzhen.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在产品控制台首页修改登录密码。

2. 从Registry中拉取镜像

$ sudo docker pull registry.cn-shenzhen.aliyuncs.com/xiaoxu/zzzz:[镜像版本号]

3. 将镜像推送到Registry

$ sudo docker login --username=409413474@qq.com registry.cn-shenzhen.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/xiaoxu/zzzz:[镜像版本号]
$ sudo docker push registry.cn-shenzhen.aliyuncs.com/xiaoxu/zzzz:[镜像版本号]

请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

4. 选择合适的镜像仓库地址

从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于经典网络,请使用 registry-internal.cn-shenzhen.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-shenzhen.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。

5. 示例

使用”docker tag”命令重命名镜像,并将它通过专有网络地址推送至Registry。

$ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-shenzhen.aliyuncs.com/acs/agent:0.7-dfb6816

使用”docker images”命令找到镜像,将该镜像名称中的域名部分变更为Registry专有网络地址。

$ sudo docker push registry-vpc.cn-shenzhen.aliyuncs.com/acs/agent:0.7-dfb6816
评论区(共0条评论)
0条评论
Ctrl+Enter
作者

Michael

小徐同学

帖子:40 回复:0

全栈搬运工

作者详情》
Top