DockerFile语法讲解

2023-11-11

Docker官网:https://docs.docker.com/
Docker的github地址:https://github.com/moby/moby

Dockerhub官网
https://registry.hub.docker.com

如果docker官方registry拉取镜像速度很慢,可以尝试daocloud提供的加速器服务
https://dashboard.daocloud.io/mirror

dockerfile是什么?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明

基于Dockerfile构建镜像可以使用docker build命令。docker build命令中使用-f可以指定具体的dockerfile文件

例如: 下面基于CentOS基础镜像构建nginx容器

FROM centos
MAINTAINER LeSheng
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
  • 创建网站index.htnl文件
vim index.html
<html>
<head>
        <title>page added to dockerfile</title>
</head>
<body>
        <h1>i am in df_test </h1>
</body>
</html>

dockerfile的构建过程

从基础镜像运行一个容器

执行一条指令,对容器做出修改

执行类似docker commit 的操作,提交一个新的镜像层

再基于刚提交的镜像运行一个新的容器

执行dockerfile中的下一条指令,直至所有指令执行完毕

dockerfile中常见的字段详解

(1)FROM

基础镜像,必须是可以下载下来的,定制的镜像都是基于 FROM 的镜像,这里的 centos就是定制需要的基础镜像。后续的操作都是基于centos镜像。

(2)MAINTAINER

指定镜像的作者信息

(3)RUN

指定在当前镜像构建过程中要运行的命令
包含两种模式

1、Shell
RUN (shell模式,这个是最常用的,需要记住)
RUN echo hello

2、exec模式
RUN “executable”,“param1”,“param2”
RUN [“/bin/bash”,”-c”,”echo hello”]
等价于/bin/bash -c echo hello

(4)EXPOSE指令

仅仅只是声明端口。
作用:
1、帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
2、在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

3、可以是一个或者多个端口,也可以指定多个EXPOSE

格式:EXPOSE <端口1> [<端口2>…]

(5)CMD

类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
1、CMD 在docker run 时运行
2、RUN 是在 docker build构建镜像时运行的

作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。

(6)ENTERYPOINT

类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 entrypoint指令指定的程序。
优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
格式:

ENTERYPOINT [“executable”,“param1”,“param2”] (exec模式)
ENTERYPOINT command (shell模式)

ENTERYPOINT可以搭配 CMD 命令使用:一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参,以下示例会提到。

示例:
假设已通过 Dockerfile 构建了 nginx:test 镜像:

FROM nginx
ENTRYPOINT [“nginx”, “-c”] # 定参
CMD [“/etc/nginx/nginx.conf”] # 变参

1、不传参运行
$ docker run nginx:test

容器内会默认运行以下命令,启动主进程。
nginx -c /etc/nginx/nginx.conf

2、传参运行
$ docker run nginx:test -c /etc/nginx/new.conf
容器内会默认运行以下命令,启动主进程(/etc/nginx/new.conf:假设容器内已有此文件)
nginx -c /etc/nginx/new.conf

(7)COPY

COPY 源文件地址 目标路径地址
COPY[“源文件路径地址”…“目标路径地址”]

复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

格式:
COPY [–chown=user:group] <源路径1>… <目标路径>
COPY [–chown=user:group] [“<源路径1>”,… “<目标路径>”]

[–chown=user:group]:可选参数,用户改变复制到容器内文件的拥有者和属组。

<源路径>:源文件或者源目录,这里可以是通配符表达式,其通配符规则要满足 Go 的 filepath.Match 规则。例如:

COPY hom* /mydir/
COPY hom?.txt /mydir/

<目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。

(8)ADD

ADD 源文件地址 目标路径地址
ADD [“源文件地址”…“目标路径地址”]

ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:

ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。

ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

**ADD vs COPY**
ADD包含类似tar的解压功能
如果单纯复制文件,dockerfile推荐使用COPY

例子;
替换/usr/share/nginx下的index.html

cd /root/dockerfile/test1
cat  dockerfile
FROM centos
MAINTAINER LeSheng
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
vim index.html
<html>
<head>
        <title>page added to dockerfile</title>
</head>
<body>
        <h1>i am in df_test </h1>
</body>
</html>
docker build -t="dockerfile/copy:v1" .
docker run -d -p 80 --name html3 dockerfile/copy:v1
docker ps | grep html3
显示如下:
478868402ac4        dockerfile/copy:v1                                  "/usr/sbin/nginx -g …"   15 seconds ago      Up 12 seconds       0.0.0.0:32771->80/tcp   html3
curl 192.168.40.180:32771
显示的就是替换后的页面
<html>
<head>
        <title>page added to dockerfile</title>
</head>
<body>
        <h1>i am in df_test </h1>
</body>
</html>

(9)VOLUME

定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
作用:
1、避免重要的数据,因容器重启而丢失,这是非常致命的。
2、避免容器不断变大。
格式:
VOLUME [“<路径1>”, “<路径2>”…]
VOLUME <路径>
在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。

VOLUME [“/data”]

(10)WORKDIR

指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。
docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
格式:
WORKDIR <工作目录路径>

WORKDIR /path/to/workdir
(填写绝对路径)

(11 )ENV

设置环境变量
ENV key value
ENV key=value

以下示例设置 NODE_VERSION =6.6.6, 在后续的指令中可以通过 $NODE_VERSION 引用:
ENV NODE_VERSION 6.6.6

RUN curl -SLO “https://nodejs.org/dist/v$NODE_VERSION/node-vKaTeX parse error: Expected 'EOF', got '&' at position 36: …64.tar.xz" \ &̲& curl -SLO "ht…NODE_VERSION/SHASUMS256.txt.asc”

(12)USER

用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。
格式:
USER <用户名>[:<用户组>]

USER daemon
USER nginx
USER user
USER uid
USER user:group
USER uid:gid
USER user:gid
USER uid:group

(13)ONBUILD

用于延迟构建命令的执行。简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这时执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。
格式:
ONBUILD <其它指令>

为镜像添加触发器
当一个镜像被其他镜像作为基础镜像时需要写上OBNBUILD
会在构建时插入触发器指令

例:演示ONBUILD指令

cat index.html
<html>
<head>
        <title>page added to dockerfile</title>
</head>
<body>
        <h1>i am in df_test </h1>
</body>
</html>
vim dockerfile
FROM centos
MAINTAINER LESHENG
RUN yum install wget -y
RUN yum install nginx -y
ONBUILD COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
docker build -t="onbuild-nginx:v1" .
docker run -d --name html4 -p 80 onbuild-nginx:v1
docker ps | grep html4
显示如下:
65f4a5be9355        onbuild-nginx:v1                                    "/usr/sbin/nginx -g …"   14 seconds ago      Up 11 seconds       0.0.0.0:32772->80/tcp   html4
curl 192.168.40.180:32772

显示还是以前nginx默认的内容,没有被替换,表示ONBUILD这个指令后面的COPY没有生效

还是在刚在路径下构建新的镜像

vim dockerfile
FROM onbuild-nginx:v1
MAINTAINER xianchao
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
EXPOSE 80
docker build -t="onbuild-nginx1" .
docker run -d --name htm5 -p 80 onbuild-nginx1
docker ps | grep htm5
显示如下:
e56542310692        onbuild-nginx1                                      "/usr/sbin/nginx -g …"   12 seconds ago      Up 8 seconds        0.0.0.0:32773->80/tcp   htm5
curl 192.168.40.180:32773


显示如下:
<html>
<head>
        <title>page added to dockerfile</title>
</head>
<body>
        <h1>i am in df_test </h1>
</body>
</html>

显示的就是已经重新构建的镜像,页面就是替换之后的了,说明我们基于ONBUILD指令的镜像作为基础镜像,在构建镜像,会触发ONBUILD后面的COPY命令运行

