移动容器内容并重新安装卷

时间:2021-02-27 22:42:19

标签: docker docker-compose docker-volume

在运行 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

但这会返回以下错误:

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 类型创建卷,但这并没有改变错误。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您创建的卷设置为装载设备,而不是文件夹,因此出现 no such device 错误。

要创建绑定到文件夹的卷:

volume create --driver local --opt device=/mnt/dockerdata/vols/ipam/phpipam-mysql phpipam-mysql --opt type=none --opt o=bind