当前位置: 首页 > 知识库问答 >
问题:

在不暴露端口的情况下启动Postgres Docker容器。如何在不丢失数据的情况下公开?[重复]

蒯卓君
2023-03-14

首先,我不是Docker新手(或专家),只是不确定如何在不炸毁我当前容器的情况下完成此操作。

我在玩Postgres,并使用这个命令构建了一个容器,但没有意识到它不会将Postgres暴露在Docker之外

docker run --name postgres -e POSTGRES_PASSWORD=<password> -d postgres

我希望其他系统能够访问这些数据。我不想删除容器,因为我已经做了相当多的配置。

在停止实例后,我尝试过在 /var/lib/docker/容器中编辑容器 hostconfig.json 文件,但是在启动容器备份后,该文件被覆盖。

将端口暴露在容器之外的最佳实践是什么?

共有1个答案

柴翰藻
2023-03-14

如果您重新启动容器,容器内的任何更改都将重置为初始状态

因此,需要保留的任何数据都必须添加到 docker 卷中

因此,您需要首先保留数据,然后公开端口

为此,您可以运行

$ docker run -d \
    --name some-postgres \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=mysecretpassword \
    -e PGDATA=/var/lib/postgresql/data/pgdata \
    -v ./postgresql:/var/lib/postgresql/data \
    postgres
 

更多细节https://hub.docker.com/_/postgres

 类似资料:
  • 问题内容: 我使用带有标签的php docker容器作为基础: 当我尝试重新启动容器内的apache2时,容器停止: 如何在不停止容器的情况下重新启动apache2? 在将更改放入dockerfile之前,我想使用容器并对其进行自定义。我想安装一些扩展程序,为了使其正常工作,我需要重新启动apache才能使更改生效。 这是通过以下文件的日志文件: 问题答案: 如果将apache用作保持运行容器的主

  • 问题内容: 我尝试的第一件事是创建一个静态库,但后来我发现尚不支持该库。Apple Xcode Beta 4发行说明: Xcode不支持构建包含Swift代码的静态库。(17181019) 我希望Apple能够在下一个Beta版本或GA版本中添加它,但我在他们的博客上阅读了以下内容: 在确保应用程序的运行时兼容性的同时,Swift语言本身将继续发展,并且二进制接口也将发生变化。为了安全起见,应使用

  • 我有一个dockerfile来启动Tomcat。我想从那个dockerfile创建而不运行图像,这样在docker图像中我就可以看到图像了。docker run-it将我登录到容器,但我不想创建容器并登录到它。 我可以通过哪个命令来实现这一点?

  • 问题内容: 我正在创建一个应用程序,并且需要连接到数据库。数据库需要登录名/密码,因此应用程序可以执行选择和插入之类的操作。 在应用程序中,我需要使用登录名和密码连接到数据库,因此应用程序可以自由地在数据库上执行某些任务。 我的问题是:如何在不暴露密码的情况下存储和使用密码来连接数据库? 我不能简单地使用哈希或加密来存储密码,因为数据库必须能够识别密码(我认为大多数或所有数据库都必须以纯文本形式接

  • 问题内容: 我的速度宏正在缓存中,我不希望它们存在……至少不在开发过程中。 我在属性文件中设置了以下属性… …但这似乎并没有解决问题 使用速度属性,如何配置速度以不缓存宏? (我正在使用速度1.6.4) 编辑: 我不认为这条线… …与速度有关 问题答案: 我一直在NVelocity(速度的C#端口)遇到相同的问题。深入研究它们的来源,我发现全局名称空间中宏的重新加载由以下属性控制。 我没有用速度进

  • 当我在一个节点上做了一个紧凑的工作时,它会抛出以下例外情况: