Centos7安装Docker并部署SpringBoot项目到容器

2 篇文章 0 订阅
1 篇文章 0 订阅

Centos下安装Docker

参考docker安装博客地址

安装需要的软件包

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

设置yum源(任选一个)

#(中央仓库)
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
#(阿里仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看仓库中所有docker版本

yum list docker-ce --showduplicates | sort -r

在这里插入图片描述
安装docker

#安装命令:yum install docker-ce-版本号
yum install docker-ce-18.03.1.ce

启动docker

systemctl start docker

设置开机启动

systemctl enable docker

查看docker版本信息

docker version

在这里插入图片描述

Docker开启远程Remote API访问2375端口

通过Idea打包maven项目后push镜像到远程docker服务

参考博客地址

编辑文件

 vim /usr/lib/systemd/system/docker.service

在原文件ExecStart基础上新增内容

#ExecStart=/usr/bin/dockerd #原ExecStart文件内容
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

修改后截图如下(红色选框中为新增):
在这里插入图片描述
重启docker服务和docker后台守护进程

#后台守护进程
systemctl daemon-reload
#docker容器服务
systemctl restart docker

未开启Remote 2375端口情况前

http://192.168.116.134:2375/info

在这里插入图片描述
已开启Remote 2374端口后

http://192.168.116.134:2375/info

在这里插入图片描述

Idea打包Maven项目并push镜像到docker远程容器

1.将maven项目文件上传至centos下,且centos环境已配置java和maven,执行mvn package后mvn package docker:build

2.Idea中配置docker插件,打包后push镜像到远程docker服务器

docker文件位置

src/main/docker/dockerfile

docker文件内容(dockerfile文件名称应全为小写)

# 基础镜像使用java
FROM openjdk:8-jdk-alpine
# 作者
MAINTAINER xxx <xxx@xxxx.com>
# VOLUME 指定了临时文件目录为/tmp(其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp)
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar 【注意:此处jar包名必须与mvn package打包出jar的包名一致】
ADD memo_project-1.0.jar app.jar
#ENTRYPOINT 的 Exec 格式用于设置容器启动时要执行的命令及其参数
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

pom文件中新增docker插件

<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>

                <!--将插件绑定在某个phase执行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <!--指定生成的镜像名-->
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>

                    <!-- 指定 Dockerfile 路径  ${project.basedir}:项目根路径下-->
                    <!--<dockerDirectory>${project.basedir}</dockerDirectory>-->
                    <dockerDirectory>src/main/docker</dockerDirectory>

                    <!--指定远程 docker api地址-->
                    <dockerHost>http://192.168.116.134:2375</dockerHost>

                    <!-- 这里是复制 war 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--war 包所在的路径  此处配置的 即对应 target 目录-->
                            <directory>${project.build.directory}</directory>
                            <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>

                    <!-- 以下两行是为了docker push到DockerHub使用的。 -->
                    <!--<serverId>docker-hub</serverId>-->
                    <!--<registryUrl>https://index.docker.io/v1</registryUrl>-->
                </configuration>
            </plugin>

注意:

我这里指定finalName,在Idea打包package正常,通过[1]方式,在centos下执行mvn package打包报错找不到warName

<!--<finalName>${pom.projectname}</finalName> (通过非Idea打包报错,执行mvn package 报异常,找不到warName)-->

若取消finalName属性,springBoot项目package打包默认是[project.artifactId-version] ,可能导致打包为docker-image镜像文件报错

<!--<version>1.0-SNAPSHOT</version>--> #原pom文件中版本格式
 <version>1.0</version>

- 打包

Centos服务器下执行maven项目打包

#centos环境,进入项目pom.xml文件同级目录,执行以下命令
mvn package 

Idea中使用maven插件打包
在这里插入图片描述
Idea中docker构建镜像成功
由于已经在maven的docker插件中配置对’package’监听,打包完成后自动进行构建docker的镜像文件
在这里插入图片描述
在centos的控制台查看当前已构建完成镜像文件

docker images

在这里插入图片描述

在docker容器运行已构建好镜像(springBoot项目)

docker run -p 8080:8081 -t springboot/folder

项目运行成功截图
在这里插入图片描述
查询正在运行容器

docker ps

在这里插入图片描述
停止正在运行容器

#命令: docker stop CONTAINER_ID(容器标识 )
docker stop 00d30bd92ade

补充: docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint quirky_allen

参考地址

解决措施:

#重启docker服务
systemctl restart docker

Idea中配置查看远程docker服务信息

Idea安装docker插件
在这里插入图片描述
配置成功截图
在这里插入图片描述
Idea中查看docker容器的信息
在这里插入图片描述


异常错误记录

【1】docker启动时报错Error response from daemon: driver failed programming external connectivity on endpoint *
在这里插入图片描述
处理方式:

systemctl restart docker

参考博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值