Puncte:2

Rulați dockerd ca fundal pe WSL Ubuntu

drapel us

Am instalat Docker pe WSL Ubuntu 20.04 distr. Ca să funcționeze am nevoie de:

sudo dockerd

Funcționează, dar îmi blochează fila terminalului. Pentru a lucra cu containere, trebuie să deschid a doua filă. Am încercat să folosesc sudo dockerd & - se pare că rulează dockerd în fundal, dar când schimb un director, se oprește.

introduceți descrierea imaginii aici

Cum pot rula dockerd în fundal și pot schimba directoare fără să mă opresc?

muru avatar
drapel us
De ce să nu folosiți [Docker Desktop cu backend WSL](https://docs.docker.com/desktop/windows/wsl/)?
Roman Marusyk avatar
drapel us
@muru pentru că Docker pentru Desktop își schimbă licența și nu va mai fi gratuit. Încerc să găsesc alte moduri: https://jason-umiker.medium.com/replacing-docker-desktop-with-wsl2-and-or-rancher-desktop-on-windows-5e036f9dc3a4
muru avatar
drapel us
Va fi în continuare gratuit (ca și în bere) pentru uz personal.
Roman Marusyk avatar
drapel us
@muru da stiu, dar nu il voi folosi pentru personal
Puncte:2
drapel in

Singurul mod în care am văzut oameni făcând acest lucru este rulând Docker într-o VM (care nu pare a fi o opțiune pe care o luați în considerare) sau rulând un script care este executat la pornirea WSL.

Iată cum puteți face ca Docker să ruleze atunci când WSL este pornit:

  1. Editează-ți sudoeri fișier pentru a permite contului dvs. de utilizator să pornească Docker fără să vi se solicite o parolă:
    sudo visudo 
    
    Adăugați această linie:
    rmarusyk ALL=(ALL) NOPASSWD: /usr/bin/dockerd
    
    Notă: Asigurați-vă că vă schimbați rmarusyk la contul de utilizator în care ați dori să ruleze Docker, dacă nu este același nume ca în captura de ecran.
  2. Editează-ți ~/.bashrc fișier pentru a verifica dacă Docker rulează și, dacă nu este, porniți-l:
    # Porniți Docker (dacă nu rulează deja)
    RUNNING=`ps aux | grep dockerd | grep -v grep`
    dacă [ -z „$RUNNING” ]; atunci
        sudo dockerd > /dev/null 2>&1 &
        neagă
    fi
    
    Notă: Acest lucru poate fi adăugat aproape oriunde, dar este în general mai „curat” să îl aveți la sfârșitul fișierului, astfel încât orice ar putea fi necesar dinainte să fie configurat/încărcat/etc.
  3. (Opțional) Dacă doriți să rulați comenzi Docker fără a fi nevoie să le prefixați cu sudo, puteți adăuga contul dvs. de utilizator la docher grup:
    sudo usermod -a -G docker $USER
    
  4. Testați acest lucru prin închiderea terminalului, pornirea din nou și verificarea stării Docker:
    docker ps 
    
    Notă: Simțiți-vă liber să utilizați orice comandă Docker.

Acest lucru ar trebui să facă ceea ce aveți nevoie

Roman Marusyk avatar
drapel us
Mulțumesc foarte mult. Funcționează!
Puncte:2
drapel vn

Modul standard de a rula demonul Docker Engine (fără Docker Desktop) sub WSL Ubuntu este pur și simplu:

sudo service docker start

Aceasta se ocupă de demonizarea acestuia împreună cu multe alte sarcini. Puteți vedea scenariul complet examinând /etc/init.d/docker. Rulați acest lucru în loc să încercați să replicați manual procesul de pornire.

Dacă doriți să pornească automat, există mai multe opțiuni:

  • Ați văzut deja celălalt răspuns pentru a vă modifica scripturile de pornire. Personal, nu sunt un mare fan al acestei metode. În primul rând, îmi place să păstrez scripturile mele de pornire cât mai slabe posibil pentru performanță optimă. În al doilea rând, modificările de acest fel tind să se „acumuleze” în timp, ceea ce face ca depanarea shell-ului să fie mai dificilă în viitor. Acestea fiind spuse, nu este o opțiune oribilă pentru WSL, cel puțin pe Windows 10.

    Cu toate acestea, dacă chiar vrei să mergi pe acest traseu, există o cale mult mai ușoară decât celălalt răspuns. Pur și simplu adăugați următoarea linie la dvs ~/.bash_profile (deoarece se pare că folosești Bash):

    wsl.exe -u root -e sh -c „starea docker serviciului > /dev/null || pornire docker serviciului”
    

    Asta e tot. Nu trebuie să faceți modificări la dvs sudoeri de cand wsl.exe -u root execută sesiunea ca utilizator root fără a avea nevoie de o parolă.

    Dar cu siguranță folosește-ți ~/.bash_profile pentru asta, nu ~/.bashrc. Primul se executa doar pt Autentificare shell-uri, dar cel mai târziu este executat pentru toate shell-urile interactive, adăugând o suprasarcină suplimentară.

  • Windows 11 face acest lucru și mai ușor (dacă puteți face upgrade) cu o configurație specială pentru serviciile pe care doriți să le rulați când pornește instanța WSL. Doar sudo vi /etc/wsl.conf cu urmatorul continut:

    [boot]
    command="service docker start"
    

    Aceasta se va executa o singură dată, când Ubuntu este pornit. Dacă instanța este oprită cu wsl --terminate Ubuntu sau wsl --oprire, va rula din nou data viitoare când porniți Ubuntu.

    Aceste comenzi rulează și ca root, fără a fi necesară parola.

  • Dacă doriți să porniți Docker Engine ori de câte ori vă conectați la Windows, creați o „sarcină programată” în Windows care rulează la Logon și indică wsl.exe cu argumentele fiind -u root -e sh -c „starea serviciului docker || service docker start”

Roman Marusyk avatar
drapel us
Este cea mai bună soluție. Mulțumesc. Îmi pare rău că nu am putut verifica devreme

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.