asu*_*hak 4 mysql docker kubernetes
根据此处的文档:\n https://docs.docker.com/storage/volumes/
\n\n\n\n\n如果启动一个创建新卷的容器,如上所述,并且该容器在要挂载的目录(例如上面的/app/)中有文件或目录,则目录\xe2\x80\x99s内容将被复制到该卷中。然后容器安装并使用该卷,并且使用该卷的其他容器也可以访问预先填充的内容。
\n
换句话说,期望是,如果我在 /var/lib/mysql 中有这样的文件
\n\nroot@d8fa9a8b305a:/var/lib/mysql# ls\nauto.cnf xtz ib_logfile0 ibdata1 mysql sys\ndebian-5.7.flag ib_buffer_pool ib_logfile1 ibtmp1 performance_schema\n
Run Code Online (Sandbox Code Playgroud)\n\n然后,当我将卷装入时,/var/lib/mysql
容器中的所有文件都应复制到我的卷中。
但我发现这并没有发生:
\n\n/var/lib/mysql/mysql # ls\nauto.cnf ib_buffer_pool ib_logfile0 ib_logfile1 ibdata1\n
Run Code Online (Sandbox Code Playgroud)\n\n这是我挂载到 /var/lib/mysql 的卷的内容,正如您所看到的,该数据与 docker 映像本身的 /var/lib/mysql 中存在的数据不同。因此,结果是启动失败。
\n\n注意:有问题的卷实际上是由 kubernetes 挂载的。所以,我在这里做出一个主要假设
\n\nvolumeMounts:\n - name: xtz-persistent-storage\n mountPath: "/var/lib/mysql/"\n
Run Code Online (Sandbox Code Playgroud)\n\n相当于这样做:docker run -p 443:443 --rm -v mysql:/var/lib/mysql <image>
KubernetesVolumes
与 Docker 不是一回事Volumes
。
来自 Kubernetes文档:
Docker 也有卷的概念,尽管它有点松散且管理较少。在 Docker 中,卷只是磁盘上或另一个容器中的目录。生命周期不受管理,直到最近才出现本地磁盘支持的卷。Docker 现在提供卷驱动程序,但目前功能非常有限(例如,从 Docker 1.7 开始,每个容器仅允许一个卷驱动程序,并且无法将参数传递给卷)。
另一方面,Kubernetes 卷具有明确的生命周期 - 与包含它的 Pod 相同。因此,卷的寿命比 Pod 中运行的任何容器都长,并且数据在容器重新启动时得以保留。当然,当 Pod 不复存在时,卷也将不复存在。也许比这更重要的是,Kubernetes 支持多种类型的卷,并且 Pod 可以同时使用任意数量的卷。
从本质上讲,卷只是一个目录,其中可能包含一些数据,Pod 中的容器可以访问该目录。该目录的形成方式、支持它的介质及其内容均由所使用的特定卷类型决定。
因此,尽管概念的名称相同,但这是不同的volume
。
在挂载时,Kubernetes 会覆盖一个目标目录。
不幸的是,目前还没有办法合并已安装卷和容器中的内容。这是关于它的讨论之一。
归档时间: |
|
查看次数: |
5037 次 |
最近记录: |