2016-02-05 79 views
2

好吧,基本上我想创建一个符号链接“ln -s”从我的主机到我的容器。符号链接主机到码头集装箱

综上所述:该主机的主机文件夹.m2目录必须有我的容器内的符号链接到文件夹的.m2,是这样的:$ LN -s containerIp:/root/.m2 myContainerAlias

我已经看到下面的帖子,但他们没有帮助我,因为我不想将文件复制到我的本地主机。

Docker - copy file from container to host

Apache in Docker says: Symbolic link not allowed

https://omarabid.com/symlink-to-a-mounted-volume-in-docker/

编辑:

我发现这里的另一个有价值的问题:

How to mount a directory in the docker container to the host? 谢谢...

回答

0

如果您想要在主机和容器之间共享数据,或者反之亦然,则需要使用docker volume

有很多方法可以做到这一点,但对于你的情况最简单的就是mount a host directory as a data volume。这是通过docker标记-v完成的。例如,docker run -it -v /path/to/.m2:/root/.m2 ubuntu:latest /bin/bash将运行ubuntu:latest图像,主机目录/path/to/.m2'符号链接'到容器目录/root/.m2

希望有所帮助。

+0

嗨JamesStewy,首先感谢您的回答... 嗯,我正在使用卷已经用于另一个目的,并且就我所关心的使用它而言,我需要让我的主机中的文件将它们镜像到容器中(请纠正我,如果我是worng请)。 此外,我真正想要的只是引用.m2目录中的依赖关系文件,这是从我的主机执行的(没有主机内部的依赖关系)。 – Bevilaqua

0

听起来像你想优化在容器内运行的Maven构建?

docker run -it --rm -w /opt/maven \ 
    -v $PWD:/opt/maven \ 
    -v $HOME/.m2:/root/.m2 \ 
    maven:3.3-jdk-8 \ 
    mvn clean install 

+0

感谢您的回答Mark O'Connor,但我真正想要的是与此相反,我不想在主机中拥有.m2,只能在容器中(在构建时已经在DockerFIle中设置) ),并且这样,所有其他将要使用该容器的开发人员将不必在自己的主机中下载这些文件。 – Bevilaqua

+0

@Bevilaqua默认情况下这是Maven的工作方式(罐子被缓存在“/root/.m2”下)。就我个人而言,我认为使用容器内文件的开发人员之间共享罐子有点不灵活。另一种方法是运行一个Nexus实例,允许您为组织内的所有开发人员在本地缓存罐子。请参阅以下示例http://stackoverflow.com/questions/27767264/how-to-dockerize-maven-project-and-how-many-ways-to-accomplish-it/27768965#27768965 –