Python全系列 教程
3567个小节阅读:5929.4k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
用于从宿主机目录复制文件到容器内的目录
格式
xxxxxxxxxx
11ADD <src> <dest>
示例
xxxxxxxxxx
61# 从本地目录复制文件
2ADD test.txt /tmp/
3# 从本地压缩文件中复制并解压缩
4ADD test.tar.gz /tmp/
5# 从远程URL下载文件并复制
6ADD http://example.com/test.txt /tmp/
用于从宿主机目录复制文件到容器内的目录
格式
xxxxxxxxxx
11ADD <src> <dest>
示例
xxxxxxxxxx
41# 将本地文件复制到容器
2COPY test.txt /tmp/
3# 将本地目录复制到容器
4COPY test_dir /tmp/
提示
COPY 与 ADD 区别:
复制来源
COPY
: 用于从构建上下文中的本地文件系统复制文件或目录到容器镜像中。通常,COPY
用于复制本地文件,不包括 URL。ADD
:ADD
指令不仅可以复制本地文件,还可以从远程 URL 复制文件。自动解压
COPY
: 不会自动解压复制的文件,复制的文件在容器中保持原始状态。ADD
: 如果复制的是压缩文件,ADD
会自动解压文件到目标位置。复制文件的权限
COPY
: 复制文件时保留文件的原始权限和时间戳。
ADD
: 复制文件时,会将文件的权限设置为默认值(通常为0644
或0755
)
- 0644表示文件权限为
-rw-r--r--
- 0755表示文件权限为
-rwxr-xr-x
用于预定义镜像中的挂载目录,以便通过docker run -v参数实现宿主机和容器之间的数据交换
格式
xxxxxxxxxx
11VOLUME ["/data"]
示例
xxxxxxxxxx
31FROM ubuntu
2RUN mkdir /myvol
3VOLUME /myvol
提示
为什么要预挂载目录?
- VOLUME可以提前声明容器内可以被挂载的目录,作为一种文档,方便知道镜像的设计和用途。
- 如果不使用-v参数挂载,VOLUME会创建一个匿名卷,提供一个空目录供容器使用。
- 如果多次挂载同一个挂载点,后面的会覆盖前面的,VOLUME可以减少这种意外发生
- 将来维护这个镜像的人,可以直接从Dockerfile看到设计者的预期。
总结一下, 不使用VOLUME也可以实现挂载,但是使用VOLUME可以让镜像语义更明确,使用更安全,也更有利于镜像的维护
课上代码
xxxxxxxxxx
151# 指定基础镜像
2FROM centos:7
3# 复制文件ADD/COPY 宿主的路径不能是绝对路径, 镜像的路径以/结尾表示是文件夹
4# ADD a1.info /opt/data/
5# ADD test.tar.gz /opt/data/
6# ADD https://www.taobao.com/robots.txt /opt/data/
7# ADD a1.info test.tar.gz /opt/data/
8
9COPY a1.info /opt/data/
10# COPY test.tar.gz /opt/data/
11# COPY https://www.taobao.com/robots.txt /opt/data/
12
13# 预定义数据卷
14VOLUME /opt/baizhan
15VOLUME /SXT
实时效果反馈
1. 在 Dockerfile 中,以下哪个指令不能将本地文件或目录复制到容器镜像中?
A ADD
B COPY
C VOLUME
D RUN
2. Dockerfile 中的 ADD
和 COPY
指令之间有什么主要区别?
A ADD
用于复制文件,COPY
用于创建数据卷
B ADD
会自动解压压缩文件,COPY
不会自动解压
C COPY
可以从远程 URL 复制文件,而 ADD
不支持
D ADD
和 COPY
是完全相同的,可以互换使用
答案
1=>D 2=>B