一、首先准备好linux的docker环境
1.执行 yum install -y yum-utils 安装仓库管理工具

2.执行 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 执行阿里的镜像库

3.执行yum list docker-ce --showduplicates | sort -r 查看docker的版本有哪些

4.选择其中一个版本安装
yum install docker-ce-17.12.1.ce -y 这里我选择了相对老一点的版本17.12.1
5.docker的几个常用命令
#启动docker
systemctl start docker
#重启docker
systemctl restart docker
#停止docker
systemctl stop docker
#查看docker下的镜像
docker images
#查看docker正在运行的容器
docker ps
#查看docker所有容器
docker ps -a
#删除一个镜像的步骤 1.先查容器然后删除容器 2.再根据IMAGE ID删除镜像
#删除容器
docker rm 对应要删除的容器的CONTAINER ID
#删除镜像
docker rmi 对应要删除的镜像的IMAGE ID
二、idea打包springboot工程
1.对应工程的pom文件中加入如下配置
<build>
<finalName>video-order-service</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.3.RELEASE</version>
<configuration>
<mainClass>cn.net.zyx.OrderApp</mainClass>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
其中goal标签的repackage是必要的,如果不加就会发现打好的jar包只有几K很不对劲,试着启动就会报如下错误
video-order-service.jar中没有主清单属性
还有 mainClass 这个标签,有些时候不加再启动jar包的时候会报
could not find mainclass
这种找不到入口类的错误。
三、制作docker镜像
1.将打好的jar包传至linux的一个新建空目录下,再编写一个Dockerfile
FROM adoptopenjdk/openjdk8:latest
VOLUME /tmp
COPY video-order-service.jar /order-service.jar
ENTRYPOINT ["java","-jar","/order-service.jar"]
网上很多教程会在copy那里像下面这样写,这种写法只适用于在本地安装好docker的情况,我因为要用虚拟机所以就放弃了再win中安装docker
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
2.执行 docker build -t cloud/orderservice:1.0 . 命令封装成docker镜像,注意后面有个点,然后执行docker images 查看镜像。

3.启动镜像 执行 docker run -d --name order -p 9003:9003 95154646c353
order是我设置的容器名称
内外对应端口映射为9003
后面那一串是对应的IMAGE ID
[root@centos1 appTest]# docker run -d --name order -p 9003:9003 95154646c353
0aa5575058e30494fffb6b40bf19e331f25004646d338b245bb10f5643e37f27
会产生一串字符这个可以查对应日志 执行命令
docker logs 0aa5575058e30494fffb6b40bf19e331f25004646d338b245bb10f5643e37f27
查看对应的日志,如果日志只有一行说明这个镜像有问题
注意: 如果单独启动jar包没问题再做成镜像启动后就有问题,那说明Dockerfile写的有问题,仔细检查。
四、上传至私有镜像库
我是用阿里云的容器镜像服务创建了一个个人实例,再添加命名空间和库名称做的。这个服务好像是免费的,亦或是因为我买了阿里云的ECS服务器。

该博客详细介绍了如何在Linux环境下配置Docker,使用Idea打包SpringBoot应用,创建Docker镜像,并将其上传至私有镜像库。步骤包括安装Docker,配置阿里云镜像源,打包SpringBoot工程,编写Dockerfile,启动及检查Docker容器,最后在阿里云容器镜像服务中上传镜像。
853

被折叠的 条评论
为什么被折叠?



