docker-compose保存/加载图像到另一台主机

问题描述 投票:2回答:1

我找到了this,但不适合我。

我的(真的)简单的docker-compose.yml

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example

  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

开始:

docker-compose up

在对容器进行了一些更改之后(在wordpress上安装插件和主题)。

docker-compose stop
docker commit main_mysql_1 test-mysql
docker commit main_wordpress_1 test-wordpress
docker save test-mysql > test-mysql.tar
docker save test-wordpress > test-wordpress.tar

将两个tar文件保存在另一台机器上并加载它们:

docker load -i ./test-mysql.tar
docker load -i ./test-wordpress.tar

现在将docker-compose.yml更改为:

version: '3.1'

services:

  wordpress:
    image: test-wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example

  mysql:
    image: test-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

但容器启动是从头开始的wordpress。没有做任何工作(插件,主题等)。

我的错是什么?我不想为这些私人目的使用在线存储库...你能建议一个更简单和强大的程序来传递两个主机之间的容器?


卷的解决方法:

version: '3.1'

services:

  wordpress:
    container_name: GREB_wordpress      
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example
    volumes:
      - ./www:/var/www/html  

  mysql:
    container_name: GREB_mysql
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - ./mysql_data:/var/lib/mysql  
docker docker-compose
1个回答
1
投票

我回答自己......

首先,docker卷不是图像和/或容器的一部分。所以这些应该进一步保存在docker图像(docker save)中。

为了更好地理解docker文件系统,卷,ro / rw层,可以读取http://container-solutions.com/understanding-volumes-docker/

弄清楚我们的图像是否使用卷(寻找“卷”键): docker inspect image_name

使用卷(请参阅docker documentation以便更好地了解),例如I / O性能,您有不同的优势。

最后,对于备份卷:

  • 只需备份卷文件夹即tar -cvzPf volume_name_backup.tar.gz /var/lib/docker/volumes/VOLUME_NAME ......并将它们恢复到同一个地方
  • Backup, restore, or migrate data volumes通过另一个码头工人集装箱
  • 如果是db映像(就像我的mysql一样),你也可以转储db:docker exec mysql_container /usr/bin/mysqldump -u root --password=root --all-databases > mysql_dump_backup.sql
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.