容器里面的东西, ```/home/postgres/tmp_basedir_polardb_pg_1100_bld/
已经丢失了
第二次进入容器用 docker exec -it <container_name> bash
docker run 是每次建立一个新容器么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
当您使用 docker exec -it <container_id_or_name> bash
命令时,您并不是在创建一个新的容器,而是进入一个已存在的容器内部并启动一个新的命令 shell(在这个例子中是bash)。这意味着如果您之前已经有一个运行中的容器,并且您通过其ID或名称正确地指定了它,您将能够访问该容器的文件系统,包括 /home/postgres/tmp_basedir_polardb_pg_1100_bld/
这样的路径,前提是这个路径在容器初次创建和运行时存在并且没有被删除。
另一方面,docker run
命令确实会创建一个新的容器。如果指定的镜像不存在本地,Docker还会从仓库下载该镜像。这个命令不仅用于创建容器,还自动启动容器并执行指定的命令(默认是容器镜像的ENTRYPOINT或CMD)。所以,如果您使用 docker run
再次启动基于相同镜像的容器,您得到的是一个新的、干净的容器实例,不会包含之前容器中任何自定义或更改过的数据,除非您在运行时挂载了持久化数据卷或者使用了其他数据持久化的方法。
对于您提到的文件丢失问题,如果这些文件没有被持久化存储(例如,通过数据卷挂载到宿主机上,或者使用 Docker 的数据卷容器),那么当容器被删除时,这些文件也会随之丢失。为了避免这种情况,建议在设计容器应用时考虑使用数据卷来保存重要数据,确保数据的持久性。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about