docker(Dockerfile、 关键字解释、Dockerfile编写、构建) -day04

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本

一、常用保留字汇总

Dockerfile 的保留字(关键字)是用于定义和构建 Docker 镜像的指令。以下是一些常用的 Dockerfile 保留字:

  1. FROM:指定基础镜像。
  2. RUN:执行命令并提交结果。 (docker  build  时候运行)
  3. CMD:容器启动时执行的命令。(docker run时候运行)
  4. LABEL:为镜像添加元数据标签。
  5. EXPOSE:暴露容器的端口。
  6. ENV:设置环境变量。
  7. ADD:将文件或目录添加到镜像中。(自动处理URL 和解压tar压缩包)
  8. COPY:复制文件或目录到镜像中
  9. ENTRYPOINT:指定容器启动时要运行的命令。(ENTRYPOINT可以和CMD一起用,一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参。当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给ENTRYPOINT指今)
  10. VOLUME:定义容器中的卷
  11. USER:指定运行容器的用户。
  12. WORKDIR:设置容器中的工作目录。
  13. ARG:定义传递给构建过程的参数。
  14. ONBUILD:定义当构建作为另一个 Dockerfile 的基础镜像时执行的指令。
  15. HEALTHCHECK:定义容器健康检查的命令和参数。
  16. SHELL:指定容器中执行的默认 shell。
  17. MAINTAINER:指定维护者信息。
  18. FIPS:启用或禁用 FIPS 模式(适用于美国政府)。
  19. CONTAINERD_GRAPH:设置容器d守护进程使用的目录路径。
  20. HELP:为 Docker 守护进程打印帮助信息。
  21. REJECT_UNSAFE_ Volumes:拒绝从 Dockerfile 中使用不安全的卷。
  22. LABEL_OPTIONS:为镜像添加标签选项。
  23. EXTRA_HOSTS:添加主机名到 /etc/hosts 文件(主机名称和 IP 地址列表)。
  24. NOPROXY:添加主机名到 /etc/hosts 文件(主机名称列表),以避免使用 DNS 进行反向解析。
  25. HTTP_PROXY/HTTPS_PROXY/NO_PROXY:设置 HTTP/HTTPS 代理和不使用代理的服务器列表。 

 一、dockerfile 案列

操作背景: centos 7镜像具备vim + ifconfig +jdk8

 1.1 编写Dokerfile

Dokerfile   <<---------注意文件名是这个

1-新建文件夹 上传文件
[root@iZuf6hxabqikytnrumsi4gZ /]# mkdir myfile2- 创建如下Dokerfile文件
[root@iZuf6hxabqikytnrumsi4gZ myfile]# vim Dokerfile3- 编写build文档
#基础镜像 以及作者定义
FROM centos:7
MAINTAINER syf<1336.qq.com>
#指定登录后的路径
ENV MYPATH /usr/local
WORKDIR $MYPATH#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u381-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u381-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_381
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATHEXPOSE 80CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
1.2构建镜像

在当前目录下构建

docker build -t centosJava8:1.0 .

构建之前先核对下,我这用的cenos7

1-拉去基础镜像
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker pull centos:72-核对镜像
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        6.2.6     7614ae9453d1   24 months ago   113MB
mysql        5.7       c20987f18b13   24 months ago   448MB
centos       7         eeb6ee3f44bd   2 years ago     204MB

 构建结果如下,1、2、3、4

