我们现在知道了如何使用本机的目录把mysql的容器的数据持久化,那么该如何才能让数据能在多个容器之间共享呢?
我们对docker image的了解可以从官网的这个图中看到
每一个镜像都是由多个只读的 layer组成的, 当我们去run一个镜像的时候,我们创建了一个可以读写的layer在这个所有的镜像layer的最上层,而这个可以读写的层我们叫作 container storage, 这个层只能由container来读写,你在容器的声明周期中创建的文件,日志等,都存储在这个地方,而这个层不是持久性的,重启容器就没了,需要注意的,如果你用同一个镜像创建了多个容器,那么每个容器都拥有自己的 contaner storage
这就是为什么我们要挂载本机的一个目录到容器中作为mysql数据存储的地方了,这样就不会随着容器的重启丢失数据了
那么如何在多个容器之间共享数据呢?
1 |
docker run --name httpd -v /logs -v /var/local/backup:/backup do276/httpd echo "setup data container" |
上边的这条命令创建两个两个volume 一个/logs是一个临时的(重启会丢失),一个是/backup这个是持久性存储
然后我们通过一个新的命令 –volume-from 来共享一个容器的存储
1 |
docker run --name httpd-2 --volumes-from httpd do276/httpd |
这个时候,httpd-2 这个容器就回拥有 第一个容器 httpd 的 /logs 和 /backup目录的权限
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021