我有一个在 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