当前位置: 首页 > news >正文

Dockerfile自定义制作镜像,其中10个指令的作用分析

docker容器中

镜像重要技能。

docker commit只能制作比较简单的镜像,

要制作比较完善的镜像,

自定义程度比较高的,

就需要用到dockerfile

dockerfile可以回溯历史

动态生成镜像。

FROM是基础镜像

CMD是容器创建时候默认的启动命令

CMD是一个数组固定格式

每个参数数组里面元素

/bin/ls   ==>  CMD ["/bin/ls"]
/bin/ls -l -a  ==>  CMD  ["/bin/ls","-l","-a"]
#   ${ENTRYPOINT}  是命令
#   ${@-${CMD}}   是参数
#   ${@} 是所有的参数选项之和
#   $1是第一个参数 
#   $2 是第二个参数
#   ...
#   $n 是第n个参数
#   $@ 是所有的参数之和
#   ${@-} 代表前面的变量没有设置
 ~]# echo  ${AA} ~]# echo  ${AA-abc}
abc
#   减号"-"后面代表,前面没有设置的时候,用这个参数
 ~]# AA=123
 ~]# echo  ${AA-abc}
123
#   如果AA设置了,就用设置的值
 ~]# unset AA
 ~]# echo  ${AA-abc}
abc
#   如果把AA设置的值删了,就用减号后面的值了
#   所以
#   ${@-${CMD}的意思就是,如果设置参数了,就用参数,如果没有设置,就用CMD
#   这个CMD就是默认的启动参数,如果没有设置,就用CMD写的命令来启动
#   ENTRYPOINT是,如果设置了,那么CMD就变成选项了。
#   ENTRYPOINT一旦设置了就必须执行
~]# cat  img1 
#!/bin/bash
CMD="/bin/ls -l"
ENTRYPOINT="echo"
${ENTRYPOINT} ${@-${CMD}}
~]# ./img1
/bin/ls -l
 ~]# ./img1  id
id
#  ENTRYPOINT设置echo命令后面CMD变成参数输出屏幕
#  所以ENTRYPOINT设置必须执行
~]# cat myimg/Dockerfile 
FROM  mylinux:latest
ENTRYPOINT ["echo"]
CMD ["/bin/ls", "-l"]
# FROM ENTRYPOINT CMD这三个指令dockerfile里面核心指令

文件扩展名为

.tar

.tar.gz

.tar.bz2

.tar.xz

.tar.tgz

这些类型文件

ADD指令这些文件解压

COPY指令不会解压这些文件

镜像时候所有文件都要放在镜像那个目录里面也就是Dockerfile所在目录

指令

说明

FROM

指定基础镜像

ENTRYPOINT

默认容器启动命令

CMD

有ENTRYPOINT时,CMD是启动参数;没有ENTRYPOINT时,CMD是启动命令;

可以容易被docker run 命令覆盖参数,比如:docker run myimage echo "Good!"

ADD

文件拷贝容器自动解压容器联网下载文件比如 ADD http://www.abc.com/abc.tar /tmp/

COPY

文件拷贝容器解压容器联网不能下载

RUN

容器内执行命令可以多条比如RUN touch file1RUN yum -y install nginx

USER

在容器内切换用户相当于sudo -u user

ENV

设置环境变量某些指令需要环境变量才能正确执行比如etcdctl

export ETCDCTL_API=3

WORKDIR

指定工作目录,有些任务需要,比如ansible、编译./configure

EXPOSE

对外声明容器将要使用端口号和协议,方便健康检测程序进行检测

WORKDIR的用法,比如
RUN touch  f1
WORKDIR /tmp
RUN touch f2     # 在/tmp目录创建f2文件
#通过Dockerfile里面WORKDIR,也可以知悉软件比如源码编译安装nginx WORKDIR /usr/local/nginx

