首页 > 解决方案 > 本地主机上的 docker 容器存储

问题描述

我不知道如何在互联网上搜索我的问题......我有以下案例:

我从我的 centos 7 vm 构建了一个基本映像。然后我把它移到了我的 ldapserver。已经安装了 ldap 和 phpldapadmin。我的意图是对我的应用程序进行 docker 化。所以我创建了以下 Dockerfile:

[root@ldapserver ~]# cat /root/ldap_container/dockerfile_ldapserver/Dockerfile
FROM msaka/ldapserver
RUN yum -y install epel-release; yum clean all
RUN yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel; yum clean all
RUN yum -y install phpldapadmin; yum clean all
COPY phpldapadmin.conf /etc/httpd/conf.d/phpldapadmin.conf
COPY hosts /etc/hosts
COPY openldap /etc/openldap
COPY config.php /etc/phpldapadmin/config.php
RUN chown root:apache /etc/phpldapadmin/config.php

正如您从我的基本映像中看到的那样,我安装了 openldap 并且 phpldapadmin 还复制了一些文件以使容器准备好工作。最后我运行我的容器:

docker run -p 80:80 -itd ldapserver2 httpd -D FOREGROUND

我没有任何专用卷。从我的主机 VM 我可以访问 phpldapadmin 的 Web 界面。我添加了一个新用户,测试到 ldap_client 的连接。它正在工作。然后我停止容器。

通常,如果您在容器上创建例如一个文件然后停止它,您将丢失数据,除非您提交或分配专用 FS。就我而言,当我使用以下命令再次启动我的图像(不是停止的容器,而是图像)时:

docker run -p 80:80 -itd ldapserver2 httpd -D FOREGROUND

我看到我的修改在那里。为什么 ?我期待失去从 phpldapadmin 容器创建的用户。它不应该因为我没有承诺而消失吗?是否因为在应用层上进行了更改而发生这种情况?

另一件奇怪的事情是,当我停止容器并在主机上启动 httpd 时,我登录到 phpldapadmin 的 Web 界面,我看到了同一个用户 :)) 这就像容器上发生的变化也会影响我的本地主机。

谢谢你的帮助。

标签: dockerdockerfile

解决方案


推荐阅读