【Dockerfile学习笔记】常用命令及参数意义

news/2025/1/13 7:50:06/

什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

下面罗列一下常用的与镜像有关的命令:

列举本地的镜像:docker images
拉取镜像:docker pull tomcat
在仓库中查找镜像:docker search tomcat
根据名称删除镜像:docker rmi tomcat:alpine
根据id删除镜像:docker rmi 8b8b1eb786b5
构建镜像:docker build -t mytest:v1 .
设置标签:docker tag tomcat:alpine tomcat:alpine-test
相当于只是设置了软链接!下面可以看到Image ID都是一样的!
上下文路径
docker build -t mytest:v1 .
-t:设置镜像名称和标签,默认标签是latest,完整格式my-test:latest
.:构建上下文路径
Dockerfile指令
上面的Dockerfile涉及几种指令:FROM、RUN、COPY、CMD、EXPOSE,除此之外,还有其他指令,下面我们逐条分析它们!
FROM:指定基础镜像
COPY:复制文件
从上下文路径中copy文件到容器的指定路径!
RUN:运行命令 (支持shell和exec格式)
Run touch test-1.txt

Run [“touch”,”text-2.txt”]

CMD:运行命令(启动容器时
区别是运行时机不一样:
RUN:构建镜像(docker build)时运行命令
CMD:启动容器(docker run)时运行命令

指定容器启动时的命令:
FROM alpine
RUN touch test-1.txt
RUN [“touch”, “test-2.txt”]
CMD [“echo”, “Hello Docker!”]

非常重要的一点:
CMD的作用是给容器指定默认的程序,所以当命令结束时,容器也会退出!

docker run my-test
Hello Docker!

也就是说容器的生命周期随着CMD指令的完成而退出!!!!
当Dockerfile中声明多条CMD指令时,前面的会被最后一条CMD命令覆盖!
FROM alpine
RUN touch test-1.txt
RUN [“touch”, “test-2.txt”]
CMD [“echo”, “Hello 1”]
CMD [“echo”, “Hello 2”]

上面的容器,只会输出Hello 2
另外,CMD指令也会被docker run指定的命令覆盖!
docker run my-test echo “This is Docker”
This is Docker
ENTRYPOINT:运行命令(启动容器时)
FROM alpine
RUN touch test-1.txt
RUN [“touch”, “test-2.txt”]
CMD [“echo”, “Hello 1”]
CMD [“echo”, “Hello 2”]
ENTRYPOINT [“echo”, “Hello ENTRYPOINT 1”]
ENTRYPOINT [“echo”, “Hello ENTRYPOINT 2”]
ARG:设置变量
相当于局部变量,只是在构建镜像时可用$VERSION_ARG
ARG VERSION_ARG=1001
ENV:设置环境变量
ARG的加强版,同时设置到环境变量中:
ENV VERSION_ENV=8
ARG VERSION_ARG=1001
VOLUME:定义默认的数据卷
EXPOSE :声明端口
1.相当于注释,告诉修改镜像的人,这些容器端口对外暴露了
2.作为默认端口使用
WORKDIR:设置工作目录
构建镜像的过程中,每个RUN都会新建一层,所以只有工作目录会一直存在!相当于构建镜像时,层与层之间的共享目录!
 USER:指定命令执行的用户
切换用户,然后执行接下来的指令


http://www.ppmy.cn/news/37011.html

相关文章

线程池(2022-09-29)

文章目录前言一、线程池的常用构建方式1.构造方法实现(推荐)2.通过 Executor 框架的工具类 Executors 来实现(不推荐)3.Spring框架提供4.Guava,hutool的ThreadFactoryBuilder5.线程池的异常处理二、线程池核心 阻塞队列 BlockingQueue1.二级标题三、线程池异常1.try…

【理论推导】变分自动编码器 Variational AutoEncoder(VAE)

变分推断 (Variational Inference) 变分推断属于对隐变量模型 (Latent Variable Model) 处理的一种技巧,其概率图如下所示 我们将 X{x1,...xN}X\{ x_1,...x_N \}X{x1​,...xN​} 看作是每个样本可观测的一组数据,而将对应的 Z{z1,...,zN}Z\{z_1,...,z_N…

优漫动游影视后期学什么?

影视后期就是对前期拍摄的视频进行剪辑,对文字、调色、特效等后期处理,最终形成我们所看到的成片。   影视后期从应用划分,核心包括两个大的应用领域,影视剧方向和广告与包装方向,影视剧方向比如电视剧&#xff0c…

微服务架构(一)

系统架构 随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。 从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构--->集群应用架构--->垂直应用架构--->SOA 架构--->微服务架…

类ChatGPT平台推荐【国内访问ChatGPT4】

类ChatGPT平台推荐【国内访问ChatGPT】 1 ChatGPT介绍 ChatGPT是OpenAI开发出的一个人工智能模型。但是国内大部分人因为网络限制无法访问和使用。今天推荐国内访问途经。 ChatGPT作用: 回答问题信息搜索语言翻译文本生成文案编写代码编程助手创意写作 … 注意&am…

发现一个白嫖GPT4.0的方法!真的是完胜3.5!

大家好,我是五竹。 先说个基本的科普,最近被问的人都嘛了。 1、ChatGPT账号只有两种:普通账号和plus账号。 2、普通账号升级到plus账号,需要绑定国外的支付方式,每个月大概130左右!plus账号更稳!更快&am…

cleanmymac最新2023版 mac清理软件CleanMyMac X4.12.5 中文版功能介绍

CleanMyMac X4.12.5 中文版只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉,节省宝贵的磁盘空间。cleanmymac x个人认为X代表界面上的最大升级,功能方面有更多增加,与最新macOS系统更加兼容,流畅地与系统性能更加…

VueX是什么?好处?何时使用?

VueX相关1、VueX是什么?2、使用VueX统一管理状态的好处3、什么样的数据适合存储到Vuex中?1、VueX是什么? VueX是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享。 如果没有VueX…