我是初学者docker用户。我在Mac OS中安装了docker和postgresql。为什么大多数文档都提到目录/var/lib/postgresql/data作为卷设置???因为在我的本地目录中,不存在/var/lib/postgresql。。这是默认选项吗?或者我错过了什么?
hkmswyz61#
是的,正确,/var/lib/postgresql在您的本地计算机上不存在,但在创建的container中存在。volumes参数用于将本地数据与container数据关联,以便在container崩溃时保留数据例如:
/var/lib/postgresql
volumes: - ./../database/main:/var/lib/postgresql/data
上面我们将本地目录从左侧链接到容器目录
hs1rzwqc2#
如果您正在使用Docker Hub中的官方PostgreSQL图像,则可以检查其Dockerfile的内容。例如,以下是负责数据目录的postgres:15图像片段:
Dockerfile
ENV PGDATA /var/lib/postgresql/data # this 777 will be replaced by 700 at runtime (allows semi-arbitrary "--user" values) RUN mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" && chmod 777 "$PGDATA" VOLUME /var/lib/postgresql/data
正如您所看到的,Postgres被配置为在该目录中保存数据。即使容器被停止和删除,也要保存数据,创建卷。Volumes的生命周期独立于容器,这使它们能够“生存”。
2条答案
按热度按时间hkmswyz61#
是的,正确,
/var/lib/postgresql
在您的本地计算机上不存在,但在创建的container中存在。volumes参数用于将本地数据与container数据关联,以便在container崩溃时保留数据例如:
上面我们将本地目录从左侧链接到容器目录
hs1rzwqc2#
如果您正在使用Docker Hub中的官方PostgreSQL图像,则可以检查其
Dockerfile
的内容。例如,以下是负责数据目录的postgres:15图像片段:正如您所看到的,Postgres被配置为在该目录中保存数据。即使容器被停止和删除,也要保存数据,创建卷。Volumes的生命周期独立于容器,这使它们能够“生存”。