{"id":358,"date":"2023-04-12T09:29:43","date_gmt":"2023-04-12T00:29:43","guid":{"rendered":"https:\/\/ahnbk.dev\/?p=358"},"modified":"2023-04-12T09:31:29","modified_gmt":"2023-04-12T00:31:29","slug":"docker-%eb%82%b4%eb%b6%80%ec%97%90%ec%84%9c-gui-gl-%ed%94%84%eb%a1%9c%ea%b7%b8%eb%9e%a8-%ec%8b%a4%ed%96%89","status":"publish","type":"post","link":"https:\/\/ahnbk.dev\/?p=358","title":{"rendered":"docker \ub0b4\ubd80\uc5d0\uc11c GUI, GL \ud504\ub85c\uadf8\ub7a8 \uc2e4\ud589"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">docker \ub0b4\ubd80\uc5d0\uc11c GUI \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud574\uc57c \ud560 \uacbd\uc6b0, \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uba3c\uc800 host \uba38\uc2e0\uc5d0\uc11c docker\uac00 x\uc708\ub3c4\uc6b0\uc5d0 \uc811\uadfc \uac00\ub2a5\ud558\ub3c4\ub85d \uad8c\ud55c\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ xhost +local:docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc73c\ub85c docker \ucee8\ud14c\uc774\ub108\ub97c \uc2e4\ud589\ud560 \ub54c, \ub2e4\uc74c\uacfc \uac19\uc774 \uc635\uc158\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ docker run --rm -it --runtime nvidia -e DISPLAY -e NVIDIA_DRIVER_CAPABILITIES=all -e NVIDIA_VISIBLE_DEVICES=all -v \/tmp\/.X11-unix:\/tmp\/.X11-unix ubuntu  <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc635\uc158\uc744 \uc124\uba85\ud558\uba74<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-e DISPLAY<\/code> : GUI\uac00 \ucd9c\ub825\ub420 DISPLAY \ud658\uacbd\ubcc0\uc218 \uc804\ub2ec<\/li>\n\n\n\n<li><code>-e NVIDIA_DRIVER_CAPABILITIES=all<\/code> : NVIDIA \ub4dc\ub77c\uc774\ubc84 \uad00\ub828 \ub77c\uc774\ube0c\ub7ec\ub9ac, \ubc14\uc774\ub108\ub9ac\ub97c Docker \ub0b4\ubd80\uc5d0 \ub9c8\uc6b4\ud2b8 \ud558\uae30<\/li>\n\n\n\n<li><code>-e NVIDIA_VISIBLE _DEVICES=all<\/code> : Docker \ub0b4\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ud560 GPU \uc124\uc815<\/li>\n\n\n\n<li><code>-v \/tmp\/.X11-unix:\/tmp\/.X11-unix<\/code> : X\uc708\ub3c4\uc6b0\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c \uc18c\ucf13 \uc5f0\uacb0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uc640 \uac19\uc774 \uc635\uc158\uc744 \uc124\uc815\ud558\uace0 \uc2e4\ud589 \ud6c4, \ub0b4\ubd80\uc5d0\uc11c GUI \ud504\ub85c\uadf8\ub7a8\uc744 \uc124\uce58\ud558\uace0 \uc2e4\ud589\ud558\uba74 \ub428.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ docker run --rm -it -v \/tmp\/.X11-unix:\/tmp\/.X11-unix -e DISPLAY --runtime nvidia -e NVIDIA_DRIVER_CAPABILITIES=all -e NVIDIA_VISIBLE_DEVICES=all ubuntu\nroot@92913cdca2a1:\/# glxgears\nRunning synchronized to the vertical refresh.  The framerate should be\napproximately the same as the monitor refresh rate.<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ahnbk.dev\/wp-content\/uploads\/2023\/04\/image.png\" alt=\"\" class=\"wp-image-359\" width=\"277\" height=\"265\" srcset=\"https:\/\/ahnbk.dev\/wp-content\/uploads\/2023\/04\/image.png 940w, https:\/\/ahnbk.dev\/wp-content\/uploads\/2023\/04\/image-300x287.png 300w, https:\/\/ahnbk.dev\/wp-content\/uploads\/2023\/04\/image-768x735.png 768w\" sizes=\"auto, (max-width: 277px) 100vw, 277px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\uc678 gtk \uad00\ub828 \ud504\ub85c\uadf8\ub7a8\ub3c4 \uc815\uc0c1\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0bd\uc9c8 \uae30\ub85d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1) \uc704 -e NVIDIA_DRIVER_CAPABILITIES=all -e NVIDIA_VISIBLE_DEVICES=all \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0, \ub2e4\uc74c\uacfc \uac19\uc740 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uace0 \uc2e4\ud589\uc774 \ub418\uc9c0 \uc54a\uc74c.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">X Error of failed request:  BadShmSeg (invalid shared segment parameter)\n  Major opcode of failed request:  130 (MIT-SHM)\n  Minor opcode of failed request:  3 (X_ShmPutImage)\n  Segment id in failed request:  0x2e00005\n  Serial number of failed request:  54\n  Current serial number in output stream:  55<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2) Host \uba38\uc2e0\uc5d0\uc11c \uad8c\ud55c \uc124\uc815\uc744 \ud574\uc8fc\uc9c0 \uc54a\uc73c\uba74, \uc2e4\ud589 \ubd88\uac00<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Authorization required, but no authorization protocol specified\ncannot open display: :1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uace0\ub9c1\ud06c: <a href=\"https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/user-guide.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/user-guide.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>docker \ub0b4\ubd80\uc5d0\uc11c GUI \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud574\uc57c \ud560 \uacbd\uc6b0, \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud569\ub2c8\ub2e4. \uba3c\uc800 host \uba38\uc2e0\uc5d0\uc11c docker\uac00 x\uc708\ub3c4\uc6b0\uc5d0 \uc811\uadfc \uac00\ub2a5\ud558\ub3c4\ub85d \uad8c\ud55c\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc73c\ub85c docker \ucee8\ud14c\uc774\ub108\ub97c \uc2e4\ud589\ud560 \ub54c, \ub2e4\uc74c\uacfc \uac19\uc774 \uc635\uc158\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \uc635\uc158\uc744 \uc124\uba85\ud558\uba74 \uc704\uc640 \uac19\uc774 \uc635\uc158\uc744 \uc124\uc815\ud558\uace0 \uc2e4\ud589 \ud6c4, \ub0b4\ubd80\uc5d0\uc11c GUI \ud504\ub85c\uadf8\ub7a8\uc744 \uc124\uce58\ud558\uace0 \uc2e4\ud589\ud558\uba74 \ub428. \uadf8\uc678 gtk \uad00\ub828 \ud504\ub85c\uadf8\ub7a8\ub3c4 \uc815\uc0c1\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0bd\uc9c8 \uae30\ub85d 1) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[74,26,73,28,72],"class_list":["post-358","post","type-post","status-publish","format-standard","hentry","category-docker","tag-badshmseg","tag-docker","tag-gui","tag-nvidia-docker","tag-opengl"],"_links":{"self":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=358"}],"version-history":[{"count":2,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/358\/revisions"}],"predecessor-version":[{"id":361,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/358\/revisions\/361"}],"wp:attachment":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}