gpt4 book ai didi

Docker mysql 镜像 - 将内部容器 DB 移动到卷

转载 作者:行者123 更新时间:2023-12-02 08:34:50 26 4
gpt4 key购买 nike

我已经开始使用 docker 和 docker-compose 来定义数据库。由于我没有在配置中定义卷(我的错误),因此数据库已在容器内创建,现在下次运行 docker-pull 时,我将重新创建该数据库,导致数据丢失。将数据移出容器而不丢失数据的最佳方法是什么?

  db:
image: "mydbimage"
environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_DATABASE: "jirio"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"

Dockerfile

FROM mysql:5.6
ADD schema.sql /docker-entrypoint-initdb.d/schema.sql

最佳答案

如果运行 docker pull mysql:5.6,您不会丢失数据。因为您正在运行 mydbimage 的实例.

此外,除非您使用 docker rm -v 删除容器,否则不会丢失数据。 。 Docker Compose 也不会删除卷,除非您运行 docker-compose rm -v .

使用 docker ps -a 获取运行 mysql:5.6 的容器的名称或 ID并运行:

docker run --rm --volumes-from $container ubuntu tar -zcvf- /var/lib/mysql > /tmp/backup.tar.gz

注意:替代$container带有容器的名称或 ID。

然后您可以将 tarball 解压到主机上的某个位置,例如/var/mysql,更新 mydbimage如果需要,请将这一行添加到您的 Docker Compose YAML 中:

volumes:
-v /var/mysql:/var/lib/mysql

注:A docker commit从不将卷保存在容器中。

关于Docker mysql 镜像 - 将内部容器 DB 移动到卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43960507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com