如何提前写一个文件到宿主机,然后启动Docker容器?

How to write a file to the host in advance and then start the Docker container?

我的任务是部署一个第三方OSRM service on Amazon ECS Fargate

对于 OSRM docker 在启动时,您需要传输包含地理数据的文件。

问题是 Amazon ECS Fargate 不提供对主机文件系统的访问,也不提供在容器部署期间附加文件和文件夹的能力。

因此,我想创建一个中间图像,在构建时保存带有地理数据的文件,并在启动容器时定义卷时使用它。

谢谢!

据我所知,Amazon ECS 是一个普通的容器编排器,没有实现 docker 群,所以像 docker 配置这样的事情是不可能的。

但是,您应该可以这样做:-

ID=$(docker create --name my-osrm osrm-base-image)
docker cp ./file.ext $ID:/path/in/container
docker start $ID

事实证明解决方案非常简单。

对于这个 Dockerfile,我在本地机器上创建了一个镜像并将其托管在 DockerHub 上:

FROM osrm/osrm-backend:latest
COPY data /data
ENTRYPOINT ["osrm-routed","--algorithm","mld","/data/andorra-latest.osm.pbf"]

之后,在没有任何设置和卷的情况下,我在 AWS ECS 中启动了这个映像