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将其展平一级,因此建议将目录重新组织到公共父文件夹中