移动容器内容并重新安装卷
Moving container contents and remounting volumes
在旧服务器上 运行 docker 我有两个容器 运行 ipam 和 mysql。 mysql 已经安装了一个卷,在停止容器后,我将卷的内容复制到一个新服务器的目录中:
/mnt/dockerdata/vols/ipam/phpipam-mysql
接下来我在新服务器上创建一个卷:docker volume create --driver local --opt device=/mnt/dockerdata/vols/ipam/phpipam-mysql phpipam-mysql --opt type=volume
接下来,我创建了一个 docker-compose.yml 文件来尝试使其可重复。这里不是真的需要,但我想为其他项目学习。所以我创建了这个文件:(我知道密码,但这只是我的实验室)
services:
ipam-mysql:
container_name: ipamdb
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=P@55F0rIP@M
restart: always
volumes:
- phpipam-mysql:/var/lib/mysql
ipam:
container_name: ipambase
depends_on:
- ipam-mysql
image: pierrecdn/phpipam
environment:
- MYSQL_ENV_MYSQL_USER=root
- MYSQL_ENV_MYSQL_ROOT_PASSWORD=P@55F0rIP@M
- MYSQL_ENV_MYSQL_HOST=mysql
ports:
- "192.168.0.10:80:80"
volumes:
phpipam-mysql:
external: true
name: phpipam-mysql
但是这个returns出现以下错误:
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Creating ipamdb ... error
ERROR: for ipamdb Cannot create container for service ipam-mysql: failed to mount local volume: mount /mnt/dockerdata/vols/ipam/phpipam-mysql:/var/lib/docker/volumes/phpipam-mysql/_data: no such device
ERROR: for ipam-mysql Cannot create container for service ipam-mysql: failed to mount local volume: mount /mnt/dockerdata/vols/ipam/phpipam-mysql:/var/lib/docker/volumes/phpipam-mysql/_data: no such device
ERROR: Encountered errors while bringing up the project.
当我不使用 external:true
选项时,会创建一个我不想要的新空卷。我尝试创建类型为 ext4 的卷,但这并没有改变错误。
有什么建议吗?
您创建的卷设置为装载设备,而不是文件夹,因此 no such device
错误。
要创建绑定到文件夹的卷:
volume create --driver local --opt device=/mnt/dockerdata/vols/ipam/phpipam-mysql phpipam-mysql --opt type=none --opt o=bind
在旧服务器上 运行 docker 我有两个容器 运行 ipam 和 mysql。 mysql 已经安装了一个卷,在停止容器后,我将卷的内容复制到一个新服务器的目录中:
/mnt/dockerdata/vols/ipam/phpipam-mysql
接下来我在新服务器上创建一个卷:docker volume create --driver local --opt device=/mnt/dockerdata/vols/ipam/phpipam-mysql phpipam-mysql --opt type=volume
接下来,我创建了一个 docker-compose.yml 文件来尝试使其可重复。这里不是真的需要,但我想为其他项目学习。所以我创建了这个文件:(我知道密码,但这只是我的实验室)
services:
ipam-mysql:
container_name: ipamdb
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=P@55F0rIP@M
restart: always
volumes:
- phpipam-mysql:/var/lib/mysql
ipam:
container_name: ipambase
depends_on:
- ipam-mysql
image: pierrecdn/phpipam
environment:
- MYSQL_ENV_MYSQL_USER=root
- MYSQL_ENV_MYSQL_ROOT_PASSWORD=P@55F0rIP@M
- MYSQL_ENV_MYSQL_HOST=mysql
ports:
- "192.168.0.10:80:80"
volumes:
phpipam-mysql:
external: true
name: phpipam-mysql
但是这个returns出现以下错误:
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Creating ipamdb ... error
ERROR: for ipamdb Cannot create container for service ipam-mysql: failed to mount local volume: mount /mnt/dockerdata/vols/ipam/phpipam-mysql:/var/lib/docker/volumes/phpipam-mysql/_data: no such device
ERROR: for ipam-mysql Cannot create container for service ipam-mysql: failed to mount local volume: mount /mnt/dockerdata/vols/ipam/phpipam-mysql:/var/lib/docker/volumes/phpipam-mysql/_data: no such device
ERROR: Encountered errors while bringing up the project.
当我不使用 external:true
选项时,会创建一个我不想要的新空卷。我尝试创建类型为 ext4 的卷,但这并没有改变错误。
有什么建议吗?
您创建的卷设置为装载设备,而不是文件夹,因此 no such device
错误。
要创建绑定到文件夹的卷:
volume create --driver local --opt device=/mnt/dockerdata/vols/ipam/phpipam-mysql phpipam-mysql --opt type=none --opt o=bind