(14)LABEL

LABEL 指令用来给镜像添加一些元数据(metadata),以键值对的形式,语法格式如下:
LABEL <key>=<value> <key>=<value> <key>=<value> …
比如我们可以添加镜像的作者:
LABEL org.opencontainers.image.authors=“LESHENG”

(15)HEALTHCHECK

用于指定某个程序或者指令来监控 docker 容器服务的运行状态。
格式:
HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令

HEALTHCHECK [选项] CMD <命令> : 这边 CMD 后面跟随的命令使用,可以参考 CMD 的用法。

(16)ARG

构建参数,与 ENV 作用一至。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量

构建命令 docker build 中可以用 --build-arg <参数名>=<值> 来覆盖。
格式:

ARG <参数名>[=<默认值>]

dockerfile构建nginx镜像

  • 创建dockerfile的文件存放目录
mkdir dockerfile
cd dockerfile/
wget https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
vim dockerfile
  • 编写dockerfile文件
FROM centos
MAINTAINER LESHENG
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
  • 编辑默认文件内容
    vim index.html
<html>
<head>
        <title>page added to dockerfile</title>
</head>
<body>
        <h1>Hello,My Name is LESHENG,Nice to mett you </h1>
</body>
</html>
  • 构建镜像:
docker build -t="lesheng/nginx:v1" .
  • 查看镜像是否构建成功:
docker images | grep nginx
显示如下说明镜像部署成功:
dockerfile/nginx   latest        baee97a76499   About a minute ago   344MB
  • 基于刚才的镜像启动容器:
docker run -d  -p 80 --name html2 lesheng/nginx:v1
  • 查看容器具体信息可按如下命令:
