docker run的复杂使用

bash 复制代码
sudo docker run -dit --name=nmediacross1.x -v $HOME:$HOME -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/dri:/dev/dri  --privileged --network=host -e DISPLAY=unix$DISPLAY -w $HOME nova:nmediacross1.x

这个Docker命令相当复杂,包含了许多选项和参数,用于启动一个具有特定配置的容器。下面是对该命令中每个部分的详细解释:

  • sudo: 这是一个Linux命令,用于获取超级用户权限,以便执行后续的Docker命令,因为直接操作硬件资源、系统目录等通常需要较高权限。

  • docker run: Docker的运行命令,用于创建一个新的容器并运行一个命令。

  • -dit: 这是三个选项的组合:

    • -d: 让容器在后台运行(守护进程模式)。
    • -i: 使容器的标准输入保持打开,即使没有连接到终端也会保持打开状态,通常与 -t 一起使用以分配一个伪TTY。
    • -t: 分配一个伪TTY,为容器提供一个交互式的shell环境。
  • --name=u20cross1.x: 为新创建的容器指定一个名字,这里是 u20cross1.x

  • -v $HOME:$HOME: 这个 -v--volume 选项用于挂载卷,即将主机的当前用户主目录绑定到容器内的相同路径。这意味着你在主机 $HOME 目录下的任何更改,在容器内也能看到,反之亦然。

  • -v /tmp/.X11-unix:/tmp/.X11-unix: 这同样是一个卷挂载,用于共享X11 socket文件,使得容器内的应用程序可以通过X11协议访问主机的图形界面。这对于在容器中运行GUI应用非常重要。

  • -v /dev/dri:/dev/dri: 挂载主机的 /dev/dri 目录到容器内,/dev/dri 包含直接渲染接口设备文件,这对于硬件加速图形处理(如OpenGL应用)是必要的。这允许容器直接访问主机的图形硬件资源。

  • --privileged: 给予容器更多的权限,包括对一些特殊硬件的访问能力,比如GPU、I/O设备等。这是一个强力选项,因为它会放宽安全限制,应谨慎使用。

  • --network=host: 使容器使用主机的网络堆栈,意味着容器将直接使用主机的网络设备和配置,而不是隔离的网络环境。这样容器就可以无障碍地访问主机网络服务和端口。

  • -e DISPLAY=unix$DISPLAY: 设置环境变量 DISPLAY,用于告诉容器内的应用程序图形显示应该在哪里进行。这里通过引用主机的 $DISPLAY 变量,确保图形输出能够正确路由回主机的显示屏。

  • -w $HOME: 设置容器的工作目录为宿主机的当前用户主目录。这意味着容器启动时的工作目录就是宿主机用户的 $HOME 目录。

  • nova:nativeCross1.x: 最后一部分指定了要运行的镜像名及其标签。在这个例子中,镜像是 nova,标签是 nativeCross1.x。Docker会查找本地是否存在此镜像,如果不存在,则会尝试从默认的注册服务器下载。

这个命令创建了一个高度交互式的容器,它与主机共享用户主目录、X11 socket以及直接渲染接口设备,具有较高的权限,使用主机网络,并准备运行一个需要图形界面和可能涉及硬件加速图形处理的应用程序。

相关推荐
SkyWalking中文站19 小时前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
程序员老赵21 小时前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位1 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
小猿姐1 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
SkyWalking中文站2 天前
认识 Horizon UI · 5/17:3D 基础设施地图
运维·监控·自动化运维
SkyWalking中文站3 天前
认识 Horizon UI · 1/17:SkyWalking 新一代可观测性控制台
运维·前端·监控
雪梨酱QAQ3 天前
Kubeneters HA Cluster部署
运维
lichenyang4533 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4533 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器