使用Docker时,我们从基本映像开始.我们启动它,创建更改并将这些更改保存在层中,形成另一个图像.
所以我最终得到了一个用于我的PostgreSQL实例的图像和一个用于我的Web应用程序的图像,这些图像继续保持不变.
所以问题是:什么是容器?
如果我运行$ docker-compose down以下内容,我似乎无法保持MySQL数据持续存在.yml
version: '2'
services:
# other services
data:
container_name: flask_data
image: mysql:latest
volumes:
- /var/lib/mysql
command: "true"
mysql:
container_name: flask_mysql
restart: always
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: 'test_pass' # TODO: Change this
MYSQL_USER: 'test'
MYSQL_PASS: 'pass'
volumes_from:
- data
ports:
- "3306:3306"
Run Code Online (Sandbox Code Playgroud)
我的理解是在我的data容器中使用volumes: - /var/lib/mysqlmap将它映射到我的本地机器目录,其中mysql将数据存储到容器中,并且由于这种映射,即使容器被销毁,数据也应该保持不变.而mysql容器只是进入数据库的客户端接口,因为可以看到本地目录volumes_from: - data
尝试这个答案,它没有用.Docker-撰写持久性数据问题
编辑
改变了我.yml如下图所示,创建了目录./data,但现在当我运行docker-compose up --build的mysql容器无法启动抛出错误说
data:
container_name: flask_data
image: mysql:latest
volumes:
- ./data:/var/lib/mysql …Run Code Online (Sandbox Code Playgroud) 每当我执行
docker-compose start
docker-compose ps
Run Code Online (Sandbox Code Playgroud)
我看到我的容器状态为"UP".如果我做
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
我会看到更多的冗长,但它将具有相同的状态.两个命令之间有什么区别吗?