docker学习笔记(四)--DockerFile

文章目录

  • 一、什么是Dockerfile
  • 二、docker build命令
  • 三、dockerfile指令
    • 3.1 FROM
    • 3.2 ENV
    • 3.3 WORKDIR
    • 3.4 RUN
    • 3.5 CMD
    • 3.6 ENTRYPOINT
    • 3.7 EXPOSE
    • 3.8 ARG
    • 3.9 ADD
    • 3.10 COPY
    • 3.11 VOLUME
  • 四、dockerfile示例

一、什么是Dockerfile

Dockerfile 是用于构建 Docker 镜像的脚本文件,由一系列指令构成。通过docker build命令构建镜像时,Dockerfile中的指令会由上到下依次执行,每条指令都将会构建出一个镜像,这就是镜像的分层。因此,指令越多,层次就越多,创建的镜像就越多,效率就越低。所以在定义Dockerfile时,能在一个指令完成的动作就不要分为两条。比如下面这个构建指令。

FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz

上述命令执行之后会创建3层镜像,可简化为以下格式

FROM centos
RUN yum -y install wget \&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \&& tar -xvf redis.tar.gz

如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像。

二、docker build命令

在 Dockerfile 文件的存放目录下,执行构建动作。以下示例,通过目录下的 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签)。docker build -t nginx:v3 .其中.是上下文路径。上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。
在这里插入图片描述

三、dockerfile指令

dockerfile指令说明示例
FROM指定基础镜像,用于后续的指令构建,必须是第一条指令FROM ubuntu:20.04
RUN用于执行后面跟着的命令行命令。有俩种格式①RUN <命令行命令> ,其中命令行命令等同于,在终端操作的 shell 命令。②RUN [“可执行文件”, “参数1”, “参数2”] ,比如RUN [“./test.php”, “dev”, “offline”] 等价于 RUN ./test.php dev offline
COPY拷贝本地文件到镜像的指定目录COPY [–chown=:] <源路径1>… <目标路径>COPY hom* /mydir/
VOLUME定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。VOLUME <路径>

3.1 FROM

格式:FROM <镜像>[:<版本>]
说明:指定新镜像的基础镜像。每个 Dockerfile 都必须以 FROM 指令开始。
例子:FROM ubuntu:18.04

3.2 ENV

格式:ENV <键>=<值>
说明:设置环境变量。
例子:ENV MYAPP_COLOR=red

3.3 WORKDIR

格式:WORKDIR <路径>
说明:设置容器内的工作目录,如果目录不存在,则会创建。
例子:WORKDIR /app

3.4 RUN

格式:RUN <命令> 或 RUN [“可执行文件”, “参数1”, “参数2”]
说明:在镜像中执行命令,并创建一个新的层,用于缓存结果。
例子:RUN apt-get update && apt-get install -y curl

3.5 CMD

格式:CMD [“可执行文件”, “参数1”, “参数2”] 或 CMD 命令 参数1 参数2
说明:提供容器启动时默认执行的命令。如果 Docker 命令行中提供了其他命令,则会覆盖 CMD。
例子:CMD [“python”, “app.py”]

3.6 ENTRYPOINT

格式:ENTRYPOINT [“可执行文件”, “参数1”, “参数2”] 或 ENTRYPOINT 命令 参数1 参数2
说明:设置容器启动时执行的命令,可以被 Docker 命令行中指定的其他命令覆盖。
例子:ENTRYPOINT [“/bin/bash”]

3.7 EXPOSE

格式:EXPOSE <端口> [<端口>…]
说明:声明容器运行时监听的端口,不会实际上发布端口,需要在 docker run 时使用 -p 参数来发布。
例子:EXPOSE 80 443

3.8 ARG

【语法】ARG < varname >[=]
【解析】定义一个变量,该变量将会使用于镜像构建运行时。若要定义多个变量,则需要定
义多个ARG指令。

3.9 ADD

格式:ADD <宿主机源文件路径> <存放容器目标路径>
说明:将文件、目录、远程文件URL添加到容器中。如果 <宿主机源文件路径> 是 tar 压缩文件,会自动解压。
例子:ADD app.tar.gz /app

3.10 COPY

【说明】功能与ADD指令相同,只不过src不能是URL。若src为压缩文件,复制到容器后
不会自动解压。

