සුඩෝ නොමැතිව ඩොකර් භාවිතා කරන්නේ කෙසේද?


833

ඩොකර්ගේ ප්‍රලේඛන පිටුවල, සියලු උදාහරණ විධාන මේ ආකාරයෙන් තොරව පෙන්වනු ලැබේ sudo:

docker ps

උබුන්ටු මත ද්විමය ලෙස හැඳින්වේ docker.io. එයද sudo නොමැතිව ක්‍රියා නොකරයි:

sudo docker.io ps

සෑම ඩෝකර් විධානයක්ම සූඩෝ සමඟ උපසර්ග කිරීමට අවශ්‍ය නොවන පරිදි මම ඩෝකර් වින්‍යාස කරන්නේ කෙසේද?


2
Ufw සක්‍රීය කිරීමට අමතක නොකරන්න;)
Rinzwind

2
උබුන්ටු 14.04 මත පවතී '' docker 'ද්විමය ද.
anatoly techtonik

atanatolytechtonik මම උබුන්ටු 14.04 LTS හි 'docker.io' වෙනුවට 'docker' භාවිතා කළෙමි
Nabin

2
නිර්දේශිත ස්ථාපනය පෙරනිමියෙන් උබුන්ටු ගබඩාවේ ඩොකර් නොවේ ; ඒ වෙනුවට, මෙහි උපදෙස් ( docs.docker.com/engine/installation/linux/ubuntulinux ), ඩොකර් රෙපෝ භාවිතා කිරීම නිර්දේශ කරන්න. දී පවතින සියලු docker දේවල් ඉවත් කරන්න, සහ ඉන්නේ අයිතිය මූලාශ්රය සිට එක් වෙමින් ඔබ තහවුරු: apt-cache policy docker-engine(apt url එක dockerproject.org විය යුතුය)
මයිකල්

3
අන්වර්ථයක් ගැන :? ඒ ආකාරයෙන්, ඔබ තවමත් මුරපද ආරක්ෂාවක් සහිතව සූඩෝ භාවිතා කරයි. alias docker = "sudo docker"
ඇන්ඩ්‍රෙජ් පන්ජ්කොව්

Answers:


1220

ශුභාරංචිය: නව ඩොකර් (19.03 අනුවාදය (දැනට පර්යේෂණාත්මක)) මඟින් root පරිශීලකයෙකු භාවිතා කර ඇතිවිය හැකි ගැටළු නොසලකා හරිමින් ධාවනය කළ හැකිය. ඉහළ අවසරයන්, මූල සහ ඔබට අවශ්‍ය නොවන විට ඔබේ යන්ත්‍රය විවෘත කළ හැකි කිසිවක් සමඟ තවදුරටත් අවුල් කිරීම අවශ්‍ය නොවේ.

[DockerCon 2019] වෙතින් වීඩියෝව Rootless Docker Deemon Rootless මාදිලිය සමඟ

මූල රහිත ඩෝකර් මාදිලියට කේවට් කිහිපයක්

ඩෝකර් ඉංජිනේරුවන් පවසන්නේ මූල රහිත මාදිලිය ඩෝකර් එන්ජින් අංගයන්ගේ සම්පූර්ණ කට්ටලය වෙනුවට ආදේශකයක් ලෙස සැලකිය නොහැකි බවයි. මූල රහිත මාදිලියේ සමහර සීමාවන්ට ඇතුළත් වන්නේ:

  • cgroups සම්පත් පාලනයන්, ආරක්ෂක ආරක්ෂණ පැතිකඩ, පිරික්සුම් ස්ථානය / ප්‍රතිස්ථාපනය, උඩිස් ජාල ආදිය මූල රහිත ප්‍රකාරයේදී ක්‍රියා නොකරයි.
  • බහාලුම් වලින් වරාය නිරාවරණය කිරීම සඳහා දැනට අතින් සොකට් උපකාරක ක්‍රියාවලියක් අවශ්‍ය වේ.
  • මූල රහිත මාදිලියේ ගොනු පද්ධති සඳහා සහය දක්වන්නේ උබුන්ටු මත පදනම් වූ ඩිස්ට්‍රෝස් පමණි.
  • Rootless මාදිලිය දැනට ලබා දී ඇත්තේ ඔබ පුරුදු තරම් ස්ථාවර නොවිය හැකි රාත්‍රී ගොඩනැඟිලි සඳහා පමණි.

ඩොකර් 19.3 අනුව මෙය යල්පැන ඇති (අවශ්‍යතාවයට වඩා භයානක ය):

මෙම docker අත්පොත මෙම ඒ ගැන කියන්න ඇත:

මූල නොවන ප්‍රවේශය ලබා දීම

