linux系统docker容器编写dockerfile文件

Docker file介绍

  • Docker file
    • 官网
    • 构建三步骤
    • docker file构建过程
      • docker file内容基础知识
      • docker执行dockerfile的大致流程
    • dockerfile常用保留字指令
        • RUN
        • EXPOSE
        • WORKDIR
        • USER
        • MAINTAINER
        • ENV
        • ADD
        • COPY
        • VOLUME
        • FROM
        • CMD
        • ENTRYPOINT
        • 总结

Docker file

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

官网

https://docs.docker.com/engine/reference/builder/

构建三步骤

编写docker file文件docker build命令构建镜像docker run运行新构建好的镜像容器实例

docker file构建过程

docker file内容基础知识

每条保留字指令都必须为大写字母且后面要跟随至少一个参数指令按照从上到下,顺序执行#表示注释每条指令都会创建一个新的镜像层并对镜像进行提交

docker执行dockerfile的大致流程

docker从基础镜像运行一个容器执行一条指令并对容器作出修改执行类似dockercommit的操作提交一个新的镜像层docker再基于刚提交的镜像运行一个新容器执行dockerfile中的下一条指令直到所有指令都执行完成
从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段Dockerfile是软件的原材料Docker镜像是软件的交付品Docker容器则可以认为是软件镜像的运行态,也即依照镜像运行的容器实例Dockerile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。Dockerfle,需要定义一个Dockerfile,Dockerfle定义了进程需要的一切东西。Dockerfle涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等Docker镜像,在用Dockerfle定义一个文件之后,docker build时会产生一个Docker镜像,当运行Docker镜像时会真正开始提供服务Docker容器,容器是直接提供服务的

dockerfile常用保留字指令

参考tomcat8的dockerfile入门:https://github.com/docker-library/tomcat
RUN
RUN:容器构建时需要运行的命令两种格式:shell格式:RUN <命令行工具>   #等同于,在终端操作shell命令例:RUN yum -y install 程序名exec格式:RUN ["可执行文件","参数1","参数2"]例:RUN ["./test.php","dev","offline"]等同于RUN ./test.php dev offlineRUN是在docker build时运行
EXPOSE
EXPOSE:当前容器对外暴露出的端口
WORKDIR
WORKDIR:指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
USER
USER:指定该镜像以什么样的用户去执行,如果都不指定,默认是root
MAINTAINER
MAINTAINER:维护者,镜像维护者的姓名和邮箱地址
ENV
ENV:用来在构建镜像过程中设置环境变量ENV MY_PATH /usr/mytest这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样;也可以在其它指令中直接使用这些环境变量例:WORKDIR $MY_PATH
ADD
ADD:将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
COPY
COPY:类似ADD,拷贝文件和目录到镜像中,从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置COPY src destCOPY ["src", "dest"]<src源路径>:源文件或者源目录<dest目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。
VOLUME
VOLUME:容器数据卷,用于数据保存和持久化工作
FROM
FROM:基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from
CMD
CMD:指定容器启动后的要干的事情CMD容器启动命令,CMD指令的两种格式:shell格式:CMD <命令>exec格式:CMD ["可执行文件","参数1","参数2"]参数列表格式: CMD ["参数1","参数2"],在指定了ENTRVPOINT指令后,用CMD传递参数。注意:Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换CMD和RUN命令的区别:CMD是在docker run时运行。RUN是在docker build时运行。传参时候是覆盖
ENTRYPOINT
ENTRYPOINT:用来指定一个容器启动时要运行的命令格式:ENTRYPOINT ["<executeable>","<param1>","<param2>"]ENTRYPOINT可以和CMD一起用,一般是变参才会使用CMD,这里的CMD等于是在给ENTRYPOINT传参。当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给ENTRYPOINT指令,组合会变成<ENTRYPOINT> "<CMD>"类似于CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给ENTRYPOINT指令指定的程序优点:在执行docker run的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个ENTRYPOINT指令,仅最后一个生效。传参时候是追加
总结
BUILDBOTHRUN
FROMWORKDIRCMD
MAINTAINERUSERENV
COPYEXPOSE
ADDVOLUME
RUNENTRYPOINT
ONBUILD
.dockerignore

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

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

