Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何将Docker复制到用户根目录~_Bash_Docker - Fatal编程技术网

Bash 如何将Docker复制到用户根目录~

Bash 如何将Docker复制到用户根目录~,bash,docker,Bash,Docker,我正在写一个Dockerfile来在我的Windows装备上运行ROS,我似乎无法让这个COPY命令复制到容器的用户根目录或任何子目录。我尝试过一些事情,包括搞乱所有权。我知道文件很难看,但仍在学习。我真的不知道这里有什么问题 该文件位于/repos目录旁边,该目录中有一个git repo,可以找到它(rosnoetic分支)。这也是我构建和运行容器的位置 总体目标是让roscore运行(已经运行),然后使用另一个终端执行,并让rosrun ros_essentials_cpp(节点名称)实际工

我正在写一个Dockerfile来在我的Windows装备上运行ROS,我似乎无法让这个COPY命令复制到容器的用户根目录或任何子目录。我尝试过一些事情,包括搞乱所有权。我知道文件很难看,但仍在学习。我真的不知道这里有什么问题

该文件位于/repos目录旁边,该目录中有一个git repo,可以找到它(rosnoetic分支)。这也是我构建和运行容器的位置

总体目标是让roscore运行(已经运行),然后使用另一个终端执行,并让rosrun ros_essentials_cpp(节点名称)实际工作

# ros-noetic with other stuff added
FROM osrf/ros:noetic-desktop-full
SHELL ["/bin/bash", "-c"]
RUN apt update
RUN apt install -y git
RUN apt-get update && apt-get -y install cmake protobuf-compiler
RUN bash
RUN . /opt/ros/noetic/setup.bash && mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/ && chmod 777 src && catkin_make && . devel/setup.bash
RUN cd /
RUN mkdir /repos
COPY /repos ~/catkin_ws/src
RUN echo ". /opt/ros/noetic/setup.bash" >> ~/.bashrc

您需要注意docker上下文。 构建docker时,您正在添加构建映像的路径。 如果您不在
/
文件夹中,您的
复制/repos
命令将无法工作

尝试使用以下内容更改docker上下文:

docker build /

您需要注意docker上下文。 构建docker时,您正在添加构建映像的路径。 如果您不在
/
文件夹中,您的
复制/repos
命令将无法工作

尝试使用以下内容更改docker上下文:

docker build /

将tilde扩展到主目录是一个shell功能,Dockerfile的
COPY
命令显然不支持该功能。您正在将文件放入一个名为
~
的目录中,即您的容器映像可能包含以下内容:

...
dr-xr-xr-x  13 root root     0 Jun  9 00:07 sys
drwxrwxrwt   7 root root  4096 Nov 13  2020 tmp
drwxr-xr-x  13 root root  4096 Nov 13  2020 usr
drwxr-xr-x  18 root root  4096 Nov 13  2020 var
drwxr-xr-x   2 root root  4096 Jun  9 00:07 ~      <--- !!!

将tilde扩展到主目录是一个shell功能,Dockerfile的
COPY
命令显然不支持该功能。您正在将文件放入一个名为
~
的目录中,即您的容器映像可能包含以下内容:

...
dr-xr-xr-x  13 root root     0 Jun  9 00:07 sys
drwxrwxrwt   7 root root  4096 Nov 13  2020 tmp
drwxr-xr-x  13 root root  4096 Nov 13  2020 usr
drwxr-xr-x  18 root root  4096 Nov 13  2020 var
drwxr-xr-x   2 root root  4096 Jun  9 00:07 ~      <--- !!!

考虑使用<代码> Env提供<代码> $home <代码>;请参阅使用<代码> Env以提供<代码> $home <代码>;看见