Docker和Nvidia-docker的安装、测试,及运行GUI应用

本文详细介绍了Docker的安装步骤及配置方法,包括卸载旧版本、设置官方仓库、安装Docker引擎等,并提供了测试Docker运行状态的方法。此外,还讲解了如何安装Nvidia-docker及其测试流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dokcer安装

Docker ,发现了新世界,一台电脑+docker >>> 无数台各种配置的电脑 >c<

快速搭建所需开发环境

Docker文档:https://docs.docker.com/,Docker安装指南: Install Docker Engine on Ubuntu

Dokcer安装

Uninstall old versions

~$ sudo apt-get remove docker docker-engine docker.io containerd runc

Install using the repository

Set up the repository
~$ sudo apt-get update
~$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

Add Docker’s official GPG key:
~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88, by searching for the last 8 characters of the fingerprint.
~$ sudo apt-key fingerprint 0EBFCD88

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

Use the following command to set up the stable repository.
~$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Install Docker Engine
~$ sudo apt-get update
~$ sudo apt-get install docker-ce docker-ce-cli containerd.io

Verify that Docker Engine is installed correctly by running the hello-world image.
~$ sudo docker run hello-world

 Docker测试

# 启动docker服务
sudo service docker start

# Docker: hello-world
sudo docker run hello-world

其他Docker命令:

Usage: service docker {start|stop|restart|status}

查看镜像
sudo docker images

查看容器
sudo docker container ls -a

Tips:Docker中一般Crtl+C退出,传送门:停止、删除所有的 docker 容器和镜像

Nvidia-docker安装

查看nvidia版本

$ nvidia-smi
Thu Nov 26 10:34:37 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce RTX 2060    Off  | 00000000:01:00.0  On |                  N/A |
|  0%   37C    P8     9W / 190W |    301MiB /  5931MiB |      2%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A       942      G   /usr/lib/xorg/Xorg                 35MiB |
|    0   N/A  N/A      2278      G   /usr/lib/xorg/Xorg                 96MiB |
|    0   N/A  N/A      2404      G   /usr/bin/gnome-shell              150MiB |
|    0   N/A  N/A      4051      G   /usr/lib/firefox/firefox            3MiB |
+-----------------------------------------------------------------------------+

参考链接:官网installation guide

Github:NVIDIA/nvidia-docker

#
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

#
curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

sudo apt-get update

sudo apt-get install -y nvidia-docker2

sudo systemctl restart docker

# 测试
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

Unable to find image 'nvidia/cuda:11.0-base' locally
11.0-base: Pulling from nvidia/cuda
54ee1f796a1e: Pull complete 
f7bfea53ad12: Pull complete 
46d371e02073: Pull complete 
b66c17bbf772: Pull complete 
3642f1a6dfb3: Pull complete 
e5ce55b8b4b9: Pull complete 
155bc0332b0a: Pull complete 
Digest: sha256:774ca3d612de15213102c2dbbba55df44dc5cf9870ca2be6c6e9c627fa63d67a
Status: Downloaded newer image for nvidia/cuda:11.0-base
Thu Nov 26 02:30:34 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce RTX 2060    Off  | 00000000:01:00.0  On |                  N/A |
|  0%   37C    P8    10W / 190W |    307MiB /  5931MiB |     13%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

测试

sudo docker run --runtime=nvidia --rm nvidia/cuda:11.0-base nvidia-smi

Docker 容器 GUI

sudo apt-get install x11-xserver-utils

xhost+

docker run -e DISPLAY=$DISPLAY -e GDK_SCALE -e GDK_DPI_SCAL -v /tmp/.X11-unix:/tmp/.X11-unix --rm -it container-name-or-id

若遇到X Error时,添加参数:--ipc=host 或 --env="QT_X11_NO_MITSHM=1",参考链接:

How to fix X Error: BadAccess, BadDrawable, BadShmSeg while running graphical application using Docker?

Docker: gazebo: cannot connect to X server

若遇到 libGL error: No matching fbConfigs or visuals found libGL error... ,参考链接:

使用docker时出现libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver...

已成功测试上述链接中的 pull image 方式

使用nvidia-smi查看nvidia driver和cuda版本,根据 nvidia/cudagl ,选择合适的TAG

nvidia-smi

sudo docker pull nvidia/cudagl:11.0-base

# 测试
xhost+

sudo nvidia-docker run --rm -it -e DISPLAY=$DISPLAY -e GDK_SCALE -e GDK_DPI_SCAL -v /tmp/.X11-unix:/tmp/.X11-unix nvidia/cudagl:11.0-base
# or
sudo docker run --rm --runtime=nvidia -it -e DISPLAY=$DISPLAY -e GDK_SCALE -e GDK_DPI_SCAL -v /tmp/.X11-unix:/tmp/.X11-unix nvidia/cudagl:11.0-base

apt-get update
apt-get install mesa-utils
glxgears


 

7 步精简 Docker (上)

7 步精简 Docker 镜像(下)

 

如何在docker和宿主机之间复制文件

 

 

end

### 进入并配置 Docker 容器 为了在 Docker运行 VINS-Fusion SLAM 系统,需先进入 `vins-fusion` 的 Docker 文件夹: ```bash cd ./VINS-Fusion/docker ``` 此操作定位到包含必要脚本文件的位置以便启动 Docker 容器[^1]。 ### 构建 Docker 镜像 构建适用于 VINS-Fusion 的 GPU 版本镜像时,在终端执行如下命令: ```bash sudo docker build -t vins_fusion_gpu -f Dockerfile.gpu . ``` 上述指令基于指定的 Dockerfile 创建一个新的 Docker 映像,标签为 `vins_fusion_gpu`。这一步骤确保所有依赖项被正确安装于映像内[^2]。 ### 启动 Docker 容器 创建并启动容器前,先定义挂载路径其他参数。对于 Ubuntu 20.04 用户来说,推荐设置如下环境变量来简化后续命令输入过程: ```bash export ROS_MASTER_URI=http://localhost:11311 export ROS_IP=127.0.0.1 ``` 接着通过下面这条命令启动带有图形界面支持以及硬件加速功能的交互式会话模式下的新容器实例: ```bash sudo nvidia-docker run \ --name=vins-container \ --rm \ -it \ --privileged \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $HOME/vins_ws:/root/catkin_ws/src/VINS-Fusion \ vins_fusion_gpu ``` 这段代码片段实现了几个重要目标:启用了 NVIDIA GPU 支持;允许访问主机系统的显示服务器用于 GUI 应用程序展示;并且将本地工作空间目录映射至容器内部相应位置以方便开发调试。 ### 编译源码 一旦成功进入了正在运行中的容器之后,则可以根据官方 GitHub 页面上的指导完成剩余步骤,即切换到 master 分支,并按照给定说明进行编译: ```bash git checkout master catkin_make -j$(nproc) source devel/setup.bash roslaunch vins_estimator vins_rtk.launch ``` 这些命令依次完成了版本控制库更新、CMake 制造系统调用、ROS 工作区初始化及最终节点启动的任务[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值