首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头停靠&码头rm并不能真正摆脱我的集装箱

码头停靠&码头rm并不能真正摆脱我的集装箱
EN

Stack Overflow用户
提问于 2015-06-30 09:58:12
回答 1查看 505关注 0票数 1

在使用波斯特格斯图像时,我有一些奇怪的行为。

我已经创建了一个脚本,它被挂载到/docker-entrypoint-initdb.d中,并使用单用户模式初始化数据库。

但是,当我更新脚本时,请运行

代码语言:javascript
复制
docker stop postgres_db
docker rm postgres_db

而不是启动一个新的容器,数据库是旧的。不会改变的。

我用的是流浪汉box-cutter/ubuntu1404-docker当我跑

代码语言:javascript
复制
vagrant destroy -f
vagrant up

并应用更改,而不是重新创建新的码头容器。

当我移除旧容器并启动一个新容器时,它为什么不起作用?码头在哪里保存它的缓存,我可以清除,以真正得到一个新的形象?

更新:

我使用的确切的停靠文件是原始文件的一个小扩展名。它只安装orafce插件链接,内容:

代码语言:javascript
复制
FROM postgres:9.4

RUN apt-get update && \
    apt-get install -y postgresql-9.4-orafce && \
    rm -rf /var/lib/apt/lists/*

启动新容器的命令是:

代码语言:javascript
复制
docker run --name="postgres_db" \
           --restart="always" \
           -e POSTGRES_PASSWORD=PostgresPassword \
           -p 5432:5432 \
           -v /data:/var/lib/postgresql/data \
           -v /vagrant/container_data/init_scripts:/docker-entrypoint-initdb.d \
           -v /vagrant/container_data/tmp:/tmp \
           -d grmanit/postgres

init_scripts文件夹包含一个脚本,它创建一个新数据库和一个新用户。

Clarifications:

例如,当我更改我的init_scripts文件夹中的脚本时,修改数据库名,而不是stop+remove旧容器并启动一个新容器,它没有任何效果。

当我更改postgres的密码(在docker run命令中设置为环境变量(在本例中是PostgresPassword)并再次更改旧容器,而不是使用新的环境变量启动新容器时,它同样没有任何效果。我仍然需要使用旧密码才能连接到db,而新的密码将无法工作。

但是当我销毁VM并重新启动它时,我有我以前定义过的配置。然而,再次更改它们需要我销毁并重新启动VM,这比仅仅销毁一个码头容器和启动一个新的容器花费的时间要长得多。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-30 10:12:01

您将获得一个新的容器,但是-v /data:/var/lib/postgresql/data将主机的/data目录挂载到容器中,在容器之间对数据库进行持久的更改。如果省略,数据库将在容器中被隔离,并在删除容器后立即消失。

详情请参见管理集装箱中的数据(码头文档)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31135136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档