插件窝 干货文章 docker如何不重启挂载目录

docker如何不重启挂载目录

容器 挂载 Docker container 59    来源:    2025-04-28

Docker 不重启容器挂载目录的方法

在 Docker 中,要实现不重启容器的情况下挂载或修改挂载目录,有以下几种方法:

1. 使用 docker cp 命令临时复制文件

# 将主机文件复制到容器中
docker cp /host/path/file.txt container_name:/container/path/

# 将容器文件复制到主机
docker cp container_name:/container/path/file.txt /host/path/

这种方法适合临时性的文件传输,但不是真正的挂载。

2. 使用 nsenter 进入容器挂载

# 获取容器PID
PID=$(docker inspect --format '{{.State.Pid}}' container_name)

# 使用nsenter进入容器命名空间
nsenter --target $PID --mount --uts --ipc --net --pid

# 在容器内部挂载
mount --bind /host/path /container/path

3. 使用 docker exec 结合挂载命令

# 确保容器有mount权限
docker exec -it --privileged container_name bash -c "mount --bind /host/path /container/path"

4. 使用 volume 插件或第三方工具

  • docker-volume-sshfs: 允许通过SSH挂载远程目录
  • docker-volume-netshare: 支持NFS, CIFS等网络文件系统

注意事项

  1. 这些方法大多需要容器以特权模式(--privileged)运行
  2. 绑定挂载(bind mount)是临时的,容器重启后会失效
  3. 生产环境建议使用标准的 volume 方式,并在必要时重建容器

推荐做法

虽然有不重启的临时方案,但最佳实践是:

# 1. 停止容器
docker stop container_name

# 2. 提交容器为镜像(可选)
docker commit container_name new_image

# 3. 用新挂载配置启动容器
docker run -v /new/host/path:/container/path [其他参数] new_image

这样可以确保配置持久化且符合 Docker 的设计理念。