3.11 VOLUME

格式:VOLUME [“dir1”, “dir2”, …]
说明:创建一个可以从本地主机或其他容器挂载的挂载点。
例子:VOLUME /var/www/html

四、dockerfile示例

# 使用官方MySQL镜像
FROM mysql:5.7# 设置root用户的密码
ENV MYSQL_ROOT_PASSWORD=123456# 设置字符集
ENV LANG=C.UTF-8# 挂载mysql数据文件
VOLUME /var/lib/mysql# 挂载mysql日志文件
VOLUME /var/log/mysql# 挂载mysql配置文件
VOLUME /etc/mysql

在当前root用户的家目录,创建如上的dockerfile文件,执行命令docker build -t mysqlself .该命令会在当前目录下查找Dockerfile文件,并构建名为mysqlself的Docker镜像。
在这里插入图片描述
使用命令docker run -itd --name mysql --network=blognetwork --ip=172.16.0.3 -p 3306:3306 mysqlself运行刚才的镜像生成名为mysql的容器。用Navicat工具连接刚才创建的容器,并创建一个名为blogsite的数据库,进入容器使用命令show databases;可以看见刚才创建的数据库。
在这里插入图片描述

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

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

相关文章

动手学深度学习-线性神经网络-1线性回归

目录 线性回归的基本元素 线性模型 损失函数 解析解 随机梯度下降 用模型进行预测 矢量化加速 正态分布与平方损失 从线性回归到深度网络 神经网络图 生物学 小结 回归&#xff08;regression&#xff09;是能为一个或多个自变量与因变量之间关系建模的一类方法。…

BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示

说在前面 最近使用自己的数据集对bert-base-uncased进行了二次预训练&#xff0c;只使用了MLM任务&#xff0c;发现在加载训练好的模型进行输出CLS表示用于下游任务时&#xff0c;同一个句子的输出CLS表示都不一样&#xff0c;并且控制台输出以下警告信息。说是没有这些权重。…

设计模式:18、组合模式

目录 0、定义 1、组合模式的三种角色 2、组合模式的UML类图 3、示例代码 0、定义 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使用户对单个对象和组合对象的使用具有一致性。 1、组合模式的三种角色 抽象组件&#xff08;Component&#xff09;&#…

Canal 深入解析:从原理到实践的全面解读

Canal 深入解析&#xff1a;从原理到实践的全面解读 官网&#xff1a;https://github.com/alibaba/canal Canal 是阿里巴巴开源的一款分布式增量数据同步工具&#xff0c;广泛应用于数据同步、实时数据处理和数据库的增量备份等场景。它可以通过监听 MySQL 数据库的 binlog&am…

LCD1602液晶显示屏指令详解

文章目录 LCD1602液晶显示屏1.简介2. 液晶引脚说明3. 指令介绍3.1 清屏指令3.2 光标归位指令3.3 进入模式设置指令3.4 显示开关设置指令3.5 设定显示或光标移动方向指令3.6 功能设定指令3.7 设定CGRAM地址指令3.8 设定DDRAM地址指令3.9 读取忙或AC地址指令3.10 总图3.11 DDRAM …

阿里云中Flink提交作业

访问阿里云首页面&#xff1a;https://www.aliyun.com/ 选择"按量付费" 通过选择区域&#xff0c;看哪个区域有虚拟交换机。 查看创建的工作空间&#xff0c;当工作空间状态为运行中时&#xff0c;点击控制台。 开通完成后&#xff0c;会有一个控制台&#xff1a; 可…

【不稳定的BUG】__scrt_is_managed_app()中断

【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能&#xff0c;仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…

JDK 24:Java 24 中的新功能

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;历代文学&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;高并发设计&#xf…

联想按下“AI加速键”!目标:与5000万中小企业共创

根据相关数据显示&#xff0c;截至2023年末中国中小企业数量超过5300万家&#xff0c;中小企业支撑了中国经济的发展与前进。在AI大模型风潮到来之际&#xff0c;相比于AI带给大企业的长期价值&#xff0c;AI对中小企业有着更加直接、显著、决定性的意义。同时&#xff0c;AI与…

【React】二、状态变量useState

