COPY 复制文件
COPY [--chown=<user>:<group>] <源路径>... <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置。
COPY package.json /usr/src/app/ 这个是把【上下文】路径下的package.json文件复制到【容器】的/usr/src/app/下
源路径可以是多个,并且支持通配。
COPY hom* /mydir/ COPY hom?.txt /mydir/
<目标路径> 可以是容器内的【绝对路径】,也可以是相对于【工作目录】的相对路径(工作目录可以用 WORKDIR 指令来指定)。目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。
PS:使用 COPY 指令,源文件的各种元数据都会保留 可以加上--chown=<user>:<group> 来确定用户和用户组。
ADD高级复制命令
ADD 指令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能。
1.<源路径>可以是url,下载后权限600.
2.支持tar压缩包,会自动解压。
CMD 容器启动命令
CMD 指令的格式和 RUN 相似,也是两种格式:
shell 格式: CMD <命令>
exec 格式: CMD ["可执行文件", "参数1", "参数2"...]
参数列表格式: CMD ["参数1", "参数2"...] 。在指定了 ENTRYPOINT 指令后,用 CMD 指定具体的参数。
CMD 指令就是用于指定默认的容器主进程的启动命令的。
比如直接执行 docker run -it ubuntu 其实是启了bash,因为这个镜像默认的CMD是/bin/bash,当然也可以再启动的时候指定运行程序,比如这样:
docker run -it ubuntu cat /etc/os-release,这会直接输出版本信息的
书中是建议使用exec格式,这类格式在解析时会被解析为JSON数组(因此一定用双引号不要用单引号)。
如果使用shell格式的话,实际的命令会被包装为 sh -c 的参数形式进行执行。比如:
CMD echo $HOME 在实际执行中,会将其变更为:CMD["sh", "-c", "echo $HOME"],也因为这个特点,才可以使用环境变量,因为shell会进行解析环境变量。
容器中应用在前台执行和后台执行的问题
Docker不是虚拟机,容器中的应用都应该在前台执行,而不像是虚拟机、物理机那样,用systemd去启动后台服务,容器内没有后台服务的概念。
比如 执行 CMD service nginx start 这个应该是想要后台启动nginx当服务用,但是真这么执行的时候,容器会立刻退出的。对于容器
DockerFile常用命令
最新推荐文章于 2023-04-22 21:24:59 发布
本文详细介绍了DockerFile中的常用命令,包括构建镜像的基础指令如`FROM`、`RUN`、`COPY`、`CMD`等,以及如何通过`EXPOSE`设置端口、`VOLUME`创建持久化数据卷、`LABEL`添加元数据等关键操作,帮助读者深入理解DockerFile在Docker镜像构建中的应用。
摘要由CSDN通过智能技术生成