Dockerfile制作镜像
Dockerfile制作镜像
Dockerfile介绍
dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,因此,层越多,效率越低,创建镜像,层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。
使用docker build命令,用户可以创建基于基础镜像的自定义镜像。
Dockerfile指令
FROM
指定基础镜像,Dockerfile的第一条命令
格式:
FROM
FROM :
若使用第一种格式,则基础镜像的tag为latest
MAINTAINER
镜像维护者信息
格式:
MAINTAINER
RUN
构建镜像时在镜像中运行的shell命令
格式:
RUN
RUN [“executable”, “param1”, “param2”]
第一种格式(shell形式)默认使用/bin/sh -c 执行命令,推荐使用第一种格式
第二种格式(exec形式)使用exec执行命令
若想使用其他shell类型执行命令,请使用第二种格式即 RUN [“/bin/bash”,“-c”,“command”]
多条RUN命令可以合并,如:
RUN command1
&& command2
&& command3
ENV
设置镜像的环境变量
格式:
ENV
ENV = …
第一种格式一次只能设置一个环境变量
第二种可以设置多个环境变量,若需换行使用反斜杠()
EXPOSE
设置启动镜像时要暴露的端口,用于与外界交互
格式:
EXPOSE […]
VOLUME
申明容器挂载点
格式:
VOLUME [“/path1/to/dir1”,“/path2/to/dir2”]
USER
指定启动镜像时运行用户
格式:
USER [:]
USER [:]
使用用户之前请确保镜像中有该用户,创建用户可以 RUN groupadd -r 用户 && useradd -u uid -r -g 用户组 用户
使用USER指定用户后,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户
WORKDIR
设置进入容器的默认目录
格式:
WORKDIR </path/to/workdir>
ADD
拷贝本地文件或目录到镜像中
格式:
ADD
ADD [“”, “”] 用于支持包含空格的路径
src是Dockerfile文件所在的同一级目录或者同级目录的子目录路径
tar类型的文件会自动解压到dest目录下
注意:
1.src是个文件,且dest以 / 结尾, 则docker会把dest当作目录,会把src文件拷贝到dest目录下。
如果dest不存在,则会自动创建
2.src是个文件,且dest不以 / 结尾,则docker会把dest当作文件,会把dest文件替换为src文件。
如果dest不存在,则创建名为src的文件
3.src是个目录,且dest不存在,则docker会自动以dest创建一个目录,把src目录下的文件拷贝进来。
如果dest是个已经存在的目录,则docker会把src目录下的文件拷贝到dest下
COPY
拷贝本地文件或目录到镜像中
格式:
COPY
与ADD功能相似,但是不能解压tar类型的文件
CMD
启动容器时执行的shell命令
格式:
CMD [“executable”,“param1”,“param2”] (exec形式执行可执行文件,优先)
CMD command param1 param2 (shell形式执行命令)
Dockerfile中只能有一条CMD命令,如果指定多条,只有最后一条生效,推荐使用第一种格式
第二种格式默认使用/bin/sh -c 执行命令
若要改变shell类型,请使用第一种格式即 CMD [“/bin/bash”,“-c”,“command”,“param1”,“param2”]
CMD会被docker run命令行指定的参数所覆盖
ENTRYPOINT
启动容器时执行的shell命令
格式:
ENTRYPOINT [“executable”,“param1”,“param2”] (exec形式执行可执行文件,优先)
ENTRYPOINT command param1 param2 (shell形式执行命令)
第二种格式默认使用/bin/sh -c 执行命令
Dockerfile文件中也可以存在多个ENTRYPOINT指令,但仅有最后一个会生效
同CMD类似,但是不会被docker run命令行指定的参数所覆盖,可以被docker run --entrypoint 覆盖
若Dockerfile中既有CMD(通常位置会在ENTRYPOINT之后)又有ENTRYPOINT,则CMD会被当做参数传递给ENTRYPOINT
ARG
构建镜像时,指定变量
格式:
ARG
ARG =
第一种格式:变量值可以在docker build --build-arg name=value时指定
制作镜像
制作镜像的基础命令:
Dockerfile在当前目录下:
docker build -t 镜像名:tag .
Dockerfile不在当前目录下(-f 指定Dockerfile文件路径,xxx/为构建docker镜像时的上下文路径,即该目录下的文件可以在Dockerfile中COPY/ADD):
docker build -t 镜像名:tag -f xx/Dockerfile xxx/
相关文章:
Dockerfile制作镜像
Dockerfile制作镜像 Dockerfile介绍 dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动…...

如何在宝塔面板中设置FTP文件传输服务并实现远程文件管理
文章目录 1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 宝塔FTP是宝塔面板中的一项功能,用于设置和管理FTP服务。通过宝塔FTP,用户可以创建FTP账号,配置FTP用户权限…...
记录 | 设置容器内外时间一致
1.共享主机的localtime 创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的 docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro docker.io/nginx /bin/bash 2.复制主机的localtime docker …...
LeetCode 239 滑动窗口最大值
LeetCode 239 滑动窗口最大值 问题描述 给定一个整数数组 nums 和一个整数 k,定义一个大小为 k 的滑动窗口,该窗口从数组的最左侧移动到最右侧。你可以看到在滑动窗口内的 k 个数字,并返回滑动窗口中的最大值。 解题思路 我们可以利用一个…...
Vue单文件组件(SFC)规范
Vue 单文件组件 (SFC) 规范 文件地址:Vue单文件组件规范 简介 .vue 文件是一个自定义的文件类型,用类 HTML 语法描述一个 Vue 组件。每个 .vue 文件包含三种类型的顶级语言块 <template>、<script> 和 <style>,还允许添加…...

