Dockerfile


一、Dockerfile是什么?

Dockerfile 是一个文本文档,其中包含用户可以在命令行上调用的所有命令,用于组装镜像。它用于通过从 Dockerfile 读取指令来自动构建镜像。Dockerfile 包含有关如何构建 Docker 镜像的指令。这些指令按顺序执行,每个指令都会在镜像中创建一个新的层。

通俗来说,Dockerfile 是一个文本文件,其中包含了一系列命令,这些命令告诉 Docker 如何自动构建一个容器镜像。这个容器镜像可以包含操作系统、应用程序和所有所需的依赖项。Docker 根据 Dockerfile 中的命令逐步执行构建过程,每个命令都会创建一个新的层,最终形成一个完整的容器镜像。这个容器镜像可以用于启动容器实例,实现应用程序的隔离和部署。因此,Dockerfile 是定义容器镜像的蓝图,使容器的创建和分发变得更加简单和可重复。

二、dockerfile

创建文件hello,编辑内容

代码如下(示例):

FROM redis
MAINTAINER OHB

运行Dockerfile

docker build -t 镜像名称:版本(tag) -f 文件名称 .

Dockerfile文件常用指令

FROM 指定基础镜像

FROM指令初始化一个新的构建阶段,并为后续指令设置基础镜像。因此,有效的 Dockerfile 必须以 FROM 指令开头。该镜像可以是任何有效的镜像–很容易通过从Public Repositories(镜像仓库) 拉取一个镜像。
FROM类似于Java中extends关键字继承于基础镜像,即FROM之后的内容都依赖于此基础镜像。

格式

格式:
  FROM 镜像名称
  FROM 镜像名称:
  FROM 镜像名称@
注:
  tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像

案例

FROM mysql:5.6
FROM java:8

MAINTAINER指定维护者信息

MAINTAINER指令用于指定维护者的信息,用于为Dockerfile署名。

格式

MAINTAINER 名字

案例

MAINTAINER LYX

ADD 复制文件

将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。

格式

ADD src … dest
ADD [“src”,… “dest”] 用于支持包含空格的路径

案例

ADD target/springboot-dockerfile-1.0-SNAPSHOT.jar /app.jar

将本机target/springboot-dockerfile-1.0-SNAPSHOT.jar文件拷贝到容器内/app.jar

ENTRYPOINT 入口点

ENTRYPOINT 允许您配置将作为可执行文件运行的容器。用ENTRYPOINT的exec形式来设置相当稳定的默认命令和参数,然后使用CMD的任何一种形式来设置更可能更改的其他默认值。

注: 一般在制作一些执行就关闭的容器中会使用。

格式

ENTRYPOINT [“executable”, “param1”, “param2”] (可执行文件, 优先)
ENTRYPOINT command param1 param2 (shell内部命令)

ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。

案例

ENTRYPOINT 是 Dockerfile 中的一条指令,它用于定义容器启动时要执行的默认命令。

ENTRYPOINT ["java","-jar","/app.jar"]

这意味着当你运行这个 Docker 容器时,它将启动一个 Java 程序,并执行 /app.jar 这个 Java 可执行 JAR 文件。

EXPOSE

指定于暴露的端口。

格式

EXPOSE […]

案例

EXPOSE 9091

VOLUME 指定挂载点

使用指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可以共享给其它容器。

格式

VOLUME 文件路径

案例

VOLUME /tmp

CMD

The main purpose of a CMD is to provide defaults for an executing container. These defaults can include an executable, or they can omit the executable, in which case you must specify an ENTRYPOINT instruction as well

linux中配置远程访问docker

打开文件

vim /lib/systemd/system/docker.service

在这里插入图片描述

修改

在这里插入图片描述

重启docker

[root@localhost df]# systemctl daemon-reload
[root@localhost df]# systemctl restart docker.service

测试2375端口是否有效

[root@localhost df]# netstat -nplt|grep 2375
tcp6       0      0 :::2375                 :::*                    LISTEN      110686/dockerd      
[root@localhost df]#

curl测试服务是否启动

在这里插入图片描述

开放2375端口

[root@localhost df]# firewall-cmd --add-port=2375/tcp --permanent 
success
[root@localhost df]# firewall-cmd --reload
success
[root@localhost df]# firewall-cmd --list-ports 
3306/tcp 2375/tcp

三、idea安装配置docker插件

1.引入库

安装插件
image-20231010104702112
image-20231010104849791
image-20231010105023159


四、springboot整合Dockerfile

maven是什么?

项目的全生命周期管理工具
image-20231010110448429

配置 pom

POM: Project Object Model

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wnhz.springboot</groupId>
    <artifactId>hello-docker</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <!-- dependencemanagement :maven的继承特性-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.13</version>
    </parent>

    <!-- 依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- springboot打包插件--->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

image-20231010110959948


五、linux安装JDK

/usr/local/software/jdk

上传jdk

image-20231010140654436
解压

tar -zxvf   jdk-8u341-linux-x64.tar.gz

配置

JAVA_HOME, PATH, CLASS_PATH

编辑/etc/profile文件

vim /etc/profile
JAVA_HOME=/usr/local/software/jdk/jdk1.8.0_341
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
source /etc/profile

测试jdk

java -version

image-20231010141730786
上传jar
开启指定端口

[root@localhost jdk1.8.0_341]# firewall-cmd --add-port=9090/tcp --permanent 

[root@localhost jdk1.8.0_341]# firewall-cmd --reload 

运行

 java -jar hello-docker-1.0-SNAPSHOT.jar

springboot整合Dockerfile

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值