0

我正在尝试设置一个 gitea 容器,并在检查官方文档时,对于卷部分,定义了以下内容:

 volumes:
  - ./gitea:/data
  - /etc/timezone:/etc/timezone:ro
  - /etc/localtime:/etc/localtime:ro

我知道卷部分用于在 docker-compose 中配置数据库,但我找不到为什么要在此处完成此特定配置。有人可以向我解释一下我们在卷部分中添加的行可以实现什么吗?

更具体地说,我们通过什么来实现./gitea:/data, /etc/timezone:/etc/timezone:ro以及/etc/localtime:/etc/localtime:ro为什么需要这样做?

谢谢。

4

1 回答 1

1

卷部分是在主机系统和容器之间共享文件和目录的一种方式。使用:ro可以使共享文件对容器只读。必须明白,容器只是来自例如 docker hub 的当前构建的快照。每当您删除此容器时,所有数据也会被删除。因此,卷也用于为数据创建一个位置,该位置应持久且不受容器移除的影响。

那么这里会发生什么:使用主机系统上/etc/timezone:/etc/timezone:ro的文件/etc/timezone(运行 docker 守护程序)在容器内的/etc/timezone(:ro 表示只读)下可用。/etc/localtime也是如此。

这些文件定义了主机上使用的时区。通过与容器共享它,它可以在内部用于识别系统时区。

现在讲线./gitea:/data。与您可以共享文件的方式相同,您也可以共享目录。在您的情况下,预计在您当前所在的任何目录中,都有一个文件夹 gitea(./ 表示>here<)。如果您执行 docker 命令,主机上的文件夹 ./getea 将映射到容器内的 /data 。

因此,当您启动容器时,容器内的应用程序会将数据写入 /data - 您还可以在 ./gitea 下访问主机上的这些数据。

于 2021-01-23T13:59:27.390 回答