1-构建命令
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker build -t centosjava8:1.0 .2-构建过程[+] Building 89.1s (12/12) FINISHED                                                                                                                                                                docker:default=> [internal] load build definition from Dockerfile                                                                                                                                                         0.0s=> => transferring dockerfile: 830B                                                                                                                                                                         0.0s=> [internal] load .dockerignore                                                                                                                                                                            0.0s=> => transferring context: 2B                                                                                                                                                                              0.0s=> [internal] load metadata for docker.io/library/centos:7                                                                                                                                                  0.0s=> [1/7] FROM docker.io/library/centos:7                                                                                                                                                                    0.0s=> [internal] load build context                                                                                                                                                                            1.6s=> => transferring context: 139.30MB                                                                                                                                                                        1.3s=> [2/7] WORKDIR /usr/local                                                                                                                                                                                 0.2s=> [3/7] RUN yum -y install vim                                                                                                                                                                            61.3s=> [4/7] RUN yum -y install net-tools                                                                                                                                                                       2.5s=> [5/7] RUN yum -y install glibc.i686                                                                                                                                                                     11.5s => [6/7] RUN mkdir /usr/local/java                                                                                                                                                                          0.3s => [7/7] ADD jdk-8u381-linux-x64.tar.gz /usr/local/java/                                                                                                                                                    3.1s => exporting to image                                                                                                                                                                                       9.9s => => exporting layers                                                                                                                                                                                      9.9s => => writing image sha256:b66e5037b732600d2de0b74f6058ea21b396a5f61646f4290812d67734047668                                                                                                                 0.0s => => naming to docker.io/library/centosjava8:1.03- 查看 
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
centosjava8   1.0       b66e5037b732   4 minutes ago   1.27GB
redis         6.2.6     7614ae9453d1   24 months ago   113MB
mysql         5.7       c20987f18b13   24 months ago   448MB
centos        7         eeb6ee3f44bd   2 years ago     204MB4-运行容器
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker run -it b66e5037b732 /bin/bash
[root@ecd00b1d0b26 local]# pwd
/usr/local
[root@ecd00b1d0b26 local]# 

二、虚悬镜像

虚悬镜像已经失去存在价值,可以删除

查看虚悬镜像

docker image ls -f dangling=true

删除虚悬镜像

docker image prune


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL笔记-第15章_存储过程与函数

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第15章_存储过程与函数1. 存储过程概述1.1 理解1.2 分类 2. 创建存储过程2.1 语法分析2.2 代码举例 3. 调用存储过程3.1 调用格式3.2 代码举…

include_directories

Cmake命令之include_directories介绍-CSDN博客

2023自动化测试框架大对比:哪个更胜一筹?

所谓工欲善其事&#xff0c;必先利其器&#xff0c;在进行自动化测试时&#xff0c;选择一个合适的框架是至关重要的。因为一个好的测试框架可以大大提高测试效率&#xff0c;减少我们很多工作量。在选择框架之前&#xff0c;我们通常需要对不同的框架进行对比&#xff0c;以便…

LeetCode:1631. 最小体力消耗路径(SPFA Java)

目录 1631. 最小体力消耗路径 题目描述&#xff1a; 实现代码与解析&#xff1a; BFSDP 原理思路&#xff1a; 1631. 最小体力消耗路径 题目描述&#xff1a; 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights &#xff0c;其中 heights[row][col] 表…

【后端学前端】第一天 css动画 内凹导航栏

1、学习信息 css动画 内凹导航栏_哔哩哔哩_bilibili 随便找的的视频&#xff0c;主要原因是在公司不方便有声音 2、源码 最终源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title…

boost编译静态库

版本1_83_0 下载地址https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.zip 解压后根目录可见 参考方式&#xff1a;打开index.html 可通过此路径找到编译方法 进入getting started&#xff0c;右下角有linux和windows的下一步可选&#xff0…

美赛F奖经验分享,干货满满,快来查收!

2023年美赛结果出来之后&#xff0c;陆续有人给我发私信求经验&#xff0c;跟一些同学交流后我发现&#xff0c;很多人其实对美赛了解程度很少。我借此机会介绍一下美赛&#xff0c;并分享一下获奖经验。我的内容主要包括以下几个部分&#xff1a;美赛是什么、得奖分布、选题建…

SQL注入漏洞的利用场景

预计更新SQL注入概述 1.1 SQL注入攻击概述 1.2 SQL注入漏洞分类 1.3 SQL注入攻击的危害 SQLMap介绍 2.1 SQLMap简介 2.2 SQLMap安装与配置 2.3 SQLMap基本用法 SQLMap进阶使用 3.1 SQLMap高级用法 3.2 SQLMap配置文件详解 3.3 SQLMap插件的使用 SQL注入漏洞检测 4.1 SQL注入…

redis-学习笔记(Jedis string 简单命令)

