Docker的使用-五、docker的File管理(案例构建一个java工程镜像。)

时间:2024-06-01 21:32:28
  1. Docker File是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

1、使用本地命令构建镜像

1.1、上传项目jar

  • 当前以部署一个普通的springboot项目为例。

    • 实际开发一般情况都是docker配合分布式+微服务项目
      • 第1步:上传一个springboot项目jar包到linux
      • 第2步:将jar包上传linux服务器/usr/local/docker-app/springboot_demo/目录,在jar包所在目录创建名为Dockerfile的文件
  • 创建目录命令

mkdir -p /usr/local/docker-app/springboot_demo/
  • 将jar包上传linux服务器/usr/local/docker-app/springboot_demo/目录

1.2、下载JDK镜像

  1. 一般使用openjdk镜像。
# 查看有哪些openjdk的镜像可以下载(拉取)
docker search openjdk #(不指定版本就是下载最新的)

# 拉取镜像
docker pull openjdk

1.3、创建构建文件

  1. 要构建到镜像中的jar文件需要和buildFile处于同一个目录。
# 使用vi编辑器进入Dockerfile
vi Dockerfile

# Dockerfile里面要写的内容
FROM openjdk:8
ADD springboot_demo01-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
EXPOSE 8761

1.4、语法解释

#指定基础镜像,这个需要根据自己配置的仓库上的版本写
FROM openjdk:8

#指定源包,赋值到容器,前者是你的jar包,后面是别名
ADD spring_boot_demo01-1.0-SNAPSHOT.jar app.jar

#指定容器启动时执行的命令
ENTRYPOINT ["java","-jar","/app.jar"]

#对外端口
EXPOSE 8080

1.5、构建镜像

# 语法:
docker build -f 构建文件 -t 镜像名称:TAG 相对目录(如果是镜像构建当前目录就是点)

# 示例:
docker build -f /usr/local/docker-app/springboot_demo/buildFile -t springbootdemo:1.0 .

1.6、启动

docker run --name springbootdemo -p 8080:8080 -d springbootdemo:1.0

1.7、浏览器访问:

在这里插入图片描述

2、使用IDEA构建镜像

1、修改Docker服务配置

vim /usr/lib/systemd/system/docker.service
  1. 编辑/usr/lib/systemd/system/docker.service内容,在ExecStart变量末尾,增加下述配置:
-H unix:///var/run/docker.sock -H 0.0.0.0:2375

参数说明

-H unix:///var/run/docker.sock : 开启一个对外主机服务,使用docker.sock文件管理。
-H 0.0.0.0:2375 : 允许什么客户端IP访问当前服务,当前服务对外暴露的端口号是什么。端口可自定义。

在这里插入图片描述

2、重启docker服务

# 重新加载配置
systemctl daemon-reload 

# 重新启动docker
systemctl restart docker

3、在IDEA项目POM依赖

  1. 新增plugin插件配置
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.2</version>
    <configuration>
        <imageName>springboot_demo:1.0</imageName>  <!--指定镜像名称 仓库/镜像名:标签-->
        <baseImage>openjdk:latest</baseImage> <!--指定基础镜像-->
        <dockerHost>http://192.168.126.10:2375</dockerHost>  <!-- 指定服务器仓库地址 -->
        <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint> <!-- 容器启动执行的命令 -->
        <exposes>
            <expose>8080</expose><!-- 发布端口 -->
        </exposes>
        <resources>
            <resource>
                <targetPath>/</targetPath> <!-- 指定要复制的目录路径,这里是当前目录 -->
                <directory>${project.build.directory}</directory> <!-- 指定要复制的根目录,这里是target目录 -->
                <include>${project.build.finalName}.jar</include> <!-- 指定需要拷贝的文件,这里指最后生成的jar包 -->
            </resource>
        </resources>
    </configuration>
</plugin>

4、配置构建构建docker镜像命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、查看镜像

在这里插入图片描述

6、创建并启动容器

在这里插入图片描述

7、浏览器器访问

在这里插入图片描述