我刚接触过码头集装箱,我正在努力解决我现在面临的一个问题。
这些是我基于有限知识的理解。
当我们创建一个码头容器时,docker会创建一个本地挂载,并将其用作码头容器的根文件系统。
现在,如果我使用docker从主机服务器运行容器中的任何命令,那么docker就不会使用挂载的分区作为容器的/文件系统。我的意思是,它仍然会显示主机服务器中的二进制文件和env变量。是否有任何选项/替代解决方案使对接者也使用原来挂载的目录进行对接?
如果我使用对接器访问/启动容器,或者运行-i -t /bin/bash,那么我将挂载目录作为我的/文件系统,这给了我一个与我的主机系统完全独立的环境。但这种情况不会发生在docker命令中。
救命啊!!
发布于 2016-01-22 21:59:48
你是在误解的情况下运作的。码头映像只包含安装在其中的内容。出于效率原因,这通常是一个非常精简的操作系统版本。
对接器容器是从映像启动的,这是一个运行版本,可以更改和存储状态,但可能会被丢弃。
docker run从图像启动容器。您可以多次run相同的图像来创建完全不同的容器(它们的内容恰好具有相同的起点)。
docker exec附加到其中一个容器以运行命令。所以你只会看到里面的东西.在图像中,或者添加post start (如日志文件)。它对主机文件系统没有远见,而且可能不是同一个操作系统--唯一的要求是它共享内核的元素.虽然它通常有一些常用的二进制文件。
当您使用run创建一个容器时,您可以指定一个挂载。这样做的一个选择是通过主机文件系统,例如-v /path/on/host:/path_in/container。但您不必这样做,您可以使用数据容器或使用停靠卷挂载。例如,docker run -v /mount使用不是父主机一部分的docker文件系统在容器中创建一个挂载点。这可用于使用:docker create -v /path/to/data --name data_for_acontainer some_basic_image制作数据容器
然后从新的数据容器中挂载卷:
docker run -d --volumes-from data_for_acontainer some_app_image 它将把数据容器附加到/path/to/data挂载上。但是,在这两种情况下,“主机”文件系统都是直接接触到的--这就是篡改东西的全部要点。
https://stackoverflow.com/questions/34946253
复制相似问题