Docker COPY命令是否可以链接
是否可以像运行命令一样将复制命令链接在一起 链接运行命令的示例:Docker COPY命令是否可以链接,docker,dockerfile,Docker,Dockerfile,是否可以像运行命令一样将复制命令链接在一起 链接运行命令的示例: RUN echo "root:user_2017" | chpasswd && \ groupadd -g 1000 user && \ useradd -u 1000 -m -s /bin/bash user && \ passwd -d user 如果我必须执行从主机到映像的多个拷贝,下面显示的内容是否会阻止引入多个中间映像?我知道下面显示的内容不起作用
RUN echo "root:user_2017" | chpasswd && \
groupadd -g 1000 user && \
useradd -u 1000 -m -s /bin/bash user && \
passwd -d user
如果我必须执行从主机到映像的多个拷贝,下面显示的内容是否会阻止引入多个中间映像?我知道下面显示的内容不起作用,因为当使用&&
将多行连接在一起时,每行都需要是一个单独的命令
COPY ./folder1A/* /home/user/folder1B/ && \
./folder2A/* /home/user/folder2B/ && \
./folder3A/* /home/user/folder3B/ && \
./folder4A/* /home/user/folder4B/ && \
不,不是
RUN
在正在生成的容器中执行bash命令。您引用的链接依赖于&&
操作符,该操作符是一个执行左侧命令的bash操作符,但仅在左侧命令成功时(返回代码0)才执行右侧命令
您只能将bash命令放入RUN
和CMD
/ENTRYPOINT
中。因此,不幸的是,和&
将无法在复制中作为操作员工作
您只需编写四个独立的COPY
语句即可。由于COPY
命令无法链接,因此通常最好以便于复制到图像中的方式构造上下文(您要复制的目录)
因此,不是:
COPY ./folder1A/* /home/user/folder1B/ && \
./folder2A/* /home/user/folder2B/ && \
./folder3A/* /home/user/folder3B/ && \
./folder4A/* /home/user/folder4B/ && \
将这些文件夹放入公用目录并运行:
COPY user/ /home/user/
如果要复制文件,可以将多个文件复制到单个目标:
COPY file1.zip file2.txt file3.cfg /target/app/
如果您尝试对目录执行此操作,您会发现docker将其展平一级,因此建议将目录重新组织到公共父文件夹中