将卷挂载到主机

Mount volume to host

我目前正在 Windows 上使用 Boot2Docker。是否可以将 root 挂载到主机?

假设我正在使用 Ubuntu 图像并且我想将 / 挂载到主机。我该怎么做?

我一直在四处寻找并尝试:

docker run -v /c/Users/ubuntu:/ --name ubuntu -dt ubuntu

但我最终遇到了一个错误:

docker: Error response from daemon: Invalid bind mount spec "/c/Users/ubuntu:/": volumeslash: Invalid specification: destination can't be '/' in '/c/Users/Leon/ubuntu:/'.

如果我没理解错的话,您是想将 root 作为卷挂载到容器中?如果是这样的话,宁愿在里面创建一个新目录并公开那个目录。

例如dockerfile:

RUN mkdir /something
VOLUME /something

正如 Docker 文档所说,容器目录必须始终是绝对路径,例如 /src/docs。主机目录可以是绝对路径或名称值。

有关更多信息,请阅读:https://docs.docker.com/engine/userguide/containers/dockervolumes/#mount-a-host-directory-as-a-data-volume 和部分 "Mount a host directory as a data volume" 应该能让您更好地理解。

是你指定路径的方式有问题。请参阅安装本地卷以供 MongoDB 的容器使用的示例:

docker run --name *container-name* -v **/Users/SKausha3/mongo/imageservicedb/data**:/*data* -v **/Users/SKausha3/mongo/imageservicedb/backup**:/*backup*

c:/Users/SKausha3/mongo/imageservicedb/data 是我的本地文件夹,但您必须从路径中删除 'c:'。

由于您无法挂载“/”,一种选择是将“WORKDIR”添加到您的 Dockerfile,这样所有后续命令都将相对于该目录,您无需修改​​任何内容!

FROM python:latest
WORKDIR /myapp
COPY appfile.py appfile.py

在您的 docker 图像中,“appfile.py”文件将位于 /myapp/appfily.py 位置。

您不能指定容器的“/”根目录,但您可以将所有文件夹挂载到根目录中存在的 docker 卷中......

通过 运行 一条一条地执行这些命令来创建卷,或者您可以创建 bash 脚本

docker volume create var

docker volume create usr

docker volume create tmp

docker volume create sys

docker volume create srv

docker volume create sbin

docker volume create run

docker volume create root

docker volume create proc

docker volume create opt

docker volume create mnt

docker volume create media

docker volume create libx32

docker volume create lib64

docker volume create lib32

docker volume create lib

docker volume create home

docker volume create etc

docker volume create dev

docker volume create boot

docker volume create bin 

然后运行这个命令

docker run -it -d \
--name=ubuntu-container \
--mount source=var,destination=/var \
--mount source=usr,destination=/usr \
--mount source=tmp,destination=/tmp \
--mount source=sys,destination=/sys \
--mount source=srv,destination=/srv \
--mount source=sbin,destination=/sbin \
--mount source=run,destination=/run \
--mount source=root,destination=/root \
--mount source=opt,destination=/opt \
--mount source=mnt,destination=/mnt \
--mount source=media,destination=/media \
--mount source=libx32,destination=/libx32 \
--mount source=lib64,destination=/lib64 \
--mount source=lib32,destination=/lib32 \
--mount source=lib,destination=/lib \
--mount source=home,destination=/home \
--mount source=etc,destination=/etc \
--mount source=boot,destination=/boot \
--mount source=bin,destination=/bin \
ubuntu:latest