使用 docker-compose 创建和挂载纯数据容器
Create and mount data-only containers with docker-compose
ocker 1.9 引入了一个新卷 API 用于创建仅数据容器(通过 docker volume create
)。
是否可以通过 docker-compose 创建并安装它们?
我想创建一个纯数据容器来存储来自我的 MySQL 数据库 (https://hub.docker.com/_/mysql/) 的数据。可悲的是,我找不到任何文档是否可以使用 docker-compose 本身。
是否可以从 Docker Compose 1.6.2 开始。如果是,怎么做?
考虑到compose/volume.py#L23确实包含一个volume.create()
方法,应该是可以的。
参见the volume section of Compose file reference:
volumes:
# Just specify a path and let the Engine create a volume
- /var/lib/mysql
# Named volume
- datavolume:/var/lib/mysql
那会调用 docker volume create
。
如果你想创建和存储数据库数据,使 docker-compose.yml 看起来像
如果你想使用 Dockerfile
version: '3.1'
services:
php:
build:
context: .
dockerfile: Dockerfile
ports:
- 80:80
volumes:
- ./src:/var/www/html/
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- mysql-data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 8080:8080
volumes:
mysql-data:
你的 docker-compose.yml 看起来像
如果你想使用你的图像而不是 Dockerfile
version: '3.1'
services:
php:
image: php:7.4-apache
ports:
- 80:80
volumes:
- ./src:/var/www/html/
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- mysql-data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 8080:8080
volumes:
如果您想存储或保留 mysql 的数据,则
必须记得在 docker-compose.yml
中添加两行
volumes:
- mysql-data:/var/lib/mysql
和
volumes:
mysql-data:
之后使用这个命令
docker-compose up -d
现在您的数据将永久存在,即使在使用此命令后也不会被删除
docker-compose down
extra:- 但如果你想删除所有数据,那么你将使用
docker-compose down -v
ocker 1.9 引入了一个新卷 API 用于创建仅数据容器(通过 docker volume create
)。
是否可以通过 docker-compose 创建并安装它们?
我想创建一个纯数据容器来存储来自我的 MySQL 数据库 (https://hub.docker.com/_/mysql/) 的数据。可悲的是,我找不到任何文档是否可以使用 docker-compose 本身。
是否可以从 Docker Compose 1.6.2 开始。如果是,怎么做?
考虑到compose/volume.py#L23确实包含一个volume.create()
方法,应该是可以的。
参见the volume section of Compose file reference:
volumes:
# Just specify a path and let the Engine create a volume
- /var/lib/mysql
# Named volume
- datavolume:/var/lib/mysql
那会调用 docker volume create
。
如果你想创建和存储数据库数据,使 docker-compose.yml 看起来像 如果你想使用 Dockerfile
version: '3.1'
services:
php:
build:
context: .
dockerfile: Dockerfile
ports:
- 80:80
volumes:
- ./src:/var/www/html/
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- mysql-data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 8080:8080
volumes:
mysql-data:
你的 docker-compose.yml 看起来像 如果你想使用你的图像而不是 Dockerfile
version: '3.1'
services:
php:
image: php:7.4-apache
ports:
- 80:80
volumes:
- ./src:/var/www/html/
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- mysql-data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 8080:8080
volumes:
如果您想存储或保留 mysql 的数据,则 必须记得在 docker-compose.yml
中添加两行volumes:
- mysql-data:/var/lib/mysql
和
volumes:
mysql-data:
之后使用这个命令
docker-compose up -d
现在您的数据将永久存在,即使在使用此命令后也不会被删除
docker-compose down
extra:- 但如果你想删除所有数据,那么你将使用
docker-compose down -v