ඩෝකර් ඩීමන් සෑම විටම මූල පරිශීලකයා ලෙස ක්‍රියාත්මක වන අතර ඩෝකර් අනුවාදය 0.5.2 සිට, ඩොකර් ඩීමන් TCP පෝට් එකක් වෙනුවට යුනික්ස් සොකට්ටුවකට බැඳේ. පෙරනිමියෙන් යුනික්ස් සොකට් පරිශීලක මූලයට අයත් වන අතර පෙරනිමියෙන් ඔබට එය සූඩෝ සමඟ ප්‍රවේශ විය හැකිය.

0.5.3 වෙළුමේ සිට, ඔබ (හෝ ඔබේ ඩෝකර් ස්ථාපකය) ඩොකර් නමින් යුනික්ස් කණ්ඩායමක් නිර්මාණය කර එයට පරිශීලකයින් එකතු කරන්නේ නම්, ඩෝකන් ඩීමන් විසින් ඩීමන් ආරම්භ වන විට යුනික්ස් සොකට්ටුවේ හිමිකම ඩොකර් කණ්ඩායම විසින් කියවීමට / ලිවීමට හැකි කරයි. . ඩෝකර් ඩීමන් සෑම විටම මූල පරිශීලකයා ලෙස ක්‍රියාත්මක විය යුතුය, නමුත් ඔබ ඩොකර් සේවාදායකය ඩොකර් කණ්ඩායමේ පරිශීලකයෙකු ලෙස ධාවනය කරන්නේ නම් එවිට ඔබට සියලුම සේවාදායක විධාන වලට සුඩෝ එකතු කිරීමට අවශ්‍ය නොවේ. 0.9.0 වන විට, ඩොකර් හැර වෙනත් කණ්ඩායමකට -G විකල්පය සමඟ යුනික්ස් සොකට් තිබිය යුතු බව ඔබට නියම කළ හැකිය.

අවවාදයයි: ඩොකර් කණ්ඩායම (හෝ -G සමඟ නිශ්චිතව දක්වා ඇති කණ්ඩායම) මූලයට සමාන ය; බලන්න Docker විබුද්ධයා ප්රහාරක මතුපිට විස්තර හා මෙම පුවත්පත් කලාවේදියෝ අපි root නොවන පරිශීලකයන් CentOS දී Docker, ෆෙඩෝරා, හෝ RHEL ක්රියාත්මක ඉඩ දෙන්න එපා ඇයි (ස්තුති michael-n).

මෑතකදී GitHub හි පර්යේෂණාත්මක මූල රහිත මාදිලිය මුදා හැරීමේදී , ඉංජිනේරුවන් සඳහන් කරන්නේ rootless මාදිලිය පරිශීලක නාම නාම (7), mount_namespaces (7), network_namespaces (7) භාවිතා කරමින් ඩොකර්ඩ් අසමසම පරිශීලකයෙකු ලෙස ධාවනය කිරීමට ඉඩ දෙන බවයි.

පරිශීලකයින්ට dockerd වෙනුවට dockerd-rootless.sh ධාවනය කළ යුතුය.

$ dockerd-rootless.sh --experimental

Rootless මාදිලිය පර්යේෂණාත්මක බැවින් පරිශීලකයින්ට සෑම විටම dokerd-rootless.sh ධාවනය කළ යුතුය.


කියවීමට වැදගත්: ලිනක්ස් සඳහා පශ්චාත් ස්ථාපන පියවර (එය ඩෝකර් ඩීමන් ප්‍රහාරක මතුපිට විස්තර සමඟ සම්බන්ධ වේ ).

මූල නොවන පරිශීලකයෙකු ලෙස ඩොකර් කළමනාකරණය කරන්න

ඩොකර් ඩීමන් TCP වරායක් වෙනුවට යුනික්ස් සොකට්ටුවකට බැඳේ. පෙරනිමියෙන් යුනික්ස් සොකට් පරිශීලක මූලයට අයත් වන අතර අනෙක් පරිශීලකයින්ට එය ප්‍රවේශ කළ හැක්කේ සුඩෝ භාවිතයෙන් පමණි. ඩොකර් ඩීමන් සෑම විටම මූල පරිශීලකයා ලෙස ක්‍රියාත්මක වේ.

