Docker 容器挂载 Bind Mount

本文深入探讨Docker中绑定挂载的使用方法,包括如何将宿主机文件或目录挂载到容器,实现配置文件共享、源代码同步及构建项目包的访问。文章通过实例演示了如何使用docker run命令进行挂载,并介绍了挂载过程中的注意事项,如源文件不存在时的错误处理及目标目录非空时的内容隐藏。

  • 特点:将宿主机上的任意位置的文件或目录挂载到容器中

从主机共享配置文件到容器,默认情况下, 挂载主机/etc/resolv.conf到每个容器 提供DNS解析。
在Docker主机上的开发环境和容器之间共享源代码。 例如可以将maven target 目录挂载到容器中,每次在docker上构建Maven项目时,容器都可以访问构建的项目包。
Docker主机的文件或目录结构保证与容器所需的绑定挂载一致。

  • 启动和测试

将宿主机文件或者目录挂载到容器中
docker run -d -it --name=nginx2 -p 88:80 --mount type=bind,src=/opt/www,dst=/usr/share/nginx/html nginx
docker run -d -it --name=nginx2 -v /opt/www:/usr/share/nginx/html nginx

docker exec -it nginx2 bash
cd /usr/share/nginx/html/
echo '123456'>index.html
#测试
http://192.168.10.243:88/
#如果源文件或者目录没有存在 src=/opt/www  不会自动创建  会抛出一个错误
#如果挂载目标在容器非空目录 则该目录现有内容将被隐藏

  • 验证和清理

docker inspect nginx2
"Mounts": [
            {
                "Type": "bind",
                "Source": "/opt/www",
                "Destination": "/usr/share/nginx/html",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

docker stop nginx2
docker rm nginx2

### 查看 Docker 容器挂载的宿主机目录 Docker 容器可以通过卷(Volumes)或绑定挂载Bind mounts)的方式将宿主机的目录挂载容器中,以实现数据共享或持久化存储。若需查看某个容器挂载的宿主机目录信息,可以通过以下方式进行。 #### 使用 `docker inspect` 命令查看挂载信息 `docker inspect` 是查看容器详细配置的主要命令,其中包含挂载点(Mounts)信息。执行以下命令可获取容器挂载详情: ```bash docker inspect <容器ID或名称> | grep Mounts -A 20 ``` 该命令输出的内容中会列出所有挂载点,包括类型(Type)、宿主机路径(Source)、容器内路径(Destination)等信息。例如: ```json "Mounts": [ { "Type": "bind", "Source": "/home/user/data", "Destination": "/app/data", "Driver": "", "Mode": "z", "RW": true, "Propagation": "" } ] ``` 此信息表明容器将宿主机的 `/home/user/data` 目录以绑定挂载的方式挂载容器内的 `/app/data` 路径下,并具有读写权限 [^2]。 #### 使用 `docker volume inspect` 查看卷的宿主机路径 如果使用的是 Docker 管理的卷(Volumes),可以通过以下命令查看卷在宿主机上的实际路径: ```bash docker volume inspect <卷名称> ``` 输出内容中将包含宿主机上的目录路径,例如: ```json "Mountpoint": "/var/lib/docker/volumes/my_volume/_data" ``` 该路径即为 Docker 在宿主机上为该卷分配的存储位置 [^4]。 #### 使用 `docker ps -a` 查看容器启动时的挂载参数 虽然 `docker ps -a` 不直接显示挂载路径,但结合 `--format` 参数可以提取容器挂载信息: ```bash docker ps -a --format "table {{.ID}}\t{{.Command}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}" ``` 通过查看容器的启动命令,可以间接判断是否使用了 `-v` 参数进行目录挂载 [^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值