问题描述
我正在尝试设置一个 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
实现了什么以及为什么需要这样做?
谢谢。
解决方法
卷部分是一种在主机系统和容器之间共享文件和目录的方式。使用 :ro 可以将共享文件设为容器只读。 人们必须明白,容器只是当前构建的快照,例如码头枢纽。每当您删除此容器时,所有数据也会被删除。 因此,卷也用于为数据创建一个地方,这些数据应该是持久的,不受容器移除的影响。
那么这里发生了什么:
使用 /etc/timezone:/etc/timezone:ro
,主机系统(运行 docker 守护进程的地方)上的文件 /etc/timezone 在 /etc/timezone (:ro表示只读)在容器内。 /etc/localtime 也是如此。
这些文件定义了主机上使用的时区。通过与容器共享,它可以在内部用于识别系统时区。
现在关于 ./gitea:/data
行。
与共享文件的方式相同,您也可以共享目录。在您的情况下,预计在您当前所在的任何目录中,都有一个文件夹 gitea(./ 表示 >here
因此,当您启动容器时,容器内的应用程序会将数据写入 /data - 您还可以在 ./gitea 下访问主机上的这些数据。