ඔබ ඩොකර් විධානය භාවිතා කරන විට සුඩෝ භාවිතා කිරීමට අකමැති නම්, ඩොකර් නමින් යුනික්ස් කණ්ඩායමක් සාදා එයට පරිශීලකයින් එක් කරන්න. ඩෝකර් ඩීමන් ආරම්භ වන විට, එය යුනික්ස් සොකට්ටුවේ හිමිකම ඩොකර් කණ්ඩායම විසින් කියවීමට / ලිවීමට සලස්වයි.


  • ඩොකර් කණ්ඩායම දැනටමත් නොපවතී නම් එය එක් කරන්න:

    sudo groupadd docker
    
  • සම්බන්ධිත පරිශීලකයා "$ USER" ඩොකර් කණ්ඩායමට එක් කරන්න. ඔබගේ වර්තමාන පරිශීලකයා භාවිතා කිරීමට ඔබට අවශ්‍ය නැතිනම් ඔබ කැමති පරිශීලකයාට ගැලපෙන පරිදි පරිශීලක නාමය වෙනස් කරන්න:

    sudo gpasswd -a $USER docker
    
  • newgrp dockerකණ්ඩායම් වලට වෙනස්කම් සක්‍රිය කිරීම සඳහා එක්කෝ කරන්න හෝ ඉවත් වන්න / ඇතුල් වන්න.

  • ඔයාට පාවිච්චි කරන්න පුළුවන්

    docker run hello-world
    

    ඔබට සූඩෝ නොමැතිව ඩොකර් ධාවනය කළ හැකිදැයි පරීක්ෂා කිරීමට.


4
ඔව්, නමුත් සෑම වරප්‍රසාදිත ක්‍රියාවලියක්ම සූරාකෑමේ විභවය විවෘත කරයි. එම මට්ටමේ වරප්‍රසාද සැබවින්ම නියම කිරීම සඳහා ඩොකර් මෙහෙයුම් පද්ධතියට ගැඹුරින් සම්බන්ධ කර තිබේද?
මතෙ

3
newgrp dockerමට වැඩ කළේ නැහැ, මට ඉවත් වීමට සිදු විය.
ලොල්මාස් - ඇන්ඩ්‍රි මිහයිලොව්

47
මෙය පරිශීලකයාට අසීමිත, මුරපද නොවන ආරක්ෂිත මූල ප්‍රවේශයක් ලබා දෙන බව පෙන්වා දීම වටී . අවදානම
ක්‍රිස් ෆොස්ටර්

6
ඔබ භාවිතා කරන්නේ නම් docker login, .dockerඔබගේ නිවසේ ෆෝල්ඩරයේ සාදන ලද ෆෝල්ඩරය අයත් බව ඔබට පෙනී යනු rootඇත. මේ අනුව ඩොකර් විධාන ක්‍රියාත්මක කිරීමේදී ඔබට මෙම අනතුරු ඇඟවීම හමුවනු ඇත : WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied. මම මගේ පරිශීලකයාගේ .dockerෆෝල්ඩරය සුඩෝ නොමැතිව ප්‍රවේශ විය හැකි ලෙස සකසා ඇත : sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker. එය chgrpඋදව්වක් ලෙස පෙනුනේ නැත, එබැවින් බොහෝ විට මම නිර්දේශ කළ යුත්තේ කපන ලද පියවර පමණි.
බර්ච්ලැබ්ස්

3
Om ටොමී, මට ඩොකර් සේවාදායකය නැවත ආරම්භ කිරීමට සිදු විය. මගේ ඩොකර් කණ්ඩායම නොපවතින බැවින් /var/run/docker.sock ගොනුවේ ගොනු හිමිකම root: root විය. මම ඩොකර් සේවාදායකය නැවත ආරම්භ කරන විට එය root විය: ඩොකර්. එවිට එය මට වැඩ කළා.
ග්‍රෙග්

243

නොමැතිව ඩොකර් විධානය ක්‍රියාත්මක කිරීම සඳහා sudo, ඔබ ඔබේ පරිශීලකයා (මූල වරප්‍රසාද ඇති) ඩොකර් කණ්ඩායමට එක් කළ යුතුය. මෙම ධාවනය සඳහා පහත විධානය:

 sudo usermod -aG docker $USER

දැන්, පරිශීලක ලොග්අවුට් කර නැවත පුරනය වන්න. නිසි ස්ථාපන ක්‍රියාවලියක් සමඟ මෙම විසඳුම මෙහි හොඳින් විස්තර කෙරේ .


21
පරිශීලකයා කණ්ඩායමට එකතු කිරීමෙන් පසුව, මෙම විධානය ක්‍රියාත්මක කරන්න: sg group_name -c "bash"
madjardi

4
මෙම වෙනස සිදුවීම සඳහා ඔබට මෙහෙයුම් පද්ධතිය නැවත ආරම්භ කිරීම අවශ්‍ය නොවේ! එය ධාවනය වන සියලුම බහාලුම් වලට බෝම්බ දමනු ඇත! ඔබ දැන් එකතු කළ පරිශීලකයාට ලොග් අවුට් කරන්න.
ටොමී

