重庆装修设计网站,长沙app开发费用,成都网站建设sntuu,中国建行手机银行下载Linux笔记之制作基于ubuntu20.4的最小OpenGL C开发docker镜像 —— 2024-04-03 夜
code review! 文章目录 Linux笔记之制作基于ubuntu20.4的最小OpenGL C开发docker镜像1.这里把这本书的例程代码放在了Dockerfile所在的文件夹内以使镜像预装例程代码2.创建Dockerfile3.构建Do…Linux笔记之制作基于ubuntu20.4的最小OpenGL C开发docker镜像 —— 2024-04-03 夜
code review! 文章目录 Linux笔记之制作基于ubuntu20.4的最小OpenGL C开发docker镜像1.这里把这本书的例程代码放在了Dockerfile所在的文件夹内以使镜像预装例程代码2.创建Dockerfile3.构建Docker镜像4.运行Docker容器5.随便找个书中例程编译运行发现没有反应6.原因是宿主机的OpenGL不对查看OpenGL版本7.修改例程main.cpp重新编译运行8.可以在ubuntu 18.04中运行ubuntu20.04的docker镜像构建的容器吗 1.这里把这本书的例程代码放在了Dockerfile所在的文件夹内以使镜像预装例程代码 2.创建Dockerfile
# 使用官方Ubuntu基础镜像
FROM ubuntu:20.04# 避免在安装过程中由于时区设置导致的停滞
ENV DEBIAN_FRONTENDnoninteractive# 安装基本工具
RUN apt-get update apt-get install -y \build-essential \xorg-dev \libglu1-mesa-dev \libglew-dev \libsdl2-dev \libsdl2-image-dev \libglm-dev \libfreetype6-dev \libglfw3 \libglfw3-dev \libsoil-dev \freeglut3-dev \mesa-utils \git \wget \# 基本C构建环境g \cmake \mesa-common-dev \# 文本编辑器vim# 清理缓存以减小镜像大小
RUN apt-get clean rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /app# 可以选择复制本地代码到容器中
COPY ./book_demo /app# 设置环境变量例如GLFW库的路径等
# ENV LIBRARY_PATH/path/to/library# 编译你的OpenGL程序
# RUN g -o myapp main.cpp -lGL -lGLU -lglfw -lGLEW# 设置一个默认的命令可选
# CMD [./myapp]3.构建Docker镜像
在包含Dockerfile的文件夹内打开一个终端执行以下命令来构建Docker镜像
docker build -t opengl-cpp-env .这里的opengl-cpp-env是给这个镜像起的名字可以根据喜好命名。
4.运行Docker容器
确保X服务器允许来自本地所有用户的连接。在宿主机的终端中执行以下命令
xhost 这将允许所有用户连接到X服务器。出于安全考虑在完成容器的使用后应通过运行xhost -来撤销此权限。
当镜像构建完成后可以使用以下命令运行容器
docker run -it --rm \-v /tmp/.X11-unix:/tmp/.X11-unix \-e DISPLAY$DISPLAY \opengl-cpp-env如果需要与容器共享文件系统可以使用-v参数挂载本地目录到容器中
docker run -it --rm -v $(pwd):/app opengl-cpp-env5.随便找个书中例程编译运行发现没有反应 6.原因是宿主机的OpenGL不对查看OpenGL版本
使用glxinfo命令
glxinfo是一个显示有关OpenGL和GLX的信息的程序。首先确保安装了mesa-utils包
sudo apt update
sudo apt install mesa-utils然后运行glxinfo命令来查找OpenGL版本
glxinfo | grep OpenGL version这应该会输出你的OpenGL版本例如
OpenGL version string: 4.6.0 NVIDIA 390.77运行发现是3.3版本
注意:
在虚拟机中显示的OpenGL版本可能是虚拟化软件模拟的版本而不是宿主机硬件实际支持的版本。如果在虚拟机中确保安装了虚拟机的增强工具比如VMware Tools或VirtualBox Guest Additions这样可以获得更好的图形性能和更准确的OpenGL版本信息。
如果发现OpenGL版本较低可能需要更新显卡驱动或在物理硬件上测试OpenGL程序。
7.修改例程main.cpp重新编译运行 编译
g main.cpp -o main -lGLEW -lglfw -lGL运行
8.可以在ubuntu 18.04中运行ubuntu20.04的docker镜像构建的容器吗
是的可以在Ubuntu 18.04中运行为Ubuntu 20.04构建的Docker容器。Docker的设计目的之一就是提供隔离这意味着运行容器的宿主机操作系统与容器内的操作系统版本可以不同。
容器内的应用程序与其依赖项都被封装在镜像中该镜像包含了运行该应用程序所需的一切。因此只要宿主机安装的Docker引擎版本是兼容的并且宿主机的内核支持容器所需的所有功能就可以在Ubuntu 18.04上运行为Ubuntu 20.04构建的容器。
请确保宿主机上安装了最新版本的Docker。可以通过执行以下命令来安装或更新Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io安装或更新Docker后在宿主机上运行容器的命令与在任何其他支持的Linux发行版上运行容器的命令相同。例如
docker run -it ubuntu:20.04这将启动一个基于ubuntu:20.04镜像的容器您可以在其中运行命令。只要Docker守护程序正在运行就应该能够无差别地执行此操作不管宿主机的Ubuntu版本是多少。