2团
Published on 2026-02-14 / 3 Visits
0
0

Ubuntu 24.04 Snap版Docker文件挂载问题解决

问题描述

在Ubuntu 24.04系统上使用snap安装的 Docker,执行容器挂载单个配置文件时报错:

docker: Error response from daemon: failed to create task for container: 
failed to create shim task: OCI runtime create failed: runc create failed: 
unable to start container process: error during container init: 
error mounting "/work/nginx/nginx.conf" to rootfs at "/etc/nginx/nginx.conf": 
create mountpoint for /etc/nginx/nginx.conf mount: cannot create subdirectories 
in "/var/snap/docker/common/var-lib-docker/overlay2/...": not a directory: unknown

复现场景

# 主机上存在配置文件
$ ls -l /work/nginx/nginx.conf
-rw-r--r-- 1 root root 1191 Feb 14 09:14 /work/nginx/nginx.conf

# 尝试挂载单个文件到容器
$ docker run -d --name nginx \
  -v /work/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  nginx

根本原因

Snap安装的Docker由于沙箱限制,不支持挂载单个文件,只能挂载目录。错误信息中的路径 /var/snap/docker/common/var-lib-docker/overlay2/... 就是明显特征。

解决方案

1. 卸载snap版Docker

sudo snap remove docker

2. 清空Bash命令缓存

hash -r

3. 安装apt版Docker

sudo apt update
sudo apt install docker.io

4. 验证安装

docker --version
which docker  # 应该显示 /usr/bin/docker 而非 /snap/bin/docker

5. 重新运行容器

docker run -d --name nginx \
  -v /work/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /work/nginx/conf.d:/etc/nginx/conf.d \
  -v /work/nginx/logs:/var/log/nginx \
  -p 80:80 \
  nginx

参考命令对比

安装方式 Docker 路径 数据目录 单文件挂载
snap /snap/bin/docker /var/snap/docker/common/var-lib-docker ❌ 不支持
apt /usr/bin/docker /var/lib/docker ✅ 支持


Comment