5
එම විධානය වෙනත් පිළිතුරක “sudo gpasswd -a $ {USER} docker” ට වෙනස් වන්නේ කෙසේද?
Ash ෂ්ලි එයිට්කන්

12
කරුණාකර ඔබට ඩොක්ස් විසින් දෙන ලද අනතුරු ඇඟවීම එක් කළ හැකිද: "ඩොකර් කණ්ඩායම [...] මූලයට සමානයි", එබැවින් මිනිසුන්ට ඒ ගැන සිතීමට අවස්ථාවක් තිබේ
මර්මෙල්

3
අවුරුදු 2 ක් පැරණි පිළිගත් පිළිතුරට සමාන බලපෑමක් ඇති නමුත් ආරක්ෂක අවදානම් පිළිබඳ අනතුරු ඇඟවීම් නොමැතිව
ගර්ට් වැන් ඩෙන් බර්ග්

77

කණ්ඩායම් වලට පරිශීලකයෙකු එකතු කිරීම මඟින් dockerඩොකර් ධාවනය කිරීමට අවසර ලබා දෙන යාන්ත්‍රණය වන්නේ ඩොකර් සොකට්ටුවට ප්‍රවේශය ලබා ගැනීමයි /var/run/docker.sock. අඩංගු ගොනු පද්ධතිය /var/runACL සක්‍රීය කර ඇත්නම් සවිකර තිබේ නම් , මෙය ACL හරහා ද සාක්ෂාත් කරගත හැකිය.

sudo setfacl -m user:$USER:rw /var/run/docker.sock

මම මෙය ඇතුළත් කරන්නේ සම්පූර්ණත්වය සඳහා පමණි.

පොදුවේ ගත් කල, කණ්ඩායම් මත පදනම් වූ හොඳ විකල්පයක් ඇති විට ACL වලින් වැළකී සිටීමට මම නිර්දේශ කරමි: පද්ධතියක වරප්‍රසාද කණ්ඩායම් සාමාජිකත්වය දෙස බැලීමෙන් පමණක් තේරුම් ගත හැකි නම් වඩා හොඳය. පද්ධති වරප්‍රසාද අවබෝධ කර ගැනීම සඳහා ACL ඇතුළත් කිරීම් සඳහා ගොනු පද්ධතිය පරිලෝකනය කිරීම ආරක්ෂක විගණනය සඳහා අමතර බරකි.

අවවාදයයි 1 : මෙය කණ්ඩායමට rootඑකතු usernameකිරීම හා සමාන වේ docker. ඔබට තවමත් rootධාරක ගොනු පද්ධතියට ප්‍රවේශය ඇති ආකාරයකින් බහාලුමක් ආරම්භ කළ හැකිය .

අවවාදයයි 2 : කණ්ඩායම් පාදක ආරක්ෂාවට වඩා ආරක්ෂක විගණනය සඳහා ACLs සැලකිය යුතු ලෙස දුෂ්කර ය. අවම වශයෙන් විගණනයට අදාළ පරිසරයන් තුළ කණ්ඩායම් භාවිතා කළ හැකි විට හැකි නම් ACL වලින් වළකින්න.


5
එය ක්‍රියාත්මක වූයේ 16.04
එඩිබ්

මට අවශ්‍ය වූයේ මෙයයි, වෙනත් පිළිතුරු, පරිශීලකයාට root අවසර තිබිය යුතුය. ස්තූතියි බොහෝ දේ!
මිරිනාල් සෞරබ්

1
වඩා හොඳ ක්‍රමයක් ඉමෝ. කණ්ඩායම් ඩොකර් මූලයට සමාන වන අතර එය සැමවිටම අනතුරේ සලකුණකි. මෙම එක් ගොනුවක හිමිකාරිත්වය ලබා ගැනීමේ කිසිදු අවාසියක් මා දකින්නේ නැත.
Xerus

7
Er සෙරස් මම නිවැරදිව තේරුම් ගත්තා නම්, මෙම සොකට්ටුවට ලිවිය හැකි ඕනෑම කෙනෙකුට මූලයට සමාන වරප්‍රසාද ලබා ගත හැකිය . එබැවින් ACL හරහා යමෙකුට මෙම සොකට්ටුවට ප්‍රවේශය ලබා දීම එම පුද්ගලයා ඩොකර් කණ්ඩායමට එක් කිරීම හා සමාන ආරක්ෂණ බලපෑමක් ඇති කරයි.
Paŭlo Ebermann

1
මා වෙනුවෙන් ලිනක්ස් මින්ට් 19 හි වැඩ කළා. ස්තූතියි.
අපි බෝර්ග්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.