Docker进阶 - 容器显示图像到宿主机屏幕

Docker进阶 - 容器显示图像到宿主机屏幕

本机环境

Ubuntu 22.04 → 安装方式
Docker version 26.0.2

Docker常见命令

# 查看docker镜像
sudo docker images

# 基于镜像启动一个容器并自动启动
sudo docker run -itd --name container_name image_name

# 查看各容器状态
sudo docker ps -a

# 启动/暂停容器
sudo docker start container_ID
sudo docker stop container_ID

# 进入容器内部
sudo docker exec -it container_ID /bin/bash

# 删除容器
sudo docker rm container_ID

#删除镜像
sudo docker rmi image_name

# 清理Docker缓存 -> 会将未开启容器的镜像也清理
docker system prune -a

Docker的Ubuntu镜像换源

前提:准备好sources.list到Dockerfile同级文件夹中!

# Dockerfile

# 基础镜像
FROM ubuntu:22.04

# 拷贝本地配置
ADD .  /home
 
# 指定后续工作目录
WORKDIR /home

# 对镜像换源
RUN cp /etc/apt/sources.list /etc/apt/sources.list.backup
RUN rm -rf /etc/apt/sources.list
RUN cp /home/sources.list /etc/apt/sources.list
RUN apt update
RUN apt upgrade -y

Docker打包镜像并导入镜像

# 打包镜像 -> 以打包hello-world镜像为例
sudo docker save hello-world -o hello-world.tar

# ubuntu22.04打包之后文件夹权限有问题,可以进行修改
sudo chmod 777 hello-world.tar

# 加载镜像
sudo docker load -i hello-world.tar

通过linux的X11(C/S)共享图像显示窗口给Docker容器

参考

#安装xserver -> ubuntu 22.04好像已有
$sudo apt install x11-xserver-utils
#许可所有用户都可访问xserver    注意加号前应有空格
$xhost +
# 查看当前显示的环境变量值 (要在显示屏查看,其他ssh终端不行) 
$echo $DISPLAY   #假设为:0

如何创建支持X11转发的容器?

sudo docker run -itd --name paddle-contariner --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -v /etc/localtime:/etc/localtime:ro -e DISPLAY=:0 --device /dev/video0:/dev/video0 paddle:latest
  • –name 容器名
  • –privileged 给予容器额外的权限,使其能够访问宿主机的所有设备,包括设备驱动程序,类似于root用户
  • -v /tmp/.X11-unix:/tmp/.X11-unix 创建一个挂载点,将宿主机的 /tmp/.X11-unix 目录挂载到容器内的相同路径, 用于X11转发,允许容器访问宿主机的X服务器
  • -v /etc/localtime:/etc/localtime:ro 将宿主机的 /etc/localtime 文件挂载到容器中,并设置为只读(ro)。这样可以确保容器的时间与宿主机同步
  • -e DISPLAY=:0 设置环境变量 DISPLAY,用于X11转发,指定X客户端连接到X服务器的显示编号
  • –device /dev/video0:/dev/video0 将宿主机的 /dev/video0 设备(通常是USB摄像头)挂载到容器内,使得容器可以访问摄像头
  • paddle:latest 指定要使用的Docker镜像,这里是 paddle 镜像的最新版本(latest 标签)
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值