写在前面
最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本解决不了问题,纯属扯淡。作为一个技术人,经过不断的研究和实践,终于实现了在Spring Tool Site中使用Maven将SpringBoot项目打包成Docker镜像,并将镜像文件上传到Harbor仓库。
注意:本文使用的SpringBoot开发环境是Spring Tool Site,IDEA开发环境对SpringBoot项目的打包操作和将Docker镜像上传到Harbor仓库操作相同,大家也可参考此文章进行实现。
一、系统环境 1.服务器环境
操作系统为:CentOS-8-x86_64-1905-dvd1.iso
2.开发环境
Windows10操作系统
二、服务器安装Docker环境 安装Docker环境 1.添加阿里云镜像
1 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.安装containerd
1 dnf install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
3.安装Docker
1 yum install docker-ce docker-ce-cli
4.设置开机自启Docker并启动Docker
1 2 systemctl enable docker.service systemctl start docker.service
5.查看Docker版本
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 28 [root@binghe ~] Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b Built: Wed Mar 11 01:27:04 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.8 API version: 1.40 (minimum version 1.12) Go version: go1.12.17 Git commit: afacb8b Built: Wed Mar 11 01:25:42 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683
也可以将阿里云Docker镜像仓库添加到/etc/docker/daemon.json文件中,如下所示。
1 2 3 { "registry-mirrors" : ["https://zz3sblpi.mirror.aliyuncs.com" ] }
安装docker-compose环境 1.下载docker-compose文件
1 curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local /bin/docker-compose
2.为docker-compose文件赋予可执行权限
1 chmod a+x /usr/local /bin/docker-compose
3.查看docker-compose版本
1 2 3 4 5 [root@binghe ~] docker-compose version 1.25.5, build 8a1c60f6 docker-py version: 4.1.0 CPython version: 3.7.5 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
三、服务器安装Harbor私有仓库 1.下载Harbor的离线安装版本
1 wget https://github.com/goharbor/harbor/releases/download/v1.10.2/harbor-offline-installer-v1.10.2.tgz
2.解压Harbor的安装包
1 tar -zxvf harbor-offline-installer-v1.10.2.tgz
解压成功后,会在服务器当前目录生成一个harbor目录。
3.修改Harbor的配置
注意:这里,我将Harbor的端口修改成了1180,如果不修改Harbor的端口,默认的端口是80。
(1)修改harbor.yml文件。
1 2 cd harborvim harbor.yml
修改的配置项如下所示。
1 2 3 4 hostname: 192.168.0.10 http: port: 1180 harbor_admin_password: binghe123
(2)修改docker-compose.yml文件
修改的配置项如下所示。
(3)修改config.yml文件
1 2 cd common/config/registryvim config.yml
修改的配置项如下所示。
1 realm: http://192.168.0.10:1180/service/token
(4)修改daemon.json文件
修改/etc/docker/daemon.json文件,没有的话就创建,在/etc/docker/daemon.json文件中添加如下内容。
1 2 3 4 5 [root@binghe~] { "registry-mirrors" : ["https://zz3sblpi.mirror.aliyuncs.com" ], "insecure-registries" :["192.168.0.12:1180" ] }
也可以在服务器上使用 ip addr 命令查看本机所有的IP地址段,将其配置到/etc/docker/daemon.json文件中。这里,我配置后的文件内容如下所示。
1 2 3 4 { "registry-mirrors" : ["https://zz3sblpi.mirror.aliyuncs.com" ], "insecure-registries" :["192.168.0.0/16" ,"172.17.0.0/16" , "172.18.0.0/16" , "172.16.29.0/16" ] }
4.安装并启动harbor
配置完成后,输入如下命令即可安装并启动Harbor
5.登录Harbor并添加账户
安装成功后,在浏览器地址栏输入http://192.168.0.10:1180打开链接,如下图所示。
输入用户名admin和密码binghe123,登录系统,如下图所示
接下来,我们选择用户管理,添加一个管理员账户,为后续在Spring Tool Site中打包Docker镜像和上传Docker镜像做准备。添加账户的步骤如下所示。
此处填写的密码为Binghe123。
点击确定后,如下所示。
此时,账户binghe还不是管理员,此时选中binghe账户,点击“设置为管理员”。
此时,binghe账户就被设置为管理员了。到此,Harbor的安装就完成了。
如果安装Harbor后,大家需要修改Harbor的端口,首先按照修改Harbor的配置的步骤修改Harbor的端口配置,将配置项中的1180端口修改成你需要的端口。接下来,需要重启Docker和Harbor。
重启Docker
1 2 systemctl daemon-reload systemctl restart docker.service
重启Harbor
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [root@binghe harbor] Stopping harbor-log ... done Removing nginx ... done Removing harbor-portal ... done Removing harbor-jobservice ... done Removing harbor-core ... done Removing redis ... done Removing registry ... done Removing registryctl ... done Removing harbor-db ... done Removing harbor-log ... done Removing network harbor_harbor [root@binghe harbor] prepare base dir is set to /mnt/harbor Clearing the configuration file: /config/log /logrotate.conf Clearing the configuration file: /config/nginx/nginx.conf Clearing the configuration file: /config/core/env Clearing the configuration file: /config/core/app.conf Clearing the configuration file: /config/registry/root.crt Clearing the configuration file: /config/registry/config.yml Clearing the configuration file: /config/registryctl/env Clearing the configuration file: /config/registryctl/config.yml Clearing the configuration file: /config/db/env Clearing the configuration file: /config/jobservice/env Clearing the configuration file: /config/jobservice/config.yml Generated configuration file: /config/log /logrotate.conf Generated configuration file: /config/nginx/nginx.conf Generated configuration file: /config/core/env Generated configuration file: /config/core/app.conf Generated configuration file: /config/registry/config.yml Generated configuration file: /config/registryctl/env Generated configuration file: /config/db/env Generated configuration file: /config/jobservice/env Generated configuration file: /config/jobservice/config.yml loaded secret from file: /secret/keys/secretkey Generated configuration file: /compose_location/docker-compose.yml Clean up the input dir [root@binghe harbor] Creating network "harbor_harbor" with the default driver Creating harbor-log ... done Creating harbor-db ... done Creating redis ... done Creating registry ... done Creating registryctl ... done Creating harbor-core ... done Creating harbor-jobservice ... done Creating harbor-portal ... done Creating nginx ... done [root@binghe harbor] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
四、Windows系统安装并配置Docker 1.安装Docker
在Windows上安装Docker环境就比较简单了,到Docker官网https://www.docker.com/products/ 下载Docker Desktop Installer.exe安装包,直接双击安装即可。
2.修改docker下载的镜像存放到其他盘
(1)在D盘创建一个存放docker虚拟机的文件夹,如下面图中所示:
(2)创建好以后,找到桌面右下角的docker图标,在上面点右键,选择settings,打开docker的设置界面。
(3)然后在docker的设置界面中点击Resources选项下的ADVANCED设置选项,即高级设置。
(4)在高级设置中,我们可以看到有一个disk image location,即硬盘镜像的存放位置。默认是在C盘,点击旁边的browse按钮
(5)这个时候会弹出文件夹选择窗口,依次找到此电脑->D盘->docker文件夹,然后点击确定。然后回到设置界面,会看到镜像文件的位置变成了我们设置的文件夹。点击设置界面右下角的apply应用设置。
(6)选择完成后,点击右下角的Apple&Restart按钮重启Docker。
(7)重启完成后,我们打开D盘的docker下的DockerDesktop文件夹,会发现docker的虚拟机文件已经转移到了这个目录。如下面图中所示。在前面的经验中我们已经说过,在windows平台上,docker是通过hyper-v打开一个docker虚拟机来提供docker服务。因此随着你下载的镜像越多,这个docker镜像文件会越来越大。因此你一定要及时清理不使用的docker虚拟机里的镜像。
3.打开本地Docker的2375端口
打开方式:右击右下角的小鲸鱼(我用的是docker for window),点击settings如下图
4.配置Docker
(1)在cmd命令行输入如下ip config命令来查看本地的IP地址,如下所示。
(2)配置Docker
选择Docker Engine选项,并在右侧的文本框中输入如下信息。
1 2 3 4 5 6 7 8 9 10 11 { "registry-mirrors" : [ "https://zz3sblpi.mirror.aliyuncs.com" ], "insecure-registries" : [ "192.168.0.0/16" , "172.18.14.0/16" ], "debug" : true , "experimental" : false }
如下图所示。
五、配置Harbor 使用binghe账号和密码Binghe123登录Harbor,并新建一个test项目。
此时,在Harbor中的项目就创建成功了。
六、SpringBoot项目配置Docker 创建SpringBoot项目比较简单,我这里就不再赘述如何创建SpringBoot项目,我们直接从SpringBoot项目配置Docker开始说。
1.创建Dockerfile文件
在需要运行的maven模块(SpringBoot启动类所在的模块)根目录下创建Dockerfile文件,内容如下所示。
1 2 3 4 5 FROM java:8 MAINTAINER binghe VOLUME /tmp ADD target/*jar app.jar ENTRYPOINT [ "java" , "-Djava.security.egd=file:/dev/./urandom" , "-jar" , "/app.jar" ]
2.修改pom.xml文件
在需要运行的maven模块(SpringBoot启动类所在的模块)的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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 <properties > <docker.repostory > 192.168.0.10:1180</docker.repostory > <docker.registry.name > test</docker.registry.name > <docker.image.tag > 1.0.1</docker.image.tag > <docker.maven.plugin.version > 1.4.10</docker.maven.plugin.version > </properties > <build > <finalName > binghe-starter</finalName > <plugins > <plugin > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-maven-plugin</artifactId > </plugin > <plugin > <groupId > com.spotify</groupId > <artifactId > dockerfile-maven-plugin</artifactId > <version > ${docker.maven.plugin.version}</version > <executions > <execution > <id > default</id > <goals > <goal > build</goal > <goal > push</goal > </goals > </execution > </executions > <configuration > <contextDirectory > ${project.basedir}</contextDirectory > <useMavenSettingsForAuth > useMavenSettingsForAuth>true</useMavenSettingsForAuth > <repository > ${docker.repostory}/${docker.registry.name}/${project.artifactId}</repository > <tag > ${docker.image.tag}</tag > <buildArgs > <JAR_FILE > target/${project.build.finalName}.jar</JAR_FILE > </buildArgs > </configuration > </plugin > </plugins > <resources > <resource > <directory > src/main/resources</directory > <targetPath > ${project.build.directory}/classes</targetPath > <includes > <include > **/*</include > </includes > <filtering > true</filtering > </resource > </resources > </build >
其中,几个重要的参数说明如下所示。
docker.repostory:Harbor仓库的地址,ip:port
docker.registry.name:上传的Docker镜像前缀,此前缀一定要和Harbor中的项目名称一致,表示打包后的Docker镜像会上传到Harbor的哪个项目中(重点,不然会报错)。
docker.image.tag:Docker镜像的标签,也就是版本。
docker.maven.plugin.version:Docker Maven插件的版本。
七、配置Maven 首先,我们查看下Spring Tool Site中配置的Maven,如下所示。
在Maven的setting.xml文件中添加如下配置。
1 2 3 4 5 6 7 8 <servers > <server > <id > 192.168.0.10:1180</id > <username > binghe</username > <password > Binghe123</password > </server > </servers >
其中,id就是Harbor仓库所在的服务器IP地址和端口号,username就是Harbor的用户名,password就是密码。这里我使用的是binghe账户。
八、配置Docker的config.json文件 注意:这里是个重点,网上很多文章中没有配置config.json文件,导致将Docker镜像push到Harbor仓库时抛出如下异常。
1 denied: requested access to the resource is denied
config.json文件在我电脑上所在的目录为C:\Users\binghe.docker。也就是说,它所在的目录为C:\Users目录下的当前用户目录下的.docker目录下。如下所示。
我们打开config.json文件,将文件中的auths部分修改成如下所示。
1 2 3 "auths" : { "192.168.0.10:1180" : {"username" :"itence_harbor" , "password" :"Itence123" } }
修改后的文件整体内容如下所示。
1 2 3 4 5 6 7 8 9 10 { "auths" : { "192.168.0.10:1180" : {"username" :"itence_harbor" , "password" :"Itence123" } }, "HttpHeaders" : { "User-Agent" : "Docker-Client/19.03.8 (windows)" }, "credsStore" : "desktop" , "stackOrchestrator" : "swarm" }
注意:如果不存在config.json文件,就在相应的目录下创建config.json文件,将上述配置写入config.json文件中。
九、运行测试 1.构建Docker镜像
在构建Docker镜像之前,我们先来查看下本地Docker中的镜像,如下所示。
可以看到,此时本地Docker中没有任何镜像。
接下来,在Spring Tool Site中,配置Maven Build,输入如下命令。
1 clean install -Dmaven.test.skip=true
如下所示。
接下来,右键Maven的pom.xml文件,点击Maven Build开始构建Docker镜像,构建成功后命令行会输出如下信息。
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 [INFO] Image will be built as 192.168.0.10:1180/test /binghe-starter:1.0.1 [INFO] [INFO] Step 1/5 : FROM java:8 [INFO] [INFO] Pulling from library/java [INFO] Image 5040bd298390: Pulling fs layer [INFO] Image fce5728aad85: Pulling fs layer [INFO] Image 76610ec20bf5: Pulling fs layer [INFO] Image 60170fec2151: Pulling fs layer [INFO] Image e98f73de8f0d: Pulling fs layer [INFO] Image 11f7af24ed9c: Pulling fs layer [INFO] Image 49e2d6393f32: Pulling fs layer [INFO] Image bb9cdec9c7f3: Pulling fs layer [INFO] Image 60170fec2151: Waiting [INFO] Image e98f73de8f0d: Waiting [INFO] Image 11f7af24ed9c: Waiting [INFO] Image 49e2d6393f32: Waiting [INFO] Image bb9cdec9c7f3: Waiting [INFO] Image fce5728aad85: Downloading [INFO] Image 76610ec20bf5: Downloading [INFO] Image 5040bd298390: Downloading [INFO] Image fce5728aad85: Verifying Checksum [INFO] Image fce5728aad85: Download complete [INFO] Image 76610ec20bf5: Verifying Checksum [INFO] Image 76610ec20bf5: Download complete [INFO] Image 60170fec2151: Downloading [INFO] Image 60170fec2151: Verifying Checksum [INFO] Image 60170fec2151: Download complete [INFO] Image e98f73de8f0d: Downloading [INFO] Image e98f73de8f0d: Verifying Checksum [INFO] Image e98f73de8f0d: Download complete [INFO] Image 5040bd298390: Verifying Checksum [INFO] Image 5040bd298390: Download complete [INFO] Image 5040bd298390: Extracting [INFO] Image 11f7af24ed9c: Downloading [INFO] Image 11f7af24ed9c: Verifying Checksum [INFO] Image 11f7af24ed9c: Download complete [INFO] Image bb9cdec9c7f3: Downloading [INFO] Image bb9cdec9c7f3: Verifying Checksum [INFO] Image bb9cdec9c7f3: Download complete [INFO] Image 49e2d6393f32: Downloading [INFO] Image 5040bd298390: Pull complete [INFO] Image fce5728aad85: Extracting [INFO] Image fce5728aad85: Pull complete [INFO] Image 76610ec20bf5: Extracting [INFO] Image 76610ec20bf5: Pull complete [INFO] Image 60170fec2151: Extracting [INFO] Image 60170fec2151: Pull complete [INFO] Image e98f73de8f0d: Extracting [INFO] Image e98f73de8f0d: Pull complete [INFO] Image 11f7af24ed9c: Extracting [INFO] Image 11f7af24ed9c: Pull complete [INFO] Image 49e2d6393f32: Verifying Checksum [INFO] Image 49e2d6393f32: Download complete [INFO] Image 49e2d6393f32: Extracting [INFO] Image 49e2d6393f32: Pull complete [INFO] Image bb9cdec9c7f3: Extracting [INFO] Image bb9cdec9c7f3: Pull complete [INFO] Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d [INFO] Status: Downloaded newer image for java:8 [INFO] ---> d23bdf5b1b1b [INFO] Step 2/5 : MAINTAINER binghe [INFO] [INFO] ---> Running in 5e56a3994a51 [INFO] Removing intermediate container 5e56a3994a51 [INFO] ---> 88d9d9c903cf [INFO] Step 3/5 : VOLUME /tmp [INFO] [INFO] ---> Running in 9a2a476fcb96 [INFO] Removing intermediate container 9a2a476fcb96 [INFO] ---> a4590174575b [INFO] Step 4/5 : ADD target/*jar app.jar [INFO] [INFO] ---> e9de2bd74c98 [INFO] Step 5/5 : ENTRYPOINT [ "java" , "-Djava.security.egd=file:/dev/./urandom" , "-jar" , "/app.jar" ] [INFO] [INFO] ---> Running in 13219282bd45 [INFO] Removing intermediate container 13219282bd45 [INFO] ---> f6af061b2f2f [INFO] [Warning] One or more build-args [JAR_FILE] were not consumed [INFO] Successfully built f6af061b2f2f [INFO] Successfully tagged 192.168.0.10:1180/test /binghe-starter:1.0.1 [INFO] [INFO] Detected build of image with id f6af061b2f2f [INFO] Building jar: D:\Workspaces\binghe-starter\target\binghe-starter-docker-info.jar [INFO] Successfully built 192.168.0.10:1180/test /binghe-starter:1.0.1 [INFO] [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ binghe-starter --- [INFO] Installing D:\Workspaces\binghe-starter\target\binghe-starter.jar to D:\Maven_Repository\.m2\repository\com\binghe\binghe-starter\1.0.0-SNAPSHOT\binghe-starter-1.0.0-SNAPSHOT.jar [INFO] Installing D:\Workspaces\binghe-starter\pom.xml to D:\Maven_Repository\.m2\repository\com\binghe\binghe-starter\1.0.0-SNAPSHOT\binghe-starter-1.0.0-SNAPSHOT.pom [INFO] Installing D:\Workspaces\\binghe-starter\target\binghe-starter-docker-info.jar to D:\Maven_Repository\.m2\repository\com\binghe\binghe-starter\1.0.0-SNAPSHOT\binghe-starter-1.0.0-SNAPSHOT-docker-info.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:55 min [INFO] Finished at: 2020-04-30T12:23:46+08:00 [INFO] ------------------------------------------------------------------------
接下来,再次查看下本地Docker中的镜像,如下所示。
1 2 3 4 C:\Users\binghe>docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.0.10:1180/test /binghe-starter 1.0.1 f6af061b2f2f 4 minutes ago 720MB java 8 d23bdf5b1b1b 3 years ago 643MB
接下来,我们可以输入如下命令运行Docker镜像。
1 docker run -d -p 8088:8088 f6af061b2f2f
接下来,输入命令docker ps 查看启动的容器,如下所示。
可以看到,使用Spring Tool Site中的Maven构建的Docker镜像运行成功。
2.将Docker镜像推送到Harbor仓库
在Spring Tool Site中将新增一项Maven Build,配置的命令如下所示。
接下来,右键pom.xml文件,选择Maven Build,并选择dockerfile:push选项,如下所示。
点击OK按钮,开始推送Docker镜像到Harbor仓库。
推送成功后,命令行会输出如下信息。
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 28 29 30 31 32 [INFO] --- dockerfile-maven-plugin:1.4.10:push (default-cli) @ binghe-starter --- [INFO] The push refers to repository [192.168.0.10:1180/test /binghe-starter] [INFO] Image b5a229480eb5: Preparing [INFO] Image 35c20f26d188: Preparing [INFO] Image c3fe59dd9556: Preparing [INFO] Image 6ed1a81ba5b6: Preparing [INFO] Image a3483ce177ce: Preparing [INFO] Image ce6c8756685b: Preparing [INFO] Image 30339f20ced0: Preparing [INFO] Image 0eb22bfb707d: Preparing [INFO] Image a2ae92ffcd29: Preparing [INFO] Image ce6c8756685b: Waiting [INFO] Image 30339f20ced0: Waiting [INFO] Image 0eb22bfb707d: Waiting [INFO] Image a2ae92ffcd29: Waiting [INFO] Image a3483ce177ce: Layer already exists [INFO] Image 6ed1a81ba5b6: Layer already exists [INFO] Image 35c20f26d188: Layer already exists [INFO] Image c3fe59dd9556: Layer already exists [INFO] Image a2ae92ffcd29: Layer already exists [INFO] Image 30339f20ced0: Layer already exists [INFO] Image 0eb22bfb707d: Layer already exists [INFO] Image ce6c8756685b: Layer already exists [INFO] Image b5a229480eb5: Pushing [INFO] Image b5a229480eb5: Pushed [INFO] 1.0.1: digest: sha256:174a170f229dd5a76fdf5a6fe7001a0066578334ada03edae699f4fb9537c3c5 size: 2212 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 31.002 s [INFO] Finished at: 2020-04-30T13:21:32+08:00 [INFO] ------------------------------------------------------------------------
此时,我们在Harbor的test项目下会发现多了一个镜像,如下所示。
十、特别说明 笔者是在Spring Tool Site中对SpringBoot项目构建Docker镜像,并将Docker镜像推送到Harbor仓库,这样方式同样适用于IDEA环境,笔者不再赘述。
如果是使用命令行构建并推送Docker镜像,需要在命令行登录Harbor,命令如下。
1 2 3 docker login 192.168.0.10:1180 Username:binghe password:Binghe123
接下来,在命令行输入如下命令构建Docker镜像。
1 mvn clean install -Dmaven.test.skip=true
将Docker镜像推送到Harbor仓库。
也可以使用docker命令将Docker镜像推送到Harbor仓库,如下所示。
1 docker push 192.168.0.10:1180/test /binghe-starter:1.0.1
使用docker命令将Docker镜像拉取到本地,如下所示。
1 docker pull 192.168.0.10:1180/test /binghe-starter:1.0.1
参考文章