2017-12-17 4 views
-1

Ich habe this gefunden, aber nicht für mich arbeiten.docker-komponieren Speichern/Laden von Bildern auf einen anderen Host

My (wirklich) einfach 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 

Beginn:

docker-compose up 

Nach etwas Änderung Container (installieren Plugins und Themes auf Wordpress) gemacht.

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 

Speichern Sie die zwei tar-Dateien auf einem anderen Computer und laden sie:

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

Nun ist die ändern Docker-compose.yml zu:

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 

Aber der Container gestartet ist Wordpress von Grund auf neu. Nichts von der Arbeit (Plugin, Themes, etc.) wurde beibehalten.

Was ist mein Fehler? Ich möchte kein Online-Repository für diese privaten Zwecke verwenden ... Könnten Sie ein einfacheres und leistungsfähigeres Verfahren für die Weitergabe von Containern zwischen zwei Hosts vorschlagen?


Eine Abhilfe mit einem Volumen:

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 
+0

I habe die Volumes komplett vermisst :) – elbowz

Antwort

0

ich mich selbst beantworten ...

Zunächst einmal Docker Volumen ist nicht Teil des Bildes und/oder Behälters. Diese sollten also die Andockbilder (docker save) weiter gespeichert werden.

Zum besseren Verständnis des Dateisystems Docker, Volumen, ro/rw Schicht, lesen http://container-solutions.com/understanding-volumes-docker/ werden könnte.

Abbildung heraus, ob unser Bild Verwendung Volumes (seek "Volumes" key):
docker inspect image_name

Sie verschiedene Vorteile haben Volumina zu verwenden (siehe documentation Andockfenster für gut verstehen), wie I/O-Performance .

A das Ende, für die Backup-Volumen:

  • einfach Backup-Volumes Ordner z tar -cvzPf volume_name_backup.tar.gz /var/lib/docker/volumes/VOLUME_NAME ... und diese wiederherstellen, in der gleichen Stelle
  • Backup, restore, or migrate data volumes durch eine andere Docker Behälter
  • Bei db Bild (wie mein Fall mit mysql) Sie auch die DB-Dump kann: docker exec mysql_container /usr/bin/mysqldump -u root --password=root --all-databases > mysql_dump_backup.sql
Verwandte Themen