我用以下docker文件构建了一个docker映像:
FROM ubuntu:latest
# Install required packages
RUN apt-get update &&
apt-get install -y git build-essential libncurses5-dev zlib1g-dev gawk flex gettext wget unzip python3 python3-distutils python3-setuptools python3-dev libssl-dev &&
apt-get install -y clang bison g++ gcc-multilib g++-multilib rsync file &&
apt-get install -y ccache ecj fastjar java-propose-classpath libelf-dev libncursesw5-dev python2.7-dev subversion swig time xsltproc
# Clone OpenWrt repository
RUN git clone https://git.openwrt.org/openwrt/openwrt.git /root/source
RUN cd /root/source &&
./scripts/feeds update -a &&
./scripts/feeds install -a
# Change working directory
WORKDIR /root
然后我想共享/root/source
的内容到我的机器,以便从我的机器访问/root/source
目录,我可以浏览和编辑它。所以我用下面的命令运行docker:
docker run -it -v "$PWD/Shared":/root/source my_openwrt.docker
但是当我试图访问目录/root/source
时,我发现它是空的。如果我用
docker run -it my_openwrt.docker
我可以看到/root/source
的内容如何共享/root/source
的内容以便从我的机器上看到它?
只能将主机上的目录映射到容器中。而不是反过来。
执行-v "$PWD/Shared":/root/source
时,将主机Shared
目录的内容映射到容器中。由于该目录在主机上为空,因此它在容器中也变为空。实际上,它隐藏了图像中/root/source
目录的内容。
让它做你想做的一种方法是首先使用
将/root/source
的内容复制到Shared
docker run -v "$PWD/Shared":/destination my_openwrt.docker cp /root/source /destination
将/root/source
目录的内容复制到主机上的Shared
目录。
然后你可以像以前一样运行容器。但是由于Shared
目录现在包含来自/root/source
的文件,因此您可以在主机上的Shared
目录中看到这些文件。如果你修改了任何文件,这些修改将在容器中可见。