简单版 git快速上手使用 clone项目 新建/切换分支 提交修改
Git是一个广泛使用的版本控制系统,允许多个用户跟踪文件的更改,并协作开发项目。 首先确定自己电脑已经安装了git,具体安装步骤请查找教程,应该不难。 以windows电脑为例,安装完后在搜索栏搜索git会出现 先解释一下这…...

本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法
aiboco团队荣获本届挑战赛季军。该团队来自亿阳信通。 方案介绍 本届挑战赛采用开放式赛题,基于建行云龙舟运维平台的稳定性工具和多维监控系统,模拟大型的生活服务APP的生产环境,提供端到端的全链路的日志、指标和调用链数据。参赛队伍在组…...
【MySQL】_内连接
本专栏关于联合查询已建好相应库与表,链接如下: 【MySQL】_联合查询基础表-CSDN博客 基于以上库与表,本篇介绍内连接; 内连接表示语法有两种: 第一种: select [列名],[列名]... form [表1],[表2] where…...

ElasticSearch之跨集群搜索cross cluster search
写在前面 本文看下跨集群搜索相关内容。 1:实战 1.1:创建集群 bin/elasticsearch -E node.namecluster0node -E cluster.namecluster0 -E path.datacluster0_data -E discovery.typesingle-node -E http.port9200 -E transport.port9300 bin/elastic…...

06|Mysql内部组件结构
1. 连接器 客户端要向mysql发起通信都必须先跟Server端建立通信连接,而建立连接的工作就是由连接器完成的 mysql -h host[数据库地址] -u root[用户] -p root[密码] -P 3306连接步骤: 1、如果用户名或密码不对,你就会收到一个"Access denied for us…...
文件的写出操作
1. 文件不存在,创建文件后写出方法: <1>打开文件:open()方法是文件不存在时创建文件 file open("D:/test.txt","w",encoding"UTF-8")<2>写出文件: file.write("please open your book") #内容写到内…...
使用gitlab搭建npm的依赖库,并在项目中使用
使用gitlab搭建npm的依赖库,并在项目中使用 背景 1, 在多个项目中都有个公共的库包,又不想发布到npm 2, 一些开源的库,修改了一些定制化的东西,又不想推送代码到开源仓库(不一定会合并你的代码…...

如何让电脑待机而wifi不关的操作方法!!
1、一台电脑如果一天不关机,大约消耗0.3度电。 一般一台电脑的功耗约为250-400W(台式机)。 一台电脑每月的耗电量:如果是每小时300W每天10小时每月30天90KW,即90千瓦时的电。 这只是保守估计。 2、使用完毕后正常关闭…...
如何在Spring Boot应用中进行文件预览?
在Spring Boot应用中实现文件预览功能,具体方法取决于文件的类型和你想如何预览它们。以下是一些常见文件类型的预览方法: 1. **图片预览**: 对于图片文件,你可以直接在HTML页面中通过<img>标签的src属性引用图片的URL来…...

阿里云4核16G服务器多少钱?幻兽帕鲁配置报价
2024阿里云幻兽帕鲁专用服务器价格表:4核16G幻兽帕鲁专用服务器26元一个月、149元半年,默认10M公网带宽,8核32G幻兽帕鲁服务器10M带宽价格90元1个月、271元3个月。阿里云提供的Palworld服务器是ECS经济型e实例,CPU采用Intel Xeon …...

el-autocomplete 提示文字出不来?修改支持模糊搜索提示
查看本专栏目录 关于作者 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas&#x…...

CentOS8 同步时间chrony ntpdate已无法使用
CentOS8系统中,原有的时间同步服务 ntp/ntpdate服务已经无法使用,使用yum安装,提示已不存在。 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) [rootlocalhost ~]# yum install ntp 上次元数据过期检查…...

NFS服务器挂载失败问题
问题 mount.nfs: requested NFS version or transport protocol is not supported背景:现在做嵌入式开发,需要在板端挂载服务器,读取服务器文件。挂载中遇到该问题。 挂载命令长这样 mount -t nfs -o nolock (XXX.IP):/mnt/disk1/zixi01.ch…...

(Linux学习二)文件管理基础操作命令笔记
Linux目录结构: bin 二进制文件 boot 启动目录 home 普通用户 root 超管 tmp 临时文件 run 临时运行数据 var 日志 usr 应用程序、文件 etc 配置文件 dev 文件系统 一、基础操作 在 Linux 终端中,你可以使用以下命令来清屏: clear 命令&am…...

Docker本地部署GPT聊天机器人并实现公网远程访问
文章目录 前言1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址9. 结语 前言 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛&…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...

CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...