构建私有镜像仓库
私有镜像仓库
开通镜像服务
登录阿里云开通容器镜像服务。点击管理控制台-》初次使用会提示开通,然后设置密码。
点击管理
1# 登录阿里云Docker Registry
2docker login --username=soulboy1990116 registry.cn-shanghai.aliyuncs.com
3
4# 从Registry中拉取镜像(拉取)
5[root@localhost ~]# docker pull registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world
6flask-hello-world: Pulling from abc1024/soulboy_images
7[root@localhost ~]# docker run -d -p 5000:5000 registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world
8Digest: sha256:8c4f6441a730d5abff5838bc5faa53ae97b3212fda67d6944cb75f76af1804be
9
10# 将镜像推送到Registry(推送)
11docker login --username=soulboy1990116 registry.cn-shanghai.aliyuncs.com
12# 将本地镜像8365e912bdbd 标记为 registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world
13docker tag 8365e912bdbd registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world
14# 推送镜像到阿里云镜像仓库
15docker push registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world
16The push refers to repository [registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images]
1754d6fee42f0f: Pushed
189bcf7e016add: Pushed
19ee0ebee0324c: Pushed
20a30cfc27bb5d: Pushed
21d22688b29911: Pushed
2208127eb3eb76: Pushed
23a637c551a0da: Pushed
242c8d31157b81: Pushed
257b76d801397d: Pushed
26f32868cde90b: Pushed
270db06dff9d9a: Pushed
28flask-hello-world: digest: sha256:8c4f6441a730d5abff5838bc5faa53ae97b3212fda67d6944cb75f76af1804be size: 2640
构建 SpringBoot 应用 docker 镜像
启动类添加 Controller 处理逻辑。http://localhost:8080/user/find
1@SpringBootApplication
2@Controller
3public class DockerDemoApplication {
4
5 public static void main(String[] args) {
6 SpringApplication.run(DockerDemoApplication.class, args);
7 }
8
9 @RequestMapping("/user/find")
10 @ResponseBody
11 public Object findUser(){
12 Map<String, String > map = new HashMap<>();
13 map.put("name", "soulboy");
14 map.put("age","29");
15 return map;
16 }
17}
maven 里面添加配置 pom.xml
Spotify 的 docker-maven-plugin 插件是用 maven 插件方式构建 docker 镜像的。
{project.build.finalName} ,缺省为 {project.artifactId}-${project.version}
1<properties>
2 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
4 <java.version>1.8</java.version>
5 <docker.image.prefix>soulboy</docker.image.prefix>
6 </properties>
7
8 <build>
9 <!--项目打包的名称-->
10 <finalName>docker-demo</finalName>
11 <plugins>
12 <!-- springboot插件-->
13 <plugin>
14 <groupId>org.springframework.boot</groupId>
15 <artifactId>spring-boot-maven-plugin</artifactId>
16 </plugin>
17 <!-- docker插件:将springboot应用打包成docker镜像-->
18 <plugin>
19 <groupId>com.spotify</groupId>
20 <artifactId>dockerfile-maven-plugin</artifactId>
21 <configuration>
22 <repository>${docker.image.prefix}/${project.artifactId}</repository>
23 <buildArgs>
24 <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
25 </buildArgs>
26 </configuration>
27 </plugin>
28 </plugins>
29 </build>
打包 SpringCloud 镜像并上传私有仓库并部署
Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像
创建 Dockerfile:默认是根目录,(可以修改为 src/main/docker/Dockerfile,如果修则需要制定路径)
在项目右键创建 Dockerfile
1# FROM <image>:<tag> 需要一个基础镜像,可以是公共的或者是私有的,后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
2FROM openjdk:8-jdk-alpine
3# VOLUME 配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
4VOLUME /tmp
5# ARG 设置编译镜像时加入的参数, ENV 是设置容器的环境变量
6ARG JAR_FILE
7# COPY : 只支持将本地文件复制到容器,并重命名为app.jar,还有个ADD更强大但复杂点
8COPY ${JAR_FILE} app.jar
9# ENTRYPOINT 容器启动时执行的命令
10ENTRYPOINT ["java","-jar","/app.jar"]
点击 Terminal
1Microsoft Windows [版本 10.0.17763.107]
2(c) 2018 Microsoft Corporation。保留所有权利。
3F:\Project\ImageTest\docker-demo>mvn install dockerfile:build
将打包好的本地镜像 push 到远程的私有仓库(阿里云)
1# 查看本地镜像发现 xdclass/docker-demo 已经打包完成
2C:\Users\soulboy>docker images
3REPOSITORY TAG IMAGE ID CREATED SIZE
4xdclass/docker-demo latest efb549968619 13 seconds ago 121MB
5openjdk 8-jdk-alpine a3562aa0b991 2 months ago 105MB
6hello-world latest fce289e99eb9 6 months ago 1.84kB
7
8# 登录鉴权
9docker login --username=soulboy1990116 registry.cn-shanghai.aliyuncs.com
10
11# 将本地镜像打标记
12docker tag efb549968619 registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:docker-demo
13
14# 推送镜像到阿里云镜像仓库
15docker push registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:docker-demo
在阿里云容器镜像管理查看
从阿里云容器镜像服务拉取镜像到本地 http://192.168.31.22/user/find
1docker login --username=soulboy1990116 registry.cn-shanghai.aliyuncs.com
2
3docker pull registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:[镜像版本号]
4
5docker pull registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:docker-demo
6
7docker run -d -p 80:8080 registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:docker-demo