Amazon web services 与Docker文件和容器运行后共享Docker容器中的目录

Amazon web services 与Docker文件和容器运行后共享Docker容器中的目录,amazon-web-services,docker,dockerfile,Amazon Web Services,Docker,Dockerfile,在运行的docker容器和我的主机(在AWS上)之间共享数据似乎过于复杂。从docker文档来看,似乎在启动容器时需要指定卷 我发现: 但是它递归地监视,只从主机复制到docker容器 我正在寻找一种方法来创建(最好是在Dockerfile中)一个在AWS主机上可见的文件夹,在那里我可以scp文件进入该文件夹,并且它们将在我的docker容器上可见。我还希望我的docker图像能够写入该文件夹,这样如果容器停止,我就不会丢失这些文件 作为旁注,我已经在我的Dockerfile中声明 卷/培训硕士

在运行的docker容器和我的主机(在AWS上)之间共享数据似乎过于复杂。从docker文档来看,似乎在启动容器时需要指定卷

我发现: 但是它递归地监视,只从主机复制到docker容器

我正在寻找一种方法来创建(最好是在
Dockerfile
中)一个在AWS主机上可见的文件夹,在那里我可以
scp
文件进入该文件夹,并且它们将在我的docker容器上可见。我还希望我的docker图像能够写入该文件夹,这样如果容器停止,我就不会丢失这些文件

作为旁注,我已经在我的
Dockerfile
中声明 卷/培训硕士 但是我不知道如何从我的机器上访问它,当我停止容器时,我丢失了数据


有人知道怎么做吗?或者他们能给我指出正确的方向吗?

您要找的是docker运行时选项提供的。此处记录:

在它的结尾,它清楚地提到

Note: The host directory is, by its nature, host-dependent. 
For this reason, you can’t mount a host directory from Dockerfile 
because built images should be portable. A host directory wouldn’t 
be available on all potential hosts.

正如Raghav所说,由于映像可移植性,无法从Dockerfile创建和共享驱动器

但创建映像后,可以运行此命令,这将在主机和docker之间创建一个共享文件夹。请小心,因为如果docker容器中的目录与现有文件夹同名,则可以查看该目录:

$ sudo docker run -itd -v /home/ubuntu/Sharing dockeruser/imageID:version bash

/home/ubuntu/Sharing
——主机上共享文件夹的路径

/Share
--我的容器中共享文件夹的路径

dockruser/imageID:version
——容器的名称

-v
--指定您正在创建卷

-d
--对容器进行后台监控,并将其置于后台


bash
——容器要执行的命令

,仅供Windows用户参考:

1) 您可以通过以下方式将主机文件夹装载到容器中:

docker run -ti -v C:\local_folder\:c:\container_folder container1
2) 或者,您可以创建一个卷:

docker volume create --name temp_volume
通过以下方式查看卷的绝对路径:

docker volume inspect temp_volume 
装入点是卷的绝对路径。您可以从该路径添加/删除文件。然后,您可以通过以下方式将其装入容器:

docker run -ti -v temp_volume:c:\tmploc container1
请注意,主机和容器都是Windows计算机