![构建一个带有 30 GB 数据库的 Docker 容器](https://linux22.com/image/1599899/%E6%9E%84%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%B8%A6%E6%9C%89%2030%20GB%20%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%20Docker%20%E5%AE%B9%E5%99%A8.png)
我有一个大问题:我确实有 30 GB 的数据需要填充到 mysql 数据库中。这里每个想要离线(和移动)使用这些数据的人都必须将其导入本地 mysql 数据库(由于不同的 mysql 版本、操作系统等)。
所以我决定提供一个 Docker 容器。
但是现在,我在构建容器时遇到了问题。
如果我尝试将大块数据和导入脚本复制到从 MySQL 容器派生的容器中,理论上是可行的 - 但会占用硬盘驱动器上的空间。首先,Docker 构建将 30GB 发送到 docker 守护程序,然后将数据再次复制到容器中。
如果我尝试启动
mysqld
容器内以从主机填充数据库,我意识到 Docker 在构建期间不会打开端口 3306。
那么,如何才能填充数据库而不至于到处复制数据呢?
例如,是否有可能从(正常)运行且已填充的容器中获取 Docker 映像?
答案1
也许你可以使用volumes
运行时,docker run
您可以使用标志绑定目录-v
。示例
-v $(pwd)/my-sql-data:/dir/in/container
我认为 Docker Hub 上的官方 docker MySQL 镜像中也提到了这一点,请检查一下