ENTRYPOINT和CMD的单独用法,和结合用法:

  • 只使用 CMD

    • CMD 指定的命令将作为容器启动时的命令。
    • 如果用户没有通过 docker run 指定其他命令,那么 CMD 指定的命令将被执行。
  • 只使用 ENTRYPOINT

    • ENTRYPOINT 指定的命令将作为容器启动时的主程序。
    • 如果用户没有通过 docker run 指定其他命令,那么 ENTRYPOINT 指定的命令将被执行。
    • 当你想定义一个不可轻易覆盖的主程序时,使用 ENTRYPOINT
    • 例如,一个数据库容器可能总是需要运行数据库服务,不允许用户轻易改变这一点。
    • ENTRYPOINT 不容易被覆盖,除非使用 --entrypoint 显式指定。
  • 结合使用 ENTRYPOINT 和 CMD

    • CMD 指定的内容将成为 ENTRYPOINT 指定命令的参数。
    • 如果用户通过 docker run 指定其他命令,这些命令将覆盖 CMD 指定的参数。
# apache镜像,用Dockerfile制作示例:
httpd]# cat Dockerfile 
FROM mylinux:latest
RUN  dnf -y  install  httpd php  && dnf clean all
RUN  sed  -ri -e 's,^Load,#&,'  -e  's,^#(.*mod_mpm_prefork.so)$,\1,'  /etc/httpd/conf.modules.d/00-mpm.conf
ADD  myweb.tar.gz  /var/www/html/
ENV  LANG=C
WORKDIR  /var/www/html
EXPOSE 80/tcp
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]docker build  -t  httpd:latest  httpd/

相关文章:

Dockerfile自定义制作镜像,其中10个指令的作用分析

docker容器中 做镜像是重要的技能。 docker commit只能制作比较简单的镜像, 要制作比较完善的镜像, 自定义程度比较高的, 就需要用到dockerfile dockerfile可以回溯历史 动态生成镜像。 FROM是基础镜像 CMD是在容器创建的时候默认的启动命令 …...

Linux6-vi/vim

1.vi与vim vi是Linux操作系统下的标准编辑器,类似Windows下的记事本 vim是vi的升级版,包括vi的所有功能,而且支持shell 2.vi/vim下的三种模式 vi/vim有三种模式:命令模式,插入模式和底行模式 命令模式&#xff1a…...

2012年408考研真题-数据结构

8.【2012统考真题】求整数n(n≥0)的阶乘的算法如下&#xff0c;其时间复杂度是(&#xff09;。 int fact(int n){ if(n<1) return 1; return n*fact (n-1); } A. O(log2n) B. O(n) C. O(nlog2n) D. O(n^2) 解析&#xff1a; 观察代码&#xff0c;我们不…...

【北京迅为】《STM32MP157开发板使用手册》- 第四十章 二值信号量实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…...

Docker UI强大之处?

DockerUI是一款由国内开发者打造的优秀Docker可视化管理工具。它拥有简洁直观的用户界面&#xff0c;使得Docker主机管理、集群管理和任务编排变得轻松简单。DockerUI不仅能展示资源利用率、系统信息和更新日志&#xff0c;还提供了镜像管理功能&#xff0c;帮助用户高效清理中…...

前端面试题——token安全问题处理与大数据列表展示

1.长时间保存token问题 长时间保存Token涉及多个方面的问题&#xff0c;包括安全性、性能、以及Token的管理策略等。以下是对长时间保存Token问题的详细分析&#xff1a; 一、安全性问题 Token泄露风险&#xff1a; Token是用户身份验证的凭证&#xff0c;如果长时间保存且未…...

Flask项目入门和视图

1、第一个项目的结构 以示例代码中的入口文件app.py为例子 &#xff08;1&#xff09;引入Flask以及创建Flask对象 from flask import Flask app Flask(__name__)&#xff08;2&#xff09; 路由route 视图函数 app.route(/index/) def hello_world():# 响应&#xff1a;…...

深入理解Lucene:开源全文搜索引擎

目录 引言 Lucene的核心概念 索引 分析器 存储 Lucene的工作流程 创建索引 搜索索引 Lucene核心技术 倒排索引 排序算法 索引压缩与合并 并发控制与实时更新 结论 引言 随着互联网的飞速发展&#xff0c;信息量呈指数级增长&#xff0c;如何有效地管理和检索这些…...

Qt中pro项目文件配置介绍

