我试图在容器中安装postgresql-9.3包含图像“ubuntu:14:04”
第一步,我做了图像“ubuntu:14:04”
$ sudo Docker pull ubuntu:14.04
第二步,我用命令创build一个容器
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
第三步,我在容器中安装postgresql-9.3包含“ubuntu:14.04”(在一个包含ubuntu的容器中)
我试图进入postgresql可以,然后我试图走出容器,直接与命令
# exit
我试图重新login,容器postgresql我安装丢失,是否可以做,并帮助解释为什么?
Docker本身是否运行在内核中?
硬件> OS> Docker。
Docker概念:
Docker = images> Container
你不应该在bash会话中安装任何东西。
由于docker使用UnionFS(联合文件系统服务) ,一旦退出bash会话,当容器被移除时,任何修改都将丢失。
您可以尝试“退出”容器的docker commit
,但这不是您如何构建新的图像。
你要做的就是创建一个名为Dockerfile
的文本文件,在这个文件中你可以像官方的postgres镜像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可以在声明性文本文件中保存安装步骤,您可以随时从中建立图像。
如果你发现使用bash更容易安装,而不是使用Dockerfile和build命令,你可以像第一步和第二步所做的那样完成,但是在第三步之后退出bash
CONTROL + P
后跟CONTROL + Q
这将退出容器,使其运行和使用后
docker commit mycurrentcontainer mynewimagewithpostgrestobeuseinfuture