相关文章

openstack rocky版手动搭建

实验环境 系统&#xff1a;CentOS-7-x86_64-DVD-1804 实验环境&#xff1a;vmware 网络&#xff1a;桥接模式----1块网卡---静态IP hostnameip功能controller192.168.20.205管理节点compute192.168.20.215计算节点 &#xff08;一&#xff09;环境设置&#xff0c;所有节点…

力扣每日一题 在受污染的二叉树中查找元素 哈希 DFS 二进制

Problem: 1261. 在受污染的二叉树中查找元素 思路 &#x1f468;‍&#x1f3eb; 灵神题解 &#x1f496; 二进制 时间复杂度&#xff1a;初始化为 O ( 1 ) O(1) O(1)&#xff1b;find 为 O ( m i n ( h , l o g 2 t a r g e t ) O(min(h,log_2target) O(min(h,log2​targ…

数字孪生与智慧城市:实现城市治理现代化的新路径

随着信息技术的迅猛发展&#xff0c;智慧城市已成为城市发展的必然趋势。数字孪生技术作为智慧城市建设的重要支撑&#xff0c;以其独特的优势为城市治理现代化提供了新的路径。本文将探讨数字孪生技术在智慧城市中的应用&#xff0c;以及如何实现城市治理的现代化。 一、数字…

Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-3、线条平滑曲面且可通过面观察柱体变化(三)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

leetcode2864--最大二进制奇数

1. 题意 给二进制串&#xff0c;求重新排列后的最大串。 2. 题解 统计1个数&#xff0c;将 C n t − 1 Cnt-1 Cnt−1个1放开头&#xff0c;其他除第0位都是0。 class Solution { public:string maximumOddBinaryNumber(string s) {int cnt count(s.begin(), s.end(), 1);r…

C#,红黑树(Red-Black Tree)的构造,插入、删除及修复、查找的算法与源代码

1 红黑树(Red-Black Tree) 如果二叉搜索树满足以下红黑属性,则它是红黑树: 每个节点不是红色就是黑色。根是黑色的。每片叶子(无)都是黑色的。如果一个节点是红色的,那么它的两个子节点都是黑色的。对于每个节点,从节点到后代叶的所有路径都包含相同数量的黑色节点。红…

HAProxy适配openGauss使用指导书

一、HAProxy 简介 HAProxy 是一个开源的项目&#xff0c;其代码托管在 Github 上&#xff0c;代码链接如下&#xff1a;HAProxy 代码链接。HAProxy 提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种解…

机密计算:为云数据提供强大的安全性

在人工智能应用中&#xff0c;数据隐私是一个重要关注问题。在AI模型训练过程中&#xff0c;特别是在联邦学习等分布式学习场景中&#xff0c;云数据可能分布在不同的地方&#xff0c;包括用户设备、边缘服务器和云服务。机密计算是为人工智能开发中的安全和隐私保护提供基础的…

[Vue] 自定义命令

Vue 自定义命令 官方的vue命令包括&#xff1a;v-html v-if v-else v-show v-for等等为了提高效率&#xff0c;减少重复项编写&#xff0c;vue支持自定义命令&#xff0c;可以封装一些DOM操作&#xff0c;扩展额外的功能 语法 注册 全局注册 //在main.js中 Vue.directive(…

使用endnote插入引用文献导致word英文和数字变成符号的解决方案

使用endnote插入引用文献导致word英文和数字变成符号的解决方案 如图使用endnote插入引用文献导致word英文和数字变成符号字体Wingdings Wingdings 是一个符号字体系列&#xff0c;它将许多字母渲染成各式各样的符号&#xff0c;用途十分广泛。 **解决方法&#xff1a;**直接通…

Linux基础学习:常用命令

目录结构及其常用命令 处理目录的常用命令&#xff1a; ls &#xff1a;列出目录及文件名cd&#xff1a;切换目录pwd&#xff1a;显示目前的目录mkdir&#xff1a;创建一个新的目录rmdir&#xff1a;删除一个空的目录cp&#xff1a;复制文件或目录rm&#xff1a;删除文件或目录…

uni-app网络请求封装及发送

在看本篇文章之前&#xff0c;请先至少学会独立完成vue2项目 首先配置request.js const url_all {DEV: http://localhost:8888, // 开发// 生产 PRO: http://111.111.111.111:8080, }let BASEURL url_all[DEV] // 调整当前环境/** 全局请求封装* param path 请求路径* pa…

ROS2 Python导入三方库及自定义python程序

ROS2 Python导入三方库及自定义python程序 文章目录 前言正文导入三方库文件导入自定义python程序 前言 本文主要讲解ROS2建立pyhon包时如何导入三方库文件&#xff08;.so&#xff09;&#xff0c;及自定义的python程序。 正文 导入三方库文件 此处以Jaka驱动为例&#xf…

【3GPP】【核心网】【5G】NG接口介绍(超详细)

目录 1. NG接口定义 2. 接口原则和功能 3. NG 接口控制面 5. NG接口主要信令流程 6. NG SETUP过程 1. NG接口定义 NG接口指无线接入网与5G核心网之间的接口。在5G SA网络中&#xff0c;gNB之间通过Xn接口进行连接,gNB与5GC之间通过NG接口进行连接。NG接口分为NG-C接口和NG…

Python控制摄像头并获取数据文件

一、引言 摄像头作为计算机视觉领域的核心设备之一&#xff0c;广泛应用于视频监控、图像采集和数据处理等领域。通过Python编程语言&#xff0c;我们可以实现对摄像头的精确控制&#xff0c;包括摄像头的开启、关闭、参数设置以及数据获取等功能。本文将指导读者完成这些操作…

CVE-2023-38836 BoidCMSv.2.0.0 后台文件上传漏洞

漏洞简介 BoidCMS是一个免费的开源平面文件 CMS&#xff0c;用于构建简单的网站和博客&#xff0c;使用 PHP 开发并使用 JSON 作为数据库。它的安装无需配置或安装任何关系数据库&#xff08;如 MySQL&#xff09;。您只需要一个支持PHP 的Web服务器。在 BoidCMS v.2.0.0 中存…

【LLM知识】笔记

为什么现在的LLM以decoder-only为主 为什么现在的LLM都是Decoder only的架构&#xff1f; 回答一 回答二 encoder-decoder 常用于处理需要对输入和输出建立精确的映射关系的任务&#xff08;机器翻译、文本摘要等&#xff09;&#xff0c;更具有专业性优势 输入的语义理解会…

c#简易学生管理系统

https://pan.baidu.com/s/1kCPvWg8P5hvlf26nGf2vxg?pwdya45 ya45

Linux运维:磁盘分区与挂载详解

Linux运维&#xff1a;磁盘分区与挂载详解 1、磁盘分区的原理2、查看系统中所有的磁盘设备及其分区信息3、进行磁盘分区&#xff08;对于sdb新磁盘&#xff09;4、格式化分区5、挂载分区&#xff08;临时挂载、永久挂载&#xff09;6、取消挂载分区7、删除分区 &#x1f496;Th…

立式学习灯有什么讲究?大路灯原来要这样选,五大台灯分享!

立式学习灯作为近年来最适合照明的护眼家电&#xff0c;为用户提供了良好的光线环境&#xff0c;并且还能够减少光线带来的视觉疲劳感。然而&#xff0c;随着其销量的节节攀升商家为了谋取利润&#xff0c;市面上也涌现了很多劣质产品&#xff0c;这些产品普遍没有经过技术调教…