我找到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
答案 0 :(得分: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
...并将它们还原到同一个地方docker exec mysql_container /usr/bin/mysqldump -u root --password=root --all-databases > mysql_dump_backup.sql