指定容器中服务的工作目录,需要使用绝对路径。
6、COPY
将构建上下文中指定的文件、目录复制到镜像中。COPY 命令会增加镜像层数。
7、ADD
将构建上下文中指定的文件、目录、远程URL复制到镜像中,特定格式的压缩文件会直接解压到镜像目录。ADD 命令会增加镜像层数。
8、VOLUME
指定主机、容器之间的映射目录。
9、ENV
指定容器所需的环境变量,key=value 形式。
10、LABEL
指定容器所需的标签信息,key=value 形式。
11、EXPOSE
指定容器中服务的监听端口。
三、多阶段构建
多阶段构建是通过在一个 Dockerfile 中使用多个 FROM 语句来实现的。
每个 FROM 指令都可以使用不同的基础镜像,并表示开始一个新的构建阶段。
# 第一阶段:在 golang 镜像中编译go代码
FROM golang AS build-env # 定义索引,用于被其他阶段引用
ADD /go/src/app
WORKDIR /go/src/app
RUN go get -u -v github.com/kardianos/govendor
RUN govendor sync
RUN GOOS=linux GOARCH=amd64 go build -v -o /go/src/app/app-server
# 第二阶段:在 alpine 镜像中直接引用第一阶段产生的二进制文件,并完成其他构建内容
FROM alpine
COPY --from=build-env /go/src/app/app-server /usr/local/bin/app-server
RUN apk add -U tzdata
RUN In -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 8080
CMD "app-server"
四、反向解析 Dockerfile
笔者文章【Docker】MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)中曾提到通过镜像获取 Dockerfile,本文再介绍几种通过镜像文件反向解析 Dockerfile 的方法。
1、dfimage 工具
alias dfimage="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock alpine/dfimage"
dfimage -sV=1.36 nginx:latest
🔔 参数 -sV=1.36 用于指定客户端版本,若不指定,部分 docker 版本下可能报错:
Error response from daemon: client version 1.41 is too new. Maximum supported API version is 1.40
Use the -sV flag to change your client version
2、whaler 工具
alias whaler="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler"
whaler -sV=1.36 nginx:latest
3、dive 工具
相比上述两种工具,dive 可以获取更详细信息,如每一层文件增减等。
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
dive nginx:latest
五、构建多架构镜像
当我们使用 AMD64 架构的镜像在 ARM64 架构的服务器上运行时会出现报错:
standard_init_linux.go:211: exec user process caused “exec format error”,原因就是镜像与服务器架构不一致。这就需要考虑构建镜像时生成支持多种架构的镜像。本文介绍两种构建多架构镜像的方法。
1、docker manifest 方法
# 第一步:构建不同架构镜像
docker build --pull --platform=linux/amd64 -f Dockerfile -t demo:v1-amd64 .
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/f50ccaa575920744635b5e2d3eabc8c5.png)
![img](https://img-blog.csdnimg.cn/img_convert/dadd9f1e86efadc8729fa66967f5b39b.png)
![img](https://img-blog.csdnimg.cn/img_convert/3e8f6dd979e92a984585f678a42a9152.png)
![img](https://img-blog.csdnimg.cn/img_convert/759ae7fa778d6955423e721a6d01d261.png)
![img](https://img-blog.csdnimg.cn/img_convert/da546f8a0a85f2d0d92a6df20f01611c.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
![img](https://img-blog.csdnimg.cn/img_convert/c882a5f8b29fa716a71fd23bcf9401bc.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/9a8cb5f8c0ec69e6499adead0da6e95b.png)
最全的Linux教程,Linux从入门到精通
======================
1. **linux从入门到精通(第2版)**
2. **Linux系统移植**
3. **Linux驱动开发入门与实战**
4. **LINUX 系统移植 第2版**
5. **Linux开源网络全栈详解 从DPDK到OpenFlow**
![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/59742364bb1338737fe2d315a9e2ec54.png)
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/9d4aefb6a92edea27b825e59aa1f2c54.png)
**本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**
> 需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/c882a5f8b29fa716a71fd23bcf9401bc.jpeg)
通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-UINtJCkx-1712749496188)]