[docker ps | grep html
bdbe140d5dc9   leshseng/nginx:v1                                   "/usr/sbin/nginx -g …"   17 seconds ago   Up 15 seconds   0.0.0.0:49154->80/tcp, :::49154->80/tcp   html2
  • 查看容器里部署的nginx网站的内容:
curl http://192.168.0.180:49154
显示如下:
<html>
<head>
        <title>page added to dockerfile</title>
</head>
<body>
        <h1>Hello,My Name is LESHENG,Nice to meet you </h1>
</body>
</html>

注意:ENTRYPOINT [“/usr/sbin/nginx”,“-g”,“daemon off;”]
表示容器运行时,自动启动容器里的nginx服务

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DockerFile语法讲解 的相关文章

  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • docker 容器无法启动,因为现有的 pid 文件

    当我启动 docker 容器时 它会失败 因为现有的 pid 文件 root newhope sergio docker logs sharp shockley httpd pid 1 already running httpd pid 1
  • 使用 Docker 文件分配附加功能

    我需要部署 Docker 映像 但我只想使用 Docker run 命令而不使用其任何参数 我想在运行容器时分配特殊权限 这是我的 Docker 运行命令 docker run cap add SYS ADMIN cap add DAC R
  • Kubernetes - 尝试部署时“安装卷失败”

    我部署了第一个容器 我得到了信息 deployment apps frontarena ads deployment created 但后来我看到我的容器创建陷入等待状态 然后我看到日志使用kubectl describe pod fron
  • 您可以将 Docker 映像直接拉入 IBM Cloud Kubernetes 集群吗?

    TL DR 抱歉 如果这是基础知识 我正在学习 Kubernetes 我尝试在 IBM Cloud 中创建 Kubernetes 部署 但失败了 该部署在我的本地 minikube 上运行良好 但在 IBM Cloud 中失败 我是否需要使
  • 无法连接到 macOS 上的 Docker 守护进程

    我通常更喜欢使用brew 来管理我的OSX 上的应用程序 我能够安装 docker docker compose 和 docker machine docker version Docker version 17 05 0 ce build
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 容器中的 JVM 计算处理器错误?

    最近我又做了一些研究 偶然发现了这一点 在向 OpenJDK 团队抱怨之前 我想看看是否有其他人观察到这一点 或者不同意我的结论 因此 众所周知 JVM 长期以来忽略了应用于 cgroup 的内存限制 众所周知 现在从 Java 8 更新某
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何判断我是否通过脚本登录到私有 Docker 注册表?

    如何判断我是否通过脚本登录到私有 Docker 注册表服务器 换句话说 有docker login some registry com已成功运行 并且仍然有效 注意 我问的是任意私有注册表 而不是docker io注册表 如果 docker
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • Docker Compose 保持容器运行

    我想使用 docker compose 启动一个服务并保持容器运行 这样我就可以通过 docker检查 获取它的IP地址 然而 容器总是在启动后立即退出 我尝试将 command sleep 60 和其他内容添加到 docker compo
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • 将 nvidia 运行时添加到 docker 运行时

    我正在运行虚拟机GCP配备特斯拉 GPU 并尝试部署一个PyTorch基于应用程序使用 GPU 加速 我想让 docker 使用这个 GPU 可以从容器访问它 我设法在主机上安装了所有驱动程序 并且该应用程序在那里运行良好 但是当我尝试在
  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • 热重载在docker中运行的java程序

    我开发了一个java程序 应该在docker中运行 然而 我在调试docker中运行的java程序时遇到了很多痛苦 我在网上搜索 一些教程提出了像 spring dev tools 这样的工具 因为我的java程序是基于spring boo
  • 如何管理AWS ECS中docker镜像的版本?

    AWS ECS 服务指向一个任务定义 其中包含 docker 镜像的名称 包括标签 因此 当我创建新版本的 docker 映像时 我有两种可能性 将任务定义更新到新版本 然后更新服务以指向任务定义的新版本 使用一些标签指向最后一个版本 假设
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的

随机推荐

  • WKWebView设置请求头HTTPHeaderField

    WKWebView HTTPHeaderField WKWebView的请求头添加字段 系统的NSMutableHTTPURLRequest类提供了获取HTTP请求的请求头 HTTPHeader 和设置 添加HTTP请求的请求头的API p
  • 龙书D3D11章节习题答案(第四章)

    以下答案仅供参考 有错欢迎留言 Chapter 4 Direct3D Initialzation 1 Modify the previous exercise solution by disabling the ALT ENTER func
  • DVWA XSS总结

    笔者对该靶场所需的相关知识进行了总结 拓展 供大家学习参考 XSS 漏洞学习 DVWA XSS Reflected low 未进行过滤 构造payload medium 过滤规则 把 lt script gt 用str replace 函数
  • Java类加载

    1 JAVA类装载器在装载类的时候是按需加载的 只有当一个类要使用 使用new 关键字来实例化一个类 的时候 类加载器才会加载这 个类并初始化 类Main java 代码 publicclass Main publicstaticvoid
  • STM32—CAN通信

    文章目录 一 CAN通信简介 1 1 CAN简介 1 2 CAN协议特点 1 3 CAN通信的帧类型 1 4 数据帧结构 1 5 CAN的位时序 1 6 CAN的仲裁功能 二 STM32F1的CAN 2 1 bxCAN简介 2 2 bxCA
  • 8-js高级-6(promise)

    一 Promise 的理解和使用 1 Promise 是什么 理解 抽象表达 Promise 是一门新的技术 ES6 规范 Promise 是 JS 中进行异步编程的新解决方案 备注 旧方案是单纯使用回调函数 具体表达 从语法上来说 Pro
  • c语言练习题56:变种水仙花

    变种水仙花 描述 变种水仙花数 Lily Number 把任意的数字 从中间拆分成两个数字 比如1461 可以拆分成 1和461 14和61 146和1 如果所有拆分后的乘积之和等于自身 则是一个Lily Number 例如 655 6 5
  • Echarts柱状图的点击事件

    最近在做一些图表统计的功能 用到了百度的开源图表软件Echatrs 不得不提的是 不但上手简单而且扩展功能也是十分强大 在使用的过程中也遇到了不少问题 可能由于有关Echatrs的资料并不是很齐全 所以查找资料的过程也是相当曲折的 所以还是
  • 硬盘错误计数 计算机内存不足,硬盘问题!Ultra DMA CRC错误计数 电脑死机

    最近电脑经常出现卡机状态 此状态出现前先是硬盘嗡嗡响 就像汽车油门一样 一加一松 但声音不是很大 然后硬盘紧接着还有嘎吱的响声 这样重复几次 出现这种声音的时候 电脑出现死机状态 但停上几分钟后 一切恢复正常 有时候也会卡到电脑自动重新启动
  • linux下sqlite3的使用实例(c语言)

    文章目录 1 安装数据库 2 相关函数 3 代码实例 3 1创建一个数据库 3 2插入数据 3 3查看表的内容 3 4删除数据 1 安装数据库 Linux 下安装sqlite3 需要两个个命令 即可 1 sudo apt get insta
  • Bootstrap Table行内添加/行内编辑案例

    项目场景 JQuery版本为 3 6 0 Bootstrap版本为 3 4 1 Bootstrap Table版本为 1 8 1 Bootstrap Table Edit版本为 1 0 Bootstrap Select版本为 1 0 Boo
  • c++排序算法(快速排序、冒泡排序、选择排序)

    1 快速排序 这里的容器是全局的 不全局的话 可以在参数那里加个数组的参数传进来 从大到小 从大到小排序 void ResManage quickSortLastUpdateTime const int iLeftIndex const i
  • 华为手机投屏电脑_华为手机如何实现无线投屏?

    朋友们 大家好 大家知道吗 其实我们风雪社是可以留言的 点击下面图片就可以跳转到留言界面哦 别担心 没有广告的 接下来 开始今天的内容了 大家都知道一些华为手机支持无线投屏 那用华为的朋友们 如何知道自己的手机是否可以投大屏幕呢 如果可以
  • Qt--02:设置父对象

    问题引入 在Widget中创建Button等控件时 如果不指定Button等控件的父对象 就会产生相关控件无法再此Widget窗口中显示 因此当一些控件需要在当前Widget窗口中显示的时候就需要为控件添加父对象 指定父对象方式 setPa
  • Spring Security 实现 antMatchers 配置路径的动态获取

    为什么80 的码农都做不了架构师 gt gt gt 1 为什么要实现动态的获取 antMatchers 配置的数据 这两天由于公司项目的需求 对 spring security 的应用过程中需要实现动态的获取 antMatchers per
  • mybatis防注入

    1 SQL防注入 mybatis语句中要使用 xxx 防止SQL注入 xxx 只是简单替换占位符 有注入的风险 例子 1 1 getNameByUserId resultType String gt SELECT name FROM use
  • HTML预留字符的处理

    目录 HTML 实体 不间断空格 non breaking space HTML 实例示例 HTML 中有用的字符实体 HTML 中的预留字符必须被替换为字符实体 HTML 实体 在 HTML 中 某些字符是预留的 在 HTML 中不能使用
  • JavaScript new Date() -2--------- 获取指定月份的天数 和 获取指定月份的第一天是周几

    使用 new Date 创建一个 Date 对象 var my date new Date 用当前日期和时间创建的新的日期对象 console log my date Fri Jan 10 2020 10 16 19 GMT 0800 中国
  • 电脑用电,电脑一天24小时多少度电 电脑一天用电量计算【图文】

    我们都知道 电器只要运行着 就会有一定的耗电量 比如我们平时的冰箱 空调 电视 电脑等等 今天小编便主要针对电脑来讲一讲 很多的朋友可能比较关注的都是电脑一天24小时耗用多少度电 还有因为我们想要自己来计算的话 应该要如何计算呢 还有 很多
  • DockerFile语法讲解

    Docker官网 https docs docker com Docker的github地址 https github com moby moby Dockerhub官网 https registry hub docker com 如果do