{"id":27082,"date":"2024-03-05T13:49:27","date_gmt":"2022-11-13T22:18:21","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/"},"modified":"2025-08-12T00:40:38","modified_gmt":"2025-08-11T16:40:38","slug":"%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/","title":{"rendered":"\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo"},"content":{"rendered":"<h1>\u9996\u5148<\/p>\n<p>\u4e3a\u4e86\u65b9\u4fbf\u90a3\u4e9b\u60f3\u8981\u5c1d\u8bd5\u521b\u5efa\u5404\u79cd\u4e0d\u540c\u7684ROS\u73af\u5883\u4f46\u53c8\u89c9\u5f97\u73af\u5883\u914d\u7f6e\u9ebb\u70e6\u7684\u4eba\uff0c\u6211\u5c06\u4ecb\u7ecd\u4f7f\u7528Docker\u6765\u6784\u5efaROS\u73af\u5883\u7684\u65b9\u6cd5\u3002\u76f8\u6bd4\u76f4\u63a5\u5728\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u914d\u7f6e\u73af\u5883\uff0c\u4f7f\u7528Docker\u53ef\u4ee5\u7701\u53bb\u5f88\u591a\u914d\u7f6e\u73af\u5883\u7684\u7e41\u7410\u6b65\u9aa4\uff0c\u800c\u4e14\u8fd8\u53ef\u4ee5\u521b\u5efa\u591a\u4e2a\u73af\u5883\uff0c\u5177\u6709\u5f88\u591a\u4f18\u70b9\u3002\u8fd9\u79cd\u65b9\u6cd5\u4e0d\u9700\u8981\u592a\u591a\u6709\u5173Docker\u7684\u77e5\u8bc6\uff0c\u8fd9\u4e5f\u662f\u5b83\u7684\u4f18\u70b9\u4e4b\u4e00\u3002<\/p>\n<h1>\u5047\u8bbe\u4e3a\u524d\u63d0\u7684\u4e2a\u4eba\u7535\u8111\u73af\u5883<\/p>\n<p>\u6ee1\u8db3\u4e0b\u5217\u4e24\u4e2a\u6761\u4ef6<\/p>\n<ul class=\"post-ul\">\nUbuntu \u304c\u5165\u3063\u3066\u3044\u308b<br \/>\nNVIDIA \u306e\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3001\u3082\u3057\u304f\u306f Intel \u306a\u3069\u306e\u5185\u8535 GPU 1 \u3092\u642d\u8f09\u3057\u3066\u3044\u308b\n<\/ul>\n<h1>\u80fd\u591f\u505a\u5230\u7684\u4e8b\u60c5<\/p>\n<p>\u4f7f\u7528Docker\u542f\u52a8\u7684Ubuntu\u4e2d\u542f\u52a8ROS\uff0c\u663e\u793aRviz\u548cGazebo\u7684GUI\u3002<\/p>\n<div>\u8bf7\u9996\u5148\u786e\u8ba4\u60a8\u60f3\u4f7f\u7528\u7684 ROS \u7248\u672c\u662f\u5426\u5f97\u5230\u652f\u6301\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u7f51\u7ad9\u8fdb\u884c\u786e\u8ba4\u3002\u672c\u6b21\u6240\u63d0\u53ca\u7684 GitHub \u5b58\u50a8\u5e93\u662f\u57fa\u4e8e\u6b64\u3002<a><\/a><\/p>\n<h1>\u8fd9\u6b21\u8981\u505a\u4ec0\u4e48<\/p>\n<ul class=\"post-ul\">\nDocker \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<br \/>\nNVIDIA \u95a2\u9023\u306e\u3042\u308c\u3053\u308c<\/p>\n<p>Nouveau \u306e\u7121\u52b9\u5316<br \/>\nNVIDIA \u30c9\u30e9\u30a4\u30d0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<br \/>\nNVIDIA Container Toolkit \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<p>X \u30b5\u30fc\u30d0\u3078\u306e\u30a2\u30af\u30bb\u30b9\u8a2d\u5b9a<br \/>\nDocker \u30a4\u30e1\u30fc\u30b8\u306e\u53d6\u5f97<\/p>\n<p>Docker \u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<br \/>\nDocker \u30d5\u30a1\u30a4\u30eb\u306e\u30d3\u30eb\u30c9<\/p>\n<p>\u52d5\u4f5c\u78ba\u8a8d\n<\/ul>\n<h1>\u5b89\u88c5Docker<\/p>\n<p>\u6839\u636e&#8221;\u5728Ubuntu\u4e0a\u5b89\u88c5Docker Engine &#8211; \u4f7f\u7528Apt\u5b58\u50a8\u5e93\u8fdb\u884c\u5b89\u88c5&#8221;\u7684\u8bf4\u660e\uff0c\u8bf7\u6253\u5f00\u7ec8\u7aef\u5e76\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ sudo apt update\r\n$ sudo apt -y install ca-certificates curl gnupg\r\n$ sudo install -m 0755 -d \/etc\/apt\/keyrings\r\n$ curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg\r\n$ sudo chmod a+r \/etc\/apt\/keyrings\/docker.gpg\r\n$ echo \\\r\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=\/etc\/apt\/keyrings\/docker.gpg] https:\/\/download.docker.com\/linux\/ubuntu \\\r\n  \"$(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\")\" stable\" | \\\r\n  sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null\r\n$ sudo apt update\r\n$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u5bf9Docker\u547d\u4ee4\u8fdb\u884c\u66f4\u6539\uff0c\u4f7f\u5176\u53ef\u4ee5\u5728\u975e\u7ba1\u7406\u5458\u6743\u9650\uff08\u65e0\u9700sudo\uff09\u4e0b\u6267\u884c\u3002\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ sudo groupadd docker\r\n$ sudo usermod -aG docker $USER\r\n<\/code><\/pre>\n<p>\u8bf7\u786e\u8ba4\u64cd\u4f5c\u6b65\u9aa4\u5df2\u7ecf\u5b8c\u6210\u3002\u8bf7\u5148\u5173\u95ed\u7ec8\u7aef\uff0c\u518d\u91cd\u65b0\u6253\u5f00\u540e\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ docker --rm run hello-world\r\nUnable to find image 'hello-world:latest' locally\r\nlatest: Pulling from library\/hello-world\r\n719385e32844: Pull complete \r\nDigest: sha256:88ec0acaa3ec199d3b7eaf73588f4518c25f9d34f58ce9a0df68429c5af48e8d\r\nStatus: Downloaded newer image for hello-world:latest\r\n\r\nHello from Docker!\r\nThis message shows that your installation appears to be working correctly.\r\n\r\nTo generate this message, Docker took the following steps:\r\n 1. The Docker client contacted the Docker daemon.\r\n 2. The Docker daemon pulled the \"hello-world\" image from the Docker Hub.\r\n    (amd64)\r\n 3. The Docker daemon created a new container from that image which runs the\r\n    executable that produces the output you are currently reading.\r\n 4. The Docker daemon streamed that output to the Docker client, which sent it\r\n    to your terminal.\r\n\r\nTo try something more ambitious, you can run an Ubuntu container with:\r\n $ docker run -it ubuntu bash\r\n\r\nShare images, automate workflows, and more with a free Docker ID:\r\n https:\/\/hub.docker.com\/\r\n\r\nFor more examples and ideas, visit:\r\n https:\/\/docs.docker.com\/get-started\/\r\n<\/code><\/pre>\n<h1>\u82f1\u4f1f\u8fbe\uff08NVIDIA\uff09\u9a71\u52a8\u7a0b\u5e8f\u53ca\u76f8\u5173\u4e8b\u9879<\/p>\n<p>\u5982\u679c\u60a8\u7684 PC \u4e0a\u5b89\u88c5\u4e86 NVIDIA \u663e\u5361\uff0c\u624d\u9700\u8981\u6267\u884c\u6b64\u6b65\u9aa4\u3002\u5982\u679c\u60a8\u6ca1\u6709\u5b89\u88c5\u663e\u5361\uff0c\u800c\u662f\u4f7f\u7528\u5185\u7f6e\u7684 GPU1\uff0c\u90a3\u4e48\u8bf7\u8df3\u8fc7\u6b64\u6b65\u9aa4\uff0c\u7ee7\u7eed\u8fdb\u884c\u201cX \u670d\u52a1\u5668\u8bbf\u95ee\u8bbe\u7f6e\u201d\u7684\u6b65\u9aa4\u3002<\/p>\n<ul class=\"post-ul\">\n<p>NVIDIA \u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3092\u642d\u8f09\u3057\u3066\u3044\u308b\u5834\u5408<br \/>\n\u307e\u305a\u65e2\u306b NVIDIA \u30c9\u30e9\u30a4\u30d0\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ dpkg -l | grep nvidia<\/p>\n<p>\u4f55\u3082\u8868\u793a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u305d\u306e\u307e\u307e\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u9032\u307f\u307e\u3059\u3002\u4f55\u304b\u3057\u3089\u306e NVIDIA \u30c9\u30e9\u30a4\u30d0\u306e\u60c5\u5831\u304c\u8868\u793a\u3055\u308c\u305f\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066 &#8220;Docker \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&#8221; \u306e\u624b\u9806\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002<br \/>\n\u305d\u306e\u5f8c\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<p>Nouveau \u306e\u7121\u52b9\u5316<br \/>\nNVIDIA \u30c9\u30e9\u30a4\u30d0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<\/ul>\n<h2>\u65b0\u7684\u65e0\u6548\u5316<\/p>\n<ul class=\"post-ul\">\n<p>NVIDIA \u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3092\u642d\u8f09\u3057\u3066\u3044\u308b\u5834\u5408<br \/>\n\u307e\u305a Nouveau \u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u52d5\u3044\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ lsmod | grep nouveau<br \/>\nnouveau              1403757  0<br \/>\nvideo                  24400  1 nouveau<br \/>\nmxm_wmi                13021  1 nouveau<br \/>\ni2c_algo_bit           13413  1 nouveau<br \/>\ndrm_kms_helper        125008  1 nouveau<br \/>\nttm                    93441  1 nouveau<br \/>\ndrm                   349210  3 ttm,drm_kms_helper,nouveau<br \/>\ni2c_core               40582  5<br \/>\ndrm,i2c_i801,drm_kms_helper,i2c_algo_bit,nouveau<br \/>\nwmi                    19070  2 mxm_wmi,nouveau\t\t\t<\/p>\n<p>\u4f55\u304b\u3057\u3089\u306e\u60c5\u5831\u304c\u8868\u793a\u3055\u308c Nouveau \u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u52d5\u3044\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u5f8c\u3001 \/etc\/modprobe.d \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002TODOd: \u3082\u3057\u306a\u306b\u3082\u8868\u793a\u3055\u308c\u306a\u3044\u5834\u5408\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ cd \/etc\/modprobe.d<\/p>\n<p>\u6b21\u306b Nouveau \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8a2d\u5b9a\u3092\u8a18\u8ff0\u3059\u308b blacklist-nouveau.conf \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001<br \/>\n$ sudo nano blacklist-nouveau.conf<\/p>\n<p>\u8868\u793a\u3055\u308c\u308b blacklist-nouveau.conf \u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306b\u4ee5\u4e0b\u3092\u66f8\u304d\u8a18\u3057\u3001<\/p>\n<p>blacklist-nouveau.conf<br \/>\nblacklist nouveau<br \/>\noptions nouveau modeset=0<\/p>\n<p>Control + S \u306b\u3088\u308a blacklist-nouveau.conf \u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u305f\u5f8c\u3001Control + X \u3067 blacklist-nouveau.conf \u30d5\u30a1\u30a4\u30eb\u3092\u9589\u3058\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n\u6700\u5f8c\u306b\u3001initramfs \u30a4\u30e1\u30fc\u30b8\u3092\u66f4\u65b0\u3057\u307e\u3059 2\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ sudo update-initramfs -u<\/p>\n<\/ul>\n<h2>NVIDIA \u9a45\u52d5\u7a0b\u5f0f\u7684\u5b89\u88dd<\/p>\n<div>\u8b66\u544a<br \/>\n\u5982\u679c\u4ee5\u4e0b\u6b65\u9aa4\u5931\u8d25\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u9a71\u52a8\u7a0b\u5e8f\u51b2\u7a81\u3001\u5c4f\u5e55\u65e0\u6cd5\u663e\u793a\u3001\u65e0\u6cd5\u767b\u5f55\u7b49\u6545\u969c\u3002\u8bf7\u52a1\u5fc5\u8c28\u614e\u64cd\u4f5c\u3002<\/p>\n<ul class=\"post-ul\">\nNVIDIA \u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3092\u642d\u8f09\u3057\u3066\u3044\u308b\u5834\u5408<br \/>\n\u307e\u305a Ubuntu \u306e\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30b9\u30c9\u30e9\u30a4\u30d0\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ sudo add-apt-repository ppa:graphics-drivers\/ppa<br \/>\n$ sudo apt update<\/p>\n<p>\u6b21\u306b PC \u306b\u63a8\u5968\u3055\u308c\u308b\u30c9\u30e9\u30a4\u30d0\u3092\u8abf\u3079\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ ubuntu-drivers devices<br \/>\n== \/sys\/devices\/pci0000:00\/0000:00:01.0\/0000:01:00.0 ==<br \/>\nmodalias : pci:v000010DEd00002204sv000019DAsd00001613bc03sc00i00<br \/>\nvendor   : NVIDIA Corporation<br \/>\ndriver   : nvidia-driver-535 &#8211; third-party non-free<br \/>\ndriver   : nvidia-driver-525 &#8211; third-party non-free<br \/>\ndriver   : nvidia-driver-525-server &#8211; distro non-free<br \/>\ndriver   : nvidia-driver-470-server &#8211; distro non-free<br \/>\ndriver   : nvidia-driver-470 &#8211; distro non-free<br \/>\ndriver   : nvidia-driver-535-server &#8211; distro non-free<br \/>\ndriver   : nvidia-driver-535-server-open &#8211; distro non-free recommended<br \/>\ndriver   : nvidia-driver-525-open &#8211; distro non-free<br \/>\ndriver   : nvidia-driver-535-open &#8211; third-party non-free<br \/>\ndriver   : xserver-xorg-video-nouveau &#8211; distro free builtin<\/p>\n<p>\u8868\u793a\u3055\u308c\u305f\u30ea\u30b9\u30c8\u306e\u4e2d\u3067 recommended \u3068\u66f8\u304b\u308c\u3066\u3044\u308b NVIDIA \u30c9\u30e9\u30a4\u30d0\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070 nvidia-driver-<XXX> \u3067\u3042\u3063\u305f\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ sudo apt install nvidia-driver-<XXX><\/p>\n<p>\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ sudo reboot<\/p>\n<p>\u30ed\u30b0\u30a4\u30f3\u5f8c\u3001\u307e\u305a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f NVIDIA \u95a2\u9023\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ dpkg -l | grep nvidia<br \/>\nii  libnvidia-cfg1-525:amd64                   525.85.12-0ubuntu1                  amd64        NVIDIA binary OpenGL\/GLX configuration library<br \/>\nii  libnvidia-common-525                       525.85.12-0ubuntu1                  all          Shared files used by the NVIDIA libraries<br \/>\nii  libnvidia-compute-525:amd64                525.85.12-0ubuntu1                  amd64        NVIDIA libcompute package<br \/>\nii  libnvidia-compute-525:i386                 525.85.12-0ubuntu1                  i386         NVIDIA libcompute package<br \/>\nii  libnvidia-container-tools                  1.13.5-1                            amd64        NVIDIA container runtime library (command-line tools)<br \/>\nii  libnvidia-container1:amd64                 1.13.5-1                            amd64        NVIDIA container runtime library<br \/>\nii  libnvidia-decode-525:amd64                 525.85.12-0ubuntu1                  amd64        NVIDIA Video Decoding runtime libraries<br \/>\nii  libnvidia-decode-525:i386                  525.85.12-0ubuntu1                  i386         NVIDIA Video Decoding runtime libraries<br \/>\nii  libnvidia-encode-525:amd64                 525.85.12-0ubuntu1                  amd64        NVENC Video Encoding runtime library<br \/>\nii  libnvidia-encode-525:i386                  525.85.12-0ubuntu1                  i386         NVENC Video Encoding runtime library<br \/>\nii  libnvidia-extra-525:amd64                  525.85.12-0ubuntu1                  amd64        Extra libraries for the NVIDIA driver<br \/>\nii  libnvidia-fbc1-525:amd64                   525.85.12-0ubuntu1                  amd64        NVIDIA OpenGL-based Framebuffer Capture runtime library<br \/>\nii  libnvidia-fbc1-525:i386                    525.85.12-0ubuntu1                  i386         NVIDIA OpenGL-based Framebuffer Capture runtime library<br \/>\nii  libnvidia-gl-525:amd64                     525.85.12-0ubuntu1                  amd64        NVIDIA OpenGL\/GLX\/EGL\/GLES GLVND libraries and Vulkan ICD<br \/>\nii  libnvidia-gl-525:i386                      525.85.12-0ubuntu1                  i386         NVIDIA OpenGL\/GLX\/EGL\/GLES GLVND libraries and Vulkan ICD<br \/>\nii  nvidia-compute-utils-525                   525.85.12-0ubuntu1                  amd64        NVIDIA compute utilities<br \/>\nii  nvidia-container-toolkit                   1.13.5-1                            amd64        NVIDIA Container toolkit<br \/>\nii  nvidia-container-toolkit-base              1.13.5-1                            amd64        NVIDIA Container Toolkit Base<br \/>\nii  nvidia-dkms-525                            525.85.12-0ubuntu1                  amd64        NVIDIA DKMS package<br \/>\nii  nvidia-driver-525                          525.85.12-0ubuntu1                  amd64        NVIDIA driver metapackage<br \/>\nii  nvidia-kernel-common-525                   525.85.12-0ubuntu1                  amd64        Shared files used with the kernel module<br \/>\nii  nvidia-kernel-source-525                   525.85.12-0ubuntu1                  amd64        NVIDIA kernel source package<br \/>\nii  nvidia-modprobe                            525.85.12-0ubuntu1                  amd64        Load the NVIDIA kernel driver and create device files<br \/>\nii  nvidia-prime                               0.8.16~0.20.04.2                    all          Tools to enable NVIDIA&#8217;s Prime<br \/>\nii  nvidia-settings                            525.85.12-0ubuntu1                  amd64        Tool for configuring the NVIDIA graphics driver<br \/>\nii  nvidia-utils-525                           525.85.12-0ubuntu1                  amd64        NVIDIA driver support binaries<br \/>\nii  screen-resolution-extra                    0.18build1                          all          Extension for the nvidia-settings control panel<br \/>\nii  xserver-xorg-video-nvidia-525              525.85.12-0ubuntu1                  amd64        NVIDIA binary Xorg driver<\/p>\n<p>\u6b21\u306b NVIDIA \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ lsmod | grep nvidia<br \/>\nnvidia_uvm           1388544  0<br \/>\nnvidia_drm             69632  14<br \/>\nnvidia_modeset       1216512  20 nvidia_drm<br \/>\nnvidia              56336384  1168 nvidia_uvm,nvidia_modeset<br \/>\ndrm_kms_helper        307200  1 nvidia_drm<br \/>\ndrm                   618496  18 drm_kms_helper,nvidia,nvidia_drm<\/p>\n<p>\u6700\u5f8c\u306b GPU \u306e\u72b6\u614b\u3084\u5229\u7528\u7387\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ nvidia-smi<br \/>\nSun Oct 15 17:08:11 2023<br \/>\n+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br \/>\n| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.0     |<br \/>\n|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br \/>\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |<br \/>\n| Fan  Temp  Perf  Pwr:Usage\/Cap|         Memory-Usage | GPU-Util  Compute M. |<br \/>\n|                               |                      |               MIG M. |<br \/>\n|===============================+======================+======================|<br \/>\n|   0  NVIDIA GeForce &#8230;  On   | 00000000:01:00.0  On |                  N\/A |<br \/>\n|  0%   57C    P8    25W \/ 350W |    473MiB \/ 24576MiB |     19%      Default |<br \/>\n|                               |                      |                  N\/A |<br \/>\n+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<\/p>\n<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br \/>\n| Processes:                                                                  |<br \/>\n|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |<br \/>\n|        ID   ID                                                   Usage      |<br \/>\n|=============================================================================|<br \/>\n|    0   N\/A  N\/A      1140      G   \/usr\/lib\/xorg\/Xorg                 35MiB |<br \/>\n|    0   N\/A  N\/A      1880      G   \/usr\/lib\/xorg\/Xorg                252MiB |<br \/>\n|    0   N\/A  N\/A      2004      G   \/usr\/bin\/gnome-shell               26MiB |<br \/>\n|    0   N\/A  N\/A      2458      G   &#8230;veSuggestionsOnlyOnDemand       48MiB |<br \/>\n|    0   N\/A  N\/A     54442      G   \/usr\/bin\/anydesk                   20MiB |<br \/>\n|    0   N\/A  N\/A    624141      G   &#8230;937440421976888396,262144       10MiB |<br \/>\n|    0   N\/A  N\/A    728274      G   &#8230;\/ros\/noetic\/lib\/rviz\/rviz        8MiB |<br \/>\n|    0   N\/A  N\/A   2923469      G   &#8230;RendererForSitePerProcess       45MiB |<br \/>\n+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<\/p>\n<p>\u4ee5\u4e0a\u306e\u624b\u9806\u306f &#8220;\u3010Ubuntu + NVIDIA\u3011Ubuntu \u306b NVIDIA \u30c9\u30e9\u30a4\u30d0\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&#8221;\u3001&#8221;ubuntu\u306bCUDA\u3001nvidia\u30c9\u30e9\u30a4\u30d0\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u30e1\u30e2&#8221; \u3092\u53c2\u8003\u306b\u3057\u307e\u3057\u305f\u3002\n<\/ul>\n<h2>\u5b89\u88c5 NVIDIA \u5bb9\u5668\u5de5\u5177\u5305<\/p>\n<ul class=\"post-ul\">\nNVIDIA \u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3092\u642d\u8f09\u3057\u3066\u3044\u308b\u5834\u5408<br \/>\n\u307e\u305a\u5fc5\u8981\u306a\u30ea\u30dd\u30b8\u30c8\u30ea\u3068 GPG \u9375\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ distribution=$(. \/etc\/os-release;echo $ID$VERSION_ID) \\<br \/>\n      &#038;&#038; curl -fsSL https:\/\/nvidia.github.io\/libnvidia-container\/gpgkey | sudo gpg &#8211;dearmor -o \/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg \\<br \/>\n      &#038;&#038; curl -s -L https:\/\/nvidia.github.io\/libnvidia-container\/$distribution\/libnvidia-container.list | \\<br \/>\n            sed &#8216;s#deb https:\/\/#deb [signed-by=\/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg] https:\/\/#g&#8217; | \\<br \/>\n            sudo tee \/etc\/apt\/sources.list.d\/nvidia-container-toolkit.list<\/p>\n<p>NVIDIA Container Toolkit \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ sudo apt update &#038;&#038; sudo apt install -y nvidia-container-toolkit<\/p>\n<p>\u6b21\u306b Docker \u30c7\u30fc\u30e2\u30f3\u304c NVIDIA Container Runtime \u3092\u8a8d\u8b58\u3059\u308b\u3088\u3046\u8a2d\u5b9a\u3092\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ sudo nvidia-ctk runtime configure &#8211;runtime=docker<\/p>\n<p>Docker \u30c7\u30fc\u30e2\u30f3\u3092\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ sudo systemctl restart docker<\/p>\n<p>\u6700\u5f8c\u306b NVIDIA Container Toolkit \u304c\u6b63\u3057\u304f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n$ docker run &#8211;rm &#8211;gpus all nvcr.io\/nvidia\/k8s\/cuda-sample:nbody nbody -gpu -benchmark -numbodies=640000<\/p>\n<p>\u4ee5\u4e0a\u306e\u624b\u9806\u306f &#8220;Ubuntu\u306bDocker\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066GPU\u3092\u8a8d\u8b58\u3055\u305b\u308b &#8211; NVIDIA Container Toolkit\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&#8221;\u3001&#8221;Installing the NVIDIA Container Toolkit&#8221; \u3092\u53c2\u8003\u306b\u3057\u307e\u3057\u305f\u3002\n<\/ul>\n<h1>X \u670d\u52a1\u5668\u7684\u8bbf\u95ee\u8bbe\u7f6e<\/p>\n<p>\u6211\u5011\u5c07\u8a2d\u5b9a\u5141\u8a31\u9023\u63a5\u5230 X \u4f3a\u670d\u5668\uff0c\u9019\u6a23\u4e00\u4f86\uff0cX Window System (X11) \u7684\u5716\u5f62\u4f7f\u7528\u8005\u4ecb\u9762\u5c31\u53ef\u4ee5\u904b\u4f5c\uff0c\u4e26\u4e14\u80fd\u5920\u4f7f\u7528\u5373\u5c07\u5efa\u7acb\u7684 Docker \u5bb9\u5668\u3002\u8acb\u6253\u958b\u7d42\u7aef\u6a5f\u4e26\u57f7\u884c\u4ee5\u4e0b\u6307\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ xhost local:user\r\n<\/code><\/pre>\n<p>\u8bf7\u5728\u4ece\u4ee5\u4e0b\u83b7\u53d6\u7684Docker\u955c\u50cf\u4e2d\u521b\u5efa\u548c\u4f7f\u7528\u5bb9\u5668\u4e4b\u524d\uff0c\u6bcf\u6b21\u90fd\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\u3002<\/p>\n<h1>\u83b7\u53d6Docker\u955c\u50cf<\/p>\n<p>\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\u3002<\/p>\n<ul class=\"post-ul\">\nDocker \u30d5\u30a1\u30a4\u30eb\u306e\u8907\u88fd<br \/>\nDocker \u30d5\u30a1\u30a4\u30eb\u306e\u30d3\u30eb\u30c9\n<\/ul>\n<h2>\u590d\u5236Docker\u6587\u4ef6  Docker<\/p>\n<p>\u8bf7\u5c06GitHub\u5b58\u50a8\u5e93\u590d\u5236\u5230\u4efb\u610f\u76ee\u5f55\u4e2d\uff0c\u4f8b\u5982\u590d\u5236\u5230\u4e3b\u76ee\u5f55(~\/)\u4e2d\u3002\u8bf7\u6253\u5f00\u7ec8\u7aef\u5e76\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ cd\r\n$ git clone https:\/\/github.com\/turlucode\/ros-docker-gui.git\r\n<\/code><\/pre>\n<h2>\u6784\u5efaDocker\u6587\u4ef6<\/p>\n<p>\u9996\u5148\uff0c\u5207\u63db\u5230\u5b58\u653e Docker \u6587\u4ef6\u7684\u76ee\u9304\u4e2d\u3002\u4f8b\u5982\uff0c\u5207\u63db\u5230(~\/ros-docker-gui)\u3002\u6253\u958b\u7d42\u7aef\u4e26\u57f7\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ cd ~\/ros-docker-gui\r\n<\/code><\/pre>\n<p>\u7136\u540e\u8fdb\u884c\u6784\u5efa\u3002\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002\u4f8b\u5982\uff0c\u5c06\u8981\u4f7f\u7528\u7684 ROS \u7248\u672c\u8bbe\u4e3a<YYYY>\u3002<\/p>\n<ul class=\"post-ul\">\nPC \u306b\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3092\u642d\u8f09\u3057\u3066\u3044\u308b\u5834\u5408<br \/>\n$ make ros_<YYYY><\/p>\n<p>PC \u306b\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3092\u642d\u8f09\u3057\u3066\u304a\u3089\u305a\u5185\u8535 GPU 1 \u3092\u642d\u8f09\u3057\u3066\u3044\u308b\u5834\u5408<br \/>\n$ make cpu_ros_<YYYY><\/p>\n<\/ul>\n<h1>\u786e\u8ba4\u52a8\u4f5c<\/p>\n<p>\u8bf7\u521b\u5efa\u4e00\u4e2a\u5bb9\u5668\u5e76\u767b\u5f55\u3002\u6253\u5f00\u7ec8\u7aef\u5e76\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<ul class=\"post-ul\">\nNVIDIA \u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3092\u642d\u8f09\u3057\u3066\u3044\u308b\u5834\u5408<br \/>\n$ docker run -it &#8211;runtime=nvidia &#8211;privileged &#8211;net=host &#8211;ipc=host -v \/tmp\/.X11-unix:\/tmp\/.X11-unix -e DISPLAY=$DISPLAY -v $HOME\/.Xauthority:\/home\/$(id -un)\/.Xauthority -e XAUTHORITY=\/home\/$(id -un)\/.Xauthority -e ROS_IP=127.0.0.1 turlucode\/ros-<YYYY>:<ZZZZ><\/p>\n<p>\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30dc\u30fc\u30c9\u3092\u642d\u8f09\u3057\u3066\u304a\u3089\u305a\u5185\u8535 GPU 1 \u3092\u642d\u8f09\u3057\u3066\u3044\u308b\u5834\u5408<br \/>\n$ docker run -it &#8211;privileged &#8211;net=host &#8211;ipc=host &#8211;device=\/dev\/dri:\/dev\/dri -v \/tmp\/.X11-unix:\/tmp\/.X11-unix -e DISPLAY=$DISPLAY -v $HOME\/.Xauthority:\/home\/$(id -un)\/.Xauthority -e XAUTHORITY=\/home\/$(id -un)\/.Xauthority -e ROS_IP=127.0.0.1 turlucode\/ros-<YYYY>:cpu<\/p>\n<\/ul>\n<p>\u5982\u679c\u6267\u884c\u4e0a\u8ff0\u547d\u4ee4\uff0c\u5219\u4f1a\u6253\u5f00 X Window System \u7684\u7ec8\u7aef (Terminator 3)\u3002<\/p>\n<p>\u8bf7\u5728Terminator\u4e0a\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u542f\u52a8roscore\u3002<\/p>\n<pre class=\"post-pre\"><code>$ roscore\r\n<\/code><\/pre>\n<p>\u8bf7\u5728Terminator\u4e0a\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u4ee5\u542f\u52a8Rviz\u3002<\/p>\n<pre class=\"post-pre\"><code>$ rviz\r\n<\/code><\/pre>\n<p>\u8bf7\u5728Terminator\u4e0a\u6309Ctrl + C\u6765\u9000\u51faRviz\u3002<\/p>\n<p>\u8bf7\u5728\u7ec8\u7aef\u4e2d\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u6765\u542f\u52a8 Gazebo\u3002<\/p>\n<pre class=\"post-pre\"><code>$ gazebo\r\n<\/code><\/pre>\n<p>\u8bf7\u5728\u7ec8\u6b62\u5668\u4e0a\u6309\u4e0b Ctrl + C \u6765\u7ed3\u675f Gazebo\u3002<\/p>\n<p>\u8bf7\u6700\u540e\u6ce8\u9500\u5e76\u505c\u6b62\u5bb9\u5668\u3002\u8bf7\u5173\u95ed\u7ec8\u7aef\u3002<\/p>\n<h1>\u6700\u540e\u4e00\u53e5<\/p>\n<p>\u5728\u6211\u4eec\u521a\u624d\u4ecb\u7ecd\u7684\u5bb9\u5668\u4e2d\uff0c\u5982\u679c\u9700\u8981\u8fdb\u4e00\u6b65\u7f16\u5199\u4ee3\u7801\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u4f7f\u7528\u5df2\u5b89\u88c5\u4e86VSCode\u7684Docker\u955c\u50cf\uff0c\u6216\u8005\u4f7f\u7528VSCode\u7684\u6269\u5c55\u529f\u80fd\uff08Remote Explorer\uff09\u3002<\/p>\n<h1>\u5f15\u7528\u8d44\u6599<\/p>\n<ul class=\"post-ul\">\nhttps:\/\/github.com\/turlucode\/ros-docker-gui<br \/>\n\u5185\u8535GPU\u3068\u306f\uff1f\u5916\u90e8GPU\u3068\u306e\u9055\u3044\u3084\u4eca\u5f8c\u306e\u52d5\u5411\u306b\u3064\u3044\u3066\u89e3\u8aac\uff01<br \/>\n\u3010Ubuntu + NVIDIA\u3011Ubuntu \u306b NVIDIA \u30c9\u30e9\u30a4\u30d0\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<br \/>\nubuntu\u306bCUDA\u3001nvidia\u30c9\u30e9\u30a4\u30d0\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u30e1\u30e2<br \/>\nInstall Docker Engine on Ubuntu &#8211; Install using the Apt repository<br \/>\nLinux post-installation steps for Docker Engine &#8211; Manage Docker as a non-root user<br \/>\nUbuntu\u306bDocker\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066GPU\u3092\u8a8d\u8b58\u3055\u305b\u308b &#8211; NVIDIA Container Toolkit\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<br \/>\nInstalling the NVIDIA Container Toolkit<br \/>\n\u30bf\u30fc\u30df\u30ca\u30eb\u74b0\u5883\u306e\u69cb\u7bc9: Terminator\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<\/ul>\n<section>\u6839\u636e &#8220;\u5185\u8535GPU\u3068\u306f\uff1f\u5916\u90e8GPU\u3068\u306e\u9055\u3044\u3084\u4eca\u5f8c\u306e\u52d5\u5411\u306b\u3064\u3044\u3066\u89e3\u8aac\uff01&#8221;\uff0c\u5185\u8535GPU\u6307\u7684\u662f\u50cfIntel\u7b49CPU\u5185\u7f6e\u7684\u56fe\u5f62\u5904\u7406\u5668\uff0c\u800c\u5206\u79bbGPU\u5219\u6307\u7684\u662f\u50cf\u56fe\u5f62\u5361\u7b49\u5916\u90e8\u8bbe\u5907\u3002<\/p>\n<p>\u6839\u636e&#8221;\u30bf\u30fc\u30df\u30ca\u30eb\u74b0\u5883\u306e\u69cb\u7bc9: Terminator\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&#8221;\uff0cTerminator (\u7ec8\u7aef\u4eff\u771f\u5668) \u662f\u4e00\u4e2a\u53ef\u4ee5\u66ff\u4ee3\u9ed8\u8ba4\u5b89\u88c5\u7684\u7ec8\u7aef (Gnome Terminal) \u6765\u4f7f\u7528\u7684\u7ec8\u7aef\u7a0b\u5e8f\u3002<\/section>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u4e3a\u4e86\u65b9\u4fbf\u90a3\u4e9b\u60f3\u8981\u5c1d\u8bd5\u521b\u5efa\u5404\u79cd\u4e0d\u540c\u7684ROS\u73af\u5883\u4f46\u53c8\u89c9\u5f97\u73af\u5883\u914d\u7f6e\u9ebb\u70e6\u7684\u4eba\uff0c\u6211\u5c06\u4ecb\u7ecd\u4f7f\u7528Docker\u6765\u6784\u5efaRO [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[227],"class_list":["post-27082","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-227"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u5173\u4e8e\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo\u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728ubuntu\u4e0a\u4f7f\u7528docker\u8fd0\u884crviz\u548cgazebo\u3002-3\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo\" \/>\n<meta property=\"og:description\" content=\"\u5173\u4e8e\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo\u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728ubuntu\u4e0a\u4f7f\u7528docker\u8fd0\u884crviz\u548cgazebo\u3002-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-13T22:18:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-11T16:40:38+00:00\" \/>\n<meta name=\"author\" content=\"\u6e05, \u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u5b87\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/\",\"name\":\"\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-11-13T22:18:21+00:00\",\"dateModified\":\"2025-08-11T16:40:38+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\"},\"description\":\"\u5173\u4e8e\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo\u7684\u6280\u672f\u6587\u7ae0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\",\"name\":\"\u6e05, \u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo - Blog - Silicon Cloud","description":"\u5173\u4e8e\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo\u7684\u6280\u672f\u6587\u7ae0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728ubuntu\u4e0a\u4f7f\u7528docker\u8fd0\u884crviz\u548cgazebo\u3002-3\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo","og_description":"\u5173\u4e8e\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo\u7684\u6280\u672f\u6587\u7ae0","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728ubuntu\u4e0a\u4f7f\u7528docker\u8fd0\u884crviz\u548cgazebo\u3002-3\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-11-13T22:18:21+00:00","article_modified_time":"2025-08-11T16:40:38+00:00","author":"\u6e05, \u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u5b87","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/","name":"\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-11-13T22:18:21+00:00","dateModified":"2025-08-11T16:40:38+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e"},"description":"\u5173\u4e8e\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo\u7684\u6280\u672f\u6587\u7ae0","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728Ubuntu\u4e0a\u4f7f\u7528Docker\u8fd0\u884cRviz\u548cGazebo"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e","name":"\u6e05, \u5b87","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","caption":"\u6e05, \u5b87"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8ubuntu%e4%b8%8a%e4%bd%bf%e7%94%a8docker%e8%bf%90%e8%a1%8crviz%e5%92%8cgazebo%e3%80%82-3\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=27082"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27082\/revisions"}],"predecessor-version":[{"id":111068,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27082\/revisions\/111068"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=27082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=27082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=27082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}