Qt中&#xff0c;工程文件是以.pro后缀的文件&#xff0c;主要用以包含Qt模块&#xff0c;代码文件&#xff0c;依赖库&#xff0c;以及对项目的一些属性进行配置。 具体看个例子&#xff1a; #这块是添加Qt模块 #.pro文件中使用#号作为注释 QT core gui #QT webengine…...

相亲交友中的用户画像构建方法探讨

随着互联网技术的发展&#xff0c;相亲交友平台成为现代人寻找伴侣的重要渠道之一。在这一过程中&#xff0c;如何精准地为用户推荐合适的对象成为了平台能否成功的关键。本文旨在探讨相亲交友平台中用户画像的构建方法&#xff0c;并分析其对于提高匹配度的重要性&#xff08;…...

总结

本来想把这个写完再写总结的&#xff0c;但是我发现卡了&#xff0c;明天去问问别人。 今天写上传个文件&#xff0c;没上传好&#xff0c;找到问题了&#xff0c;但是还不知道怎么改&#xff0c;我发给前端成功了&#xff0c;刚刚看了下好像是这里的问题&#xff0c;但是不是…...

C# 开发教程-入门基础

1.C# 简介、环境&#xff0c;程序结构 2.C# 基本语法&#xff0c;变量&#xff0c;控制局域&#xff0c;数据类型&#xff0c;类型转换 3.C# 数组、 循环&#xff0c;Linq 4.C# 类&#xff0c;封装&#xff0c;方法 5.C# 枚举、字符串 6.C# 面相对象&#xff0c;继承&#xff0…...

Windows上,使用远程桌面连接Ubuntu

要在 Ubuntu 上设置公网 IP 并通过 Windows 远程桌面连接到 Ubuntu&#xff0c;你需要完成以下步骤&#xff1a; 设置 Ubuntu 公网 IP&#xff1a; 确保你的 Ubuntu 服务器已经配置了一个公网 IP 地址。 你可以通过云服务提供商&#xff08;如 AWS、Azure、Google Cloud&#…...

SharePoint Online 计划 1 部署方案

概述 SharePoint Online 是 Microsoft 365 的一部分,为组织提供了一种高效、灵活的协作平台。SharePoint Online 计划 1(Plan 1)尤其适用于中小型企业,提供了基本的文档管理和协作功能。本文将详细介绍如何部署 SharePoint Online 计划 1,并探讨其配置、管理和最佳实践。…...

kubernetes存储之GlusterFS(GlusterFS for Kubernetes Storage)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...

网络安全等保培训 ppt

网络安全等级保护怎么做&#xff1f;...

开关磁阻电机(SRM)系统的matlab性能仿真与分析

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 SRM的基本结构 4.2 SRM的电磁关系 4.3 SRM的输出力矩 5.完整工程文件 1.课题概述 开关磁阻电机(SRM)系统的matlab性能仿真与分析&#xff0c;对比平均转矩vs相电流&#xff0c;转矩脉动vs相电流&a…...

最新动态一致的文生视频大模型FancyVideo部署

FancyVideo是一个由360AI团队和中山大学联合开发并开源的视频生成模型。 FancyVideo的创新之处在于它能够实现帧特定的文本指导&#xff0c;使得生成的视频既动态又具有一致性。 FancyVideo模型通过精心设计的跨帧文本引导模块&#xff08;Cross-frame Textual Guidance Modu…...

茴香豆:企业级知识问答工具实践闯关任务

基础任务 在 InternStudio 中利用 Internlm2-7b 搭建标准版茴香豆知识助手&#xff0c;并使用 Gradio 界面完成 2 轮问答&#xff08;问题不可与教程重复&#xff0c;作业截图需包括 gradio 界面问题和茴香豆回答&#xff09;。知识库可根据根据自己工作、学习或感兴趣的内容调…...

英飞凌 PSoC6 RT-Thread 评估板简介

概述 2023年&#xff0c;英飞凌&#xff08;Infineon&#xff09;联合 RT-Thread 发布了一款 PSoC™ 62 with CAPSENSE™ evaluation kit 开发板 &#xff08;以下简称 PSoC 6 RTT 开发板&#xff09;&#xff0c;该开发套件默认内置 RT-Thread 物联网操作系统。PSoC 6 RTT 开…...

