首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker,在容器中安装postgresql,容器中包含"ubuntu:14.04",离开容器时丢失

Docker,在容器中安装postgresql,容器中包含"ubuntu:14.04",离开容器时丢失
EN

Stack Overflow用户
提问于 2015-11-25 18:01:45
回答 3查看 3.8K关注 0票数 3

我尝试在容器中安装postgresql-9.3包含图像"ubuntu: 14:04“

第一步,我制作了图片"ubuntu: 14:04“

代码语言:javascript
复制
 $ sudo Docker pull ubuntu:14.04

第二步,我使用以下命令创建一个容器

代码语言:javascript
复制
 $ sudo docker run -t -i ubuntu:14.04 /bin/bash

第三步,我在一个包含"ubuntu:14.04“的容器中安装postgresql-9.3 (在一个包含ubuntu的容器中)

我试着进入postgresql可以,然后我试着取出容器,直接使用命令

代码语言:javascript
复制
 # exit

我试着重新登录,我安装的postgresql容器丢失了,能不能帮我解释一下原因?

Docker本身,是否运行在内核中?

Hardware> OS> Docker.

Docker概念:

Docker = images>容器

EN

回答 3

Stack Overflow用户

发布于 2015-11-25 18:36:31

您不应该在bash会话中安装任何内容。

由于docker使用UnionFS (union filesystem service),因此一旦您退出bash会话,当容器被移除时,任何修改都会丢失。

您可以尝试“退出”容器的docker commit,但这不是构建新映像的方式。

您要做的是创建一个名为Dockerfile的文本文件,其中的步骤与official postgres image Dockerfile类似(除非您想从ubuntu开始)。

它包括:

代码语言:javascript
复制
RUN apt-get update \
    && apt-get install -y postgresql-common \
    && sed -ri 's/#(create_main_cluster) .*$/\1 = false/' /etc/postgresql-common/createcluster.conf \
    && apt-get install -y \
        postgresql-$PG_MAJOR=$PG_VERSION \
        postgresql-contrib-$PG_MAJOR=$PG_VERSION \
    && rm -rf /var/lib/apt/lists/*

您可以运行docker build -t mypostgres .:这将构建一个包含postgres的新映像。

换句话说,Dockerfile的作用是将安装步骤保存在一个声明性文本文件中,您可以随时从该文件构建映像。

票数 2
EN

Stack Overflow用户

发布于 2015-12-09 15:42:56

如果您发现使用bash而不是Dockerfile和build命令可以更容易地安装所有内容,那么您可以完全按照第一步和第二步所写的那样进行安装,但是在第三步之后,使用以下命令退出bash

后跟CONTROL + Q的是CONTROL + P

这将退出容器,使其继续运行并在使用后继续运行

代码语言:javascript
复制
docker commit mycurrentcontainer mynewimagewithpostgrestobeuseinfuture
票数 1
EN

Stack Overflow用户

发布于 2018-09-06 13:59:35

这解决了这个问题。遵循以下步骤

Step1: Docker构建-t Mohan。step2: Docker run -it Mohan bash Mohan是您的容器名称

这是我的Dockerfile:

来自Ubuntu: 18.04

来自postgres: 9.6

运行apt-get update && apt-get install -q -y postgresql-9.6postgresql-client-9.6postgresql-contrib-9.6postgresql-client-common postgresql-common RUN echo postgres:postgres | chpasswd

运行pg_createcluster 9.6 main --start

CMD /etc/init.d/postgresql启动

CMD su -c "psql -c \“更改用户postgres密码' postgres ';\"”postgres

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

https://stackoverflow.com/questions/33913474

复制
相关文章

相似问题

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