私有仓库的搭建与配置

  1. 拉取私有仓库镜像

    1
    docker pull registry
  2. 启动私有仓库

    1
    docker run --name=registry -p 5000:5000 -v /home/docker/registry/:/var/lib/registry -d registry

    参数说明

    –name 容器名称
    -p 宿主机端口:容器端口
    -v 挂载文件目录
    -d 指定镜像

  3. 打开游览器输入地址http://你的服务器IP:5000/v2/_catalog看到{"repositories":[]}表示私有仓库搭建成功并且内容为空(需要开放服务器端口)

  4. 修改daemon.json,添加以下内容

    {
    ​ “registry-mirrors”: [“https://3olr1zha.mirror.aliyuncs.com"],
    "insecure-registries": ["你的服务器IP:5000"]
    }

1
2
3
vim /etc/docker/daemon.json
#添加之后,保存退出,再重载配置
systemctl daemon‐reload
  1. 重启docker服务
    1
    systemctl restart docker
  2. 重启私有容器
    1
    2
    3
    docker start registry
    #查看容器状态
    docker ps -l

手动将镜像上传至私有仓库

  1. 标记镜像为私有仓库镜像
    首先将镜像打上私有仓库Tag,如:选择hello-world为例
1
docker tag hello-world:latest 你的服务器IP:5000/hello-world

再次查看镜像列表,发现多了一个hello-world

1
2
3
docker images
你的服务器IP:5000/hello-world latest fce289e99eb9 3 weeks ago 1.84kB
hello-world latest fce289e99eb9 3 weeks ago 1.84kB
  1. 上传标记的镜像
    1
    docker pull 你的服务器IP:5000/hello-world
  2. 完成上传
    在游览器输入地址http://你的服务器IP:5000/v2/_catalog看到该镜像即上传成功
    {“repositories”:[“hello-world”]}

DockerMaven插件使用

微服务部署有两种方法:

(1)手动部署

首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚拟机并拷贝至JDK容器。

(2)通过Maven插件自动部署

对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这
里学习如何自动部署,这也是企业实际开发中经常使用的方法。

  1. 修改宿主机docker配置,配置远程访问
    1
    vim /lib/systemd/system/docker.service
    在[Service]下的ExecStart,增加如下配置即可
    1
    2
    3
    4
    5
    6
    [Service]
    Type=notify
    ExecStart=/usr/bin/dockerd
    ExecStart=
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    .....
  2. 刷新配置,重启服务
    1
    2
    3
    systemctl daemon‐reload
    systemctl restart docker
    docker start registry
  3. 在maven工程pom.xml中增加配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <build>
    <finalName>app</finalName>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
    <imageName>服务器IP:5000/${project.artifactId}:${project.version}</imageName>
    <baseImage>jdk1.8</baseImage>
    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
    <resources>
    <resource>
    <targetPath>/</targetPath>
    <directory>${project.build.directory}</directory>
    <include>${project.build.finalName}.jar</include>
    </resource>
    </resources>
    <dockerHost>http://服务器IP:2375</dockerHost>
    </configuration>
    </plugin>
    </plugins>
    </build>
    以上配置会自动生成Dockerfile
    1
    2
    3
    FROM jdk1.8
    ADD app.jar /
    ENTRYPOINT ["java","‐jar","/app.jar"]

在项目根目录中执行mav命令
mvn clean package docker:build  ‐DpushImage

等待完成上传之后,游览器输入地址http://你的服务器IP:5000/v2/_catalog看到
{“repositories”:[“hello-world”,”你的Maven项目名”]}