我正在使用:
Docker 18.09.1
Ubuntu 16.04
Run Code Online (Sandbox Code Playgroud)
我想使用Dockerfile.
我的docker命令是:
sudo docker build -t mytest .
sudo docker run mytest
Run Code Online (Sandbox Code Playgroud)
我的Dockerfile是:
FROM ubuntu:16.04
RUN mkdir -p out/
COPY . out/ <---- this works
COPY /usr/bin/yes /opt <---- this doesn't work!!
CMD out/helloworld
Run Code Online (Sandbox Code Playgroud)
我在我的工作文件夹上C++调用helloworld了一个应用程序out/。但是,我想将一个名为"yes"which的文件复制/user/bin/到我的/opt文件夹中。
我已经尝试了COPY命令和CMD命令,但没有成功。
我试图通过在我的UbuntuVM上运行命令来检查文件是否存在:
docker run mytest ls -l /opt
total 0
Run Code Online (Sandbox Code Playgroud)
我的 COPY 尝试:
COPY /usr/bin/yes /opt
Run Code Online (Sandbox Code Playgroud)
我的 CMD 尝试:
CMD ["cp /usr/bin/yes /opt"]
Run Code Online (Sandbox Code Playgroud)
错误:
COPY failed: stat /var/lib/docker/tmp/docker-builder737799611/usr/bin/yes: no such file or directory
Run Code Online (Sandbox Code Playgroud)
两者都不起作用。如何将文件复制到另一个文件夹(在同一个 docker 映像内)?
BMi*_*tch 14
该COPY命令将文件从构建上下文(即示例中.命令末尾的docker build,也称为当前目录)复制到映像中。您无法将文件从构建上下文外部复制到映像中。
出于您的目的,您似乎想要在图像内的两个不同位置之间复制,而不是从构建上下文中复制。为此,只要cp几乎每个基本映像中都存在该命令,您就可以运行:
RUN cp /usr/bin/yes /opt/
Run Code Online (Sandbox Code Playgroud)
或者在 json/exec 语法中:
RUN [ "cp", "/usr/bin/yes", "/opt/" ]
Run Code Online (Sandbox Code Playgroud)
请注意,exec 语法要求您将命令的每个参数分隔到单独的 json 数组条目中。exec 语法也不会运行 shell,因此您无法执行变量扩展和 I/O 重定向等操作,在本例中并没有执行这些操作。
| 归档时间: |
|
| 查看次数: |
9621 次 |
| 最近记录: |