文章目录 1、React中的事件绑定1.1 基础事件绑定1.2 使用事件对象参数1.3 传递自定义参数1.4 同时传递事件对象和自定义参数 2、React中的组件3、useState 1、React中的事件绑定 1.1 基础事件绑定 语法&#xff1a;on 事件名称 { 事件处理程序 }&#xff0c;整体上遵循驼峰…

计算机网络-IPSec VPN基本概念

企业分支之间经常有互联的需求&#xff0c;企业互联的方式很多&#xff0c;可以使用专线线路或者Internet线路。部分企业从成本和需求出发会选择使用Internet线路进行互联&#xff0c;但是使用Internet线路存在安全风险&#xff0c;如何保障数据在传输时不会被窃取&#xff1f;…

VirtualBox注册已有虚拟机:未能打开位于虚拟电脑E_INVALIDARG (0X80070057)

错误如下 解决办法1 产生虚拟机的机器&#xff0c;与当前使用机器不兼容。建议在当前机器重新产生虚拟机。比如我家里电脑是WIN7&#xff0c;公司电脑是WIN11。 原来的虚拟机内容&#xff0c;找老机器导出。 解决办法2&#xff08;存疑&#xff09; 搜索到一个说法&#xf…

浅谈网络 | 应用层之流媒体与P2P协议

目录 流媒体名词系列视频的本质视频压缩编码过程如何在直播中看到帅哥美女&#xff1f;RTMP 协议 P2PP2P 文件下载种子文件 (.torrent)去中心化网络&#xff08;DHT&#xff09;哈希值与 DHT 网络DHT 网络是如何查找 流媒体 直播系统组成与协议 近几年直播比较火&#xff0c;…

2023年第十四届蓝桥杯Scratch国赛真题—推箱子

推箱子 程序演示及其源码解析&#xff0c;可前往&#xff1a; https://www.hixinao.com/scratch/creation/show-188.html 若需在线编程&#xff0c;在线测评模考&#xff0c;助力赛事可自行前往题库中心&#xff0c;按需查找&#xff1a; https://www.hixinao.com/ 题库涵盖…

【学习总结|DAY012】Java面向对象基础

一、前言 今天主要学习了以下内容&#xff1a;面向对象的理解与使用、对象的内存布局、构造器的概念和作用、封装的重要性以及JavaBean实体类的实现等。下面我将详细阐述这些知识点。 二、面向对象的理解与使用 1. 什么是面向对象&#xff1f; 类&#xff1a;一种特殊的数据…

网络安全知识:网络安全网格架构

在数字化转型的主导下&#xff0c;大多数组织利用多云或混合环境&#xff0c;包括本地基础设施、云服务和应用程序以及第三方实体&#xff0c;以及在网络中运行的用户和设备身份。在这种情况下&#xff0c;保护组织资产免受威胁涉及实现一个统一的框架&#xff0c;该框架根据组…

Spring04——注解开发

Spring3.0启用了纯注解开发模式&#xff0c;使用Java类替代配置文件&#xff0c;开启了Spring快速开发赛道 Java类代替Spring核心配置文件&#xff0c; 配置类&#xff08;Configuration&#xff09; Configuration注解用于设定当前类为配置类ComponentScan注解用于设定扫描路…

01_Node.js入门 (黑马)

01_Node.js入门 知识点自测 从 index.js 出发&#xff0c;访问到 student/data.json 的相对路径如何写? A&#xff1a;../public/teacher/data.json B&#xff1a;./public/student/data.json C&#xff1a;../student/data.json <details><summary>答案</sum…

哪款云手机适合多开?常用云手机功能对比

在全球化和数字化时代&#xff0c;云手机以其独特的灵活性和高效性&#xff0c;成为多账号运营和数字营销的热门工具。云手机能够解决传统设备管理的诸多痛点&#xff0c;例如账号关联、硬件成本高等问题。本文将为您推荐多款优质云手机品牌&#xff0c;帮助您选择最适合的工具…

【目标跟踪】DUT Anti-UAV数据集详细介绍

DUT Anti-UAV数据集是大连理工大学的团队公开的数据集&#xff08;DUT是他们学校的简称&#xff09;&#xff0c;其中包括了两个子数据集&#xff1a;目标检测和目标跟踪&#xff08;也就是说&#xff0c;目标检测和目标跟踪都可以用这个数据集&#xff09;。该数据集为可见光模…