【问题标题】:Docker, install postgresql in a container contain "ubuntu:14.04", lost when out of the containerDocker,将postgresql安装在包含“ubuntu:14.04”的容器中,离开容器时丢失
【发布时间】:2015-11-25 10:01:44
【问题描述】:

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

第一步,我做了图片“ubuntu: 14:04”

 $ sudo Docker pull ubuntu:14.04

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

 $ sudo docker run -t -i ubuntu:14.04 /bin/bash

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

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

 # exit

我尝试重新登录,我安装的容器 postgresql 丢失, 它是否可以做到并帮助解释原因?

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

硬件> 操作系统> Docker。

Docker 概念:

Docker = 图像> 容器

【问题讨论】:

    标签: postgresql ubuntu docker containers


    【解决方案1】:

    您不应该在 bash 会话中安装任何东西。
    由于 docker 使用UnionFS (union filesystem service),所以一旦您退出 bash 会话,任何修改都会在容器被移除时丢失。

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

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

    它包括:

    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 将安装步骤保存在一个声明性文本文件中,您可以随时从中构建映像。

    【讨论】:

    • gagal pada saat akan build dockerfile $ sudo docker build -f /path/docker_postgres .
    • 嘎嘎? Apa pesan kesalahan yang Anda miliki? Perintah Anda harus docker build -t name -f /path/to/your/dockerfile,bukan -f /path/docker_postgres .:最后点 karena Dockerfile dalam 文件夹 saat。 Jika tidak,Anda tidak harus memiliki titik akhir。
    • Ada kesalahan saat akan build "E: 无法纠正问题,您持有损坏的包裹。"
    • @YudiDwiyanto Itu adalah postgres masalah 具体:lihat stackoverflow.com/q/25393203/6309
    【解决方案2】:

    如果您发现使用 bash 而不是使用 Dockerfile 和 build 命令更容易安装,您可以完全按照您在第一步和第二步中编写的操作,但在第三步之后使用

    退出 bash

    CONTROL + P 后跟CONTROL + Q

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

    docker commit mycurrentcontainer mynewimagewithpostgrestobeuseinfuture
    

    【讨论】:

      【解决方案3】:

      这已经解决了这个问题。遵循这些步骤

      第一步: Docker 构建 -t Mohan。 第2步: Docker 运行 -it Mohan bash Mohan 是你的容器名称

      这是我的 Dockerfile:

      来自 Ubuntu:18.04

      来自 postgres:9.6

      运行 apt-get update && apt-get install -q -y postgresql-9.6 postgresql-client-9.6 postgresql-contrib-9.6 postgresql-client-common postgresql-common 运行回声 postgres:postgres |密码

      运行 pg_createcluster 9.6 main --start

      CMD /etc/init.d/postgresql 启动

      CMD su -c "p​​sql -c \"ALTER USER postgres PASSWORD 'postgres';\"" postgres

      【讨论】:

      • 嗨,这是我的脚本文件。 apt-get update && apt-get install -q -y postgresql-9.6 postgresql-client-9.6 postgresql-contrib-9.6 postgresql-client-common postgresql-common echo postgres:postgres | chpasswd /etc/init.d/postgresql start su -c "p​​sql -c \"ALTER USER postgres PASSWORD 'postgres';\"" postgres
      猜你喜欢
      • 2014-07-06
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 2022-12-09
      相关资源
      最近更新 更多