mset & mget 批量设置和获取键值对 可以看出,参数都是可变参数 (就是说, 可以写任意个) 代码演示 getrange & setrange 获取和设置 string 类型中 某一区间的值 代码演示 append 往字符串的末尾拼接字符串 代码演示 incr & decr 如果 string 中为数字的话, 可以进行…

支付系统中日志的具体落地,实现快速发现,快速报警,指标分析

日志规范 V1.0 适用范围&#xff1a;适用于通用服务日志&#xff08;如nginx/redis/mysql日志&#xff09;之外的所有线上落盘日志&#xff0c;包括服务端业务日志&#xff0c;BI日志&#xff0c;移动端APP日志。 实施范围&#xff1a;要求所有新业务模块以及深度重构的模块实…

Servlet 的初步学习

前言 咱们最核心的目标是基于tomcat编程, 做出网站来 ~~ 基于tomcat进行网站后端的开发. 网站后端, http服务器,肯定是需要针对http 协议进行一系列操作的. 幸运的是, tomcat,已经把这些http相关的底层操作,封装好了只需要调用tomcat给咱们提供的api即可 Servlet 是什么 Servl…

2023最新大模型实验室解决方案

人工智能是引领未来的新兴战略性技术&#xff0c;是驱动新一轮科技革命和产业变革的重要力量。近年来&#xff0c;人工智能相关技术持续演进&#xff0c;产业化和商业化进程不断提速&#xff0c;正在加快与千行百业深度融合。 大模型实验室架构图 大模型实验室建设内容 一、课…

基于微信小程序的智慧校园导航系统研究

点我下载完整版 基于微信小程序的智慧校园导航系统研究 Research on Smart Campus Navigation System based on WeChat mini program 目录 目录 2 摘要 3 关键词 4 第一章 研究背景与意义 4 1.1 校园导航系统研究的背景 4 1.2 微信小程序在校园导航系统中的应用 5 1.3 研究的目…

寻回初心:当初为什么学习计算机?

如今&#xff0c;计算机技术已经深入到我们生活的方方面面。无论是工作还是生活&#xff0c;计算机都扮演着重要的角色。下面我将阐述我学习计算机的几个重要原因&#xff1a; 一、学习计算机给我们带来了什么&#xff1f; 首先&#xff0c;学习计算机可以提高我们的就业竞争…

服务器漏洞防护措施有哪些?

随着互联网的普及和发展&#xff0c;服务器在各个领域的应用越来越广泛&#xff0c;同时也面临着越来越多的安全威胁。服务器漏洞一旦被攻击者利用&#xff0c;不仅可能导致数据泄露、系统崩溃等严重后果&#xff0c;还可能影响到企业的正常运营和声誉。因此&#xff0c;加强服…

关于空间BN

批次归一化对每个神经元都进行了归一化&#xff0c;或者说对每个特征都进行了归一化&#xff0c;并且用可学习的参数和进行重构。 那么如果卷积神经网络有3个通道&#xff0c;长和宽都是244&#xff0c;BN将需要学习3*244*244*2个参数&#xff0c;计算量是不是太大了&#xff1…

Java题库整理2023.12.13,一些做题的重点考察

整理了些题,有错误的可以提出来,一起讨论~~谢谢友友。。 1初识Java 2Java语言基础 数据类型、变量常量 运算符与表达式 3数组 一维数组

初识人工智能,一文读懂贝叶斯优化和其他算法的知识文集(8)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

“Hit”是“打”,“books”是“书”,那么“Hit the books“是“啪啪啪打书”?柯桥商务英语口语培训

俚语就是——单词都懂&#xff0c;短语不懂。 “Hit”是“打”&#xff0c;“books”是“书”&#xff0c;“Hit the books"是“啪啪啪打书”&#xff1f; 错了错了&#xff01; "Hit the books"是一个常用的英语俚语&#xff0c;意思是开始认真学习或阅读书籍…

独热编码和词向量的简单理解

把单词用向量表示&#xff0c;是把深度神经网络语言模型引入自然语言处理领域的一个核心技术。想要让机器理解单词&#xff0c;就必须要把它变成一串数字&#xff08;向量&#xff09;。下面介绍的 One-Hot Encoding&#xff08;One-Hot 编码&#xff09;和 Word Embedding &am…