使用docker镜像存储数据文件

Ani*_*iks 5 image docker dockerfile docker-registry docker-compose

我是 docker 新手,刚刚开始探索它。我想要实现的是发布一个 Docker 镜像,它只有一些配置文件。这些文件将在多个项目之间共享。

所以我要发布的图像是“my-config-image”。


目录结构是这样的:

/my-config-settings
     /folder1/multiple files
     /folder2/multiple files
     file1.txt
     file2.txt
Run Code Online (Sandbox Code Playgroud)

在线阅读并完成 docker 快速入门后,我有了一些了解。

我决定使用 Create a simple base image using scratch. 引用自(https://docs.docker.com/engine/userguide/eng-image/baseimages/

这就是我的 Dockerfile 的样子。

FROM scratch
ADD folder1 / folder2 /
Run Code Online (Sandbox Code Playgroud)

这是我用来发布图像的命令。

/my-config-settings/docker build -t my-config-image .
Sending build context to Docker daemon  5.12 kB
Step 1 : FROM scratch
 ---> 
Step 2 : ADD folder1 / folder2 /
 ---> Using cache
 ---> cc9c3f338f51
Successfully built cc9c3f338f51
Run Code Online (Sandbox Code Playgroud)

当我想检查图像是否在本地创建时,我通过执行以这种方式确认它

docker images


REPOSITORY                                          TAG                 IMAGE ID            CREATED             SIZE
my-config-image                                     latest              cc9c3f338f51        2 minutes ago       39 B
Run Code Online (Sandbox Code Playgroud)

我的主要查询是如何检查这是否有效,是否将 file1.txt 和 file2.txt 添加到图像中,如果没有,我如何指定在图像中添加这些文件。

有没有办法可以将所有文件和目录递归添加到我尝试创建的图像中?

还有如何访问此图像,意味着如何检查此图像是否确实包含所有文件夹和文件。有没有办法cd到这个?

如果我尝试做的事情没有意义,我可以接受建议并查看另一种 docker 方法。

感谢您的阅读。

Cha*_*ock 1

您正在尝试使用应用程序管理方法解决配置管理问题。对于共享配置,您通常希望采用“集中位置方法”。基本示例是 git 存储库或 S3 存储桶。这两种解决方案都具有本机文档存储,并且可以在具有细粒度访问控制的服务之间适当共享。

docker 镜像不是存储/共享配置的 docker 方法。通过拥有镜像,您基本上可以做两件事:
1. 基于初始镜像构建其他镜像
2. 运行容器

鉴于这里的映像只是Scratch文件,因此没有可执行文件,也没有任何可运行的内容。hello world 示例复制了一个包含实际脚本的目录,这就是为什么他们最终得到了一个可运行的容器。

作为基础镜像,配置在依赖关系之类的事情之前是没有意义的。

如果您确实想为此使用 docker 工具,那么您正在寻找 docker 卷。它可以持久保存文件系统,并且很容易在不同容器之间共享。 https://docs.docker.com/engine/userguide/containers/dockervolumes/