卡证检测矫正模型与ChatGPT联动:打造智能问答审核助手

卡证检测矫正模型与ChatGPT联动&#xff1a;打造智能问答审核助手 你有没有遇到过这样的场景&#xff1f;用户上传了一张歪歪扭扭、光线昏暗的身份证照片&#xff0c;你需要手动把它摆正、调亮&#xff0c;然后一个字一个字地把姓名、身份证号敲进系统里核对。或者&#xff0c…...

ModTheSpire终极指南:杀戮尖塔模组加载器完整使用教程

ModTheSpire终极指南&#xff1a;杀戮尖塔模组加载器完整使用教程 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire ModTheSpire是一款专为《杀戮尖塔》设计的强大模组加载器&#xff0c…...

Bidili Generator企业应用:广告公司客户提案阶段快速生成视觉概念稿

Bidili Generator企业应用&#xff1a;广告公司客户提案阶段快速生成视觉概念稿 1. 引言&#xff1a;提案阶段的视觉痛点与解决方案 在广告公司的日常工作中&#xff0c;客户提案阶段往往是最紧张、最考验创意执行效率的环节。传统的视觉概念稿制作流程通常是这样的&#xff…...

Pr剪辑效率翻倍秘籍:除了选对GPU加速,这3个隐藏设置让你的老电脑也起飞

Pr剪辑效率翻倍秘籍&#xff1a;除了选对GPU加速&#xff0c;这3个隐藏设置让你的老电脑也起飞 在视频剪辑的世界里&#xff0c;时间就是金钱。当你盯着进度条缓慢爬行&#xff0c;或者面对频繁的卡顿和崩溃时&#xff0c;那种无力感足以让任何创意工作者抓狂。很多人第一时间…...

webrtc推流能成为直播的主要方案吗?

妮妮&#xff1a;今天我们聊聊Web RTC做直播推流。小新&#xff1a;好的&#xff0c;WHIP推流协议实现已经合入FFMPEG&#xff0c;OBS。推进了web rtc推流的方案。妮妮&#xff1a;那什么是WHIP协议呢&#xff1f;小新&#xff1a;WHIP的全称是&#xff1a;Web RTC HTTP Ingest…...

华硕笔记本合盖模式终极指南:告别外接显示器休眠烦恼

华硕笔记本合盖模式终极指南&#xff1a;告别外接显示器休眠烦恼 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...

Instructions版本迁移终极指南:从1.x到2.x的5个关键升级步骤

Instructions版本迁移终极指南&#xff1a;从1.x到2.x的5个关键升级步骤 【免费下载链接】Instructions Create walkthroughs and guided tours (coach marks) in a simple way, with Swift. 项目地址: https://gitcode.com/gh_mirrors/in/Instructions Instructions是一…...

快速上手:IronPython 3开发环境配置与第一个程序

快速上手&#xff1a;IronPython 3开发环境配置与第一个程序 【免费下载链接】ironpython3 Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime. 项目地址: https://gitcode.com/gh_mirrors/ir/ironpython3 IronPy…...

在WSL中一键部署Phi-4-mini-reasoning:Windows开发者的Linux模型推理环境搭建

在WSL中一键部署Phi-4-mini-reasoning&#xff1a;Windows开发者的Linux模型推理环境搭建 1. 为什么选择WSL部署Phi-4-mini-reasoning 对于习惯Windows环境的开发者来说&#xff0c;直接在本地运行Linux环境下的AI模型往往是个挑战。Windows Subsystem for Linux (WSL) 提供了…...

Youtu-VL-4B-Instruct保姆级部署教程:5分钟搞定看图说话AI,小白也能快速上手

Youtu-VL-4B-Instruct保姆级部署教程&#xff1a;5分钟搞定看图说话AI&#xff0c;小白也能快速上手 1. 为什么选择Youtu-VL-4B-Instruct&#xff1f; Youtu-VL-4B-Instruct是一个能同时理解图片和文字的AI模型&#xff0c;它基于腾讯优图实验室开发的40亿参数视觉语言模型。…...