将新卷安装到 Docker 实例中

将新卷安装到 Docker 实例中

我有一个在 Docker 实例中运行的网站。该网站有一个需要更多存储空间的文档文件夹。因此,我在 AWS 上创建了一个新卷。我可以使用 来从主机查看它lsblk,如下所示:

$ sudo lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdf    202:80   0  20G  0 disk

在网站结构中,在 docker 容器内,我想要将磁盘挂载到:

/var/www/localhost/htdocs/sites/default/documents/

通常情况下,我只会使用以下内容:

sudo mount /dev/xvdf /var/www/localhost/htdocs/sites/default/documents/

但由于它是在 docker 容器中,所以我对如何连接它有点困惑。 如何将驱动器安装到给定的目录?

Docker 对我来说相当新。直到几周前我才听说过它。我可以控制sh进入容器并重新启动它。

答案1

请查看此问题以获取有关 Docker 中不同安装类型的更多信息:在 docker 容器中创建卷和挂载有什么区别?

您需要先将卷安装到“主机”服务器上的本地文件夹,然后将其安装到您的 docker 容器。

答案2

首先将设备挂载到目录:

sudo mount /dev/xvdf /mnt

然后,您必须使用参数启动容器,将您的卷(目录)连接到容器目录:

docker run -d \
 --name devtest \
 -v /mnt:/var/www/localhost/htdocs/sites/default/documents \
 nginx:latest

https://docs.docker.com/storage/bind-mounts/#start-a-container-with-a-bind-mount

或者使用 docker-compose.yml:

devtest:
  image: nginx:latest
  volumes:
    - /mnt:/var/www/localhost/htdocs/sites/default/documents

答案3

终于,明白了。

首先,我必须查明实例是如何启动的。使用以下命令:

./docker-compose up -d --build

在同一个目录中,有一个 docker-compose.yml 文件,因此我在主服务(而不是顶层)中添加了以下行:

- /mnt:/var/www/localhost/htdocs/sites/default/documents

停止实例并安装驱动器:

sudo mount /dev/xvdf /mnt

重新启动容器:

./docker-compose up -d --build

进入 docker 实例,并验证卷是否已挂载:

df

相关内容