docker无法映射/挂载根目录

docker无法映射(挂载)根目录下的文件夹只能映射家目录

最近想要使用nas-tools做做刮削,电影存在一个机械磁盘里,机械磁盘被挂载到/data1下,发现一个很奇怪的问题,docker只能挂载成功home目录下的文件夹,/data1,/tmp这种就挂载不了,比如:

services:
  nas-tools:
    image: hsuyelin/nas-tools:latest
    ports:
      - 3000:3000 
    volumes:
      - /home/admin//docker-compose/nas-tools:/config 
      - /home/admin/video:/video
    environment: 
      - user=root
      - UMASK=000 

这样设置,就能在nas-tools里看到文件,但是

services:
  nas-tools:
    image: hsuyelin/nas-tools:latest
    ports:
      - 3000:3000 
    volumes:
      - /home/admin/docker-compose/nas-tools:/config 
      - /data1/video:/video
    environment: 
      - user=root
      - UMASK=000 

这样就不行,后面发现这是因为我在装Ubuntu的时候预装了docker,这个docker是snap docker,他被限制了只能访问/home目录下的文件!

This build can only access files in the home directory. So Dockerfiles and all other files used in commands like docker build, docker save and docker load need to be in $HOME.

--------------------------------------- 
ref:https://snapcraft.io/docker

解决方法:

  1. 卸载snap docker

    sudo snap remove --purge docker

  2. 使用apt重新安装docker

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo docker run hello-world

屏幕中出现了docker的hello world表示安装成功

ref:https://docs.docker.com/engine/install/ubuntu/

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段配置是用来运行一个名为cadvisor的Docker容器的,其中各个参数的作用如下: - `--volume=/:/rootfs:ro`:将主机的根文件系统挂载容器的/rootfs目录下,并且只读模式(ro)。 - `--volume=/var/run:/var/run:rw`:将主机的/var/run目录挂载容器的/var/run目录下并且可读可写(rw)。 - `--volume=/sys:/sys:ro`:将主机的/sys目录挂载容器的/sys目录下,并且只读模式(ro)。 - `--volume=/var/lib/docker/:/var/lib/docker:ro`:将主机的/var/lib/docker目录挂载容器的/var/lib/docker目录下,并且只读模式(ro)。 - `--volume=/dev/disk/:/dev/disk:ro`:将主机的/dev/disk目录挂载容器的/dev/disk目录下,并且只读模式(ro)。 - `--publish=8080:8080`:将容器的8080端口映射到主机的8080端口。 - `--publish=8081:8081`:将容器的8081端口映射到主机的8081端口。 - `--detach=true`:将容器运行在后台模式。 - `--name=cadvisor`:给容器起一个名字为cadvisor。 - `--device=/dev/nvidiactl`:将主机的/dev/nvidiactl设备挂载容器内。 - `--device=/dev/nvidia-uvm`:将主机的/dev/nvidia-uvm设备挂载容器内。 - `--device=/dev/nvidia0`:将主机的/dev/nvidia0设备挂载容器内。 - `gcr.io/cadvisor/cadvisor:v0.39.0`:指定要使用的镜像名称及版本号。 - `--port=8080 --logtostderr`:指定容器的参数,将cadvisor服务运行在8080端口,并将日志输出到标准输出(stderr)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值