SSD Nodes Learn 🎉 VPS kutoka $5.50/mwezi
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-13

Jinsi ya kusakinisha Docker kwenye Rocky au AlmaLinux

Sakinisha Docker Engine kwa kutumia dnf kwenye Rocky Linux na AlmaLinux. Jifunze kurekebisha migogoro ya Podman na SELinux ambayo mwongozo wa Ubuntu hauelezi kwa usahihi.

Kusakinisha Docker kwenye Rocky Linux na AlmaLinux

Ili kusakinisha Docker kwenye Rocky Linux au AlmaLinux, unaongeza hazina (repository) ya dnf ya Docker, unasakinisha injini hiyo pamoja na compose plugin, kisha unawasha huduma hiyo. Hatua hiyo inahusisha amri nne, na inafanana kwenye mifumo yote miwili kwa sababu zote ni matoleo yaliyojengwa upya kutoka Red Hat Enterprise Linux (RHEL) na zinashiriki muundo sawa wa vifurushi. CentOS Stream hufanya kazi kwa njia ileile.

Usakinishaji ni mfupi, kwa hivyo sehemu kubwa ya mwongozo huu inashughulikia yale ambayo Enterprise Linux (EL) inafanya tofauti na Ubuntu. Podman inaweza kuwa tayari inamiliki amri ya docker kwenye image yako. SELinux huzuia faili zilizowekwa kwa bind-mount hadi ziwe na lebo sahihi. Firewalld haichuji port zilizochapishwa na Docker, kwa hivyo port ya container inaweza kuwa wazi kwa Internet wakati firewall-cmd ikiripoti kuwa hakuna kitu kilicho wazi.

Usitumie script ya urahisi ya Docker kutoka get.docker.com. Nyaraka za Docker zenyewe zinasema haipendekezwi kwa matumizi ya uzalishaji (production). Inabadilisha usanidi wa hazina yako bila kuuliza, na haiwezi kuendeshwa tena kwa usalama ili kufanya upgrade. Kuongeza hazina hiyo kwa mkono kunamaanisha kuwa dnf upgrade inachukulia Docker kama kifurushi kingine chochote kwenye seva yako.

Je, podman inajibu amri ya docker?

Rocky Linux na AlmaLinux huja na podman katika hazina zao za kawaida, na picha nyingi za VPS huiweka kwa ajili yako. Picha nyingine huenda mbali zaidi na kuweka podman-docker, ambayo huweka hati ya shell kwenye /usr/bin/docker inayoiita podman. Kila amri ya docker unayoandika huendesha podman badala yake, kwa hivyo mwongozo ulioandikwa kwa ajili ya Docker huanza kutoa matokeo usiyotarajia.

Ishara ya kwanza ni bango. Hati ya /usr/bin/docker hukagua faili ya /etc/containers/nodocker, na wakati faili hiyo haipo, huchapisha mstari mmoja kabla ya kuendesha chochote:

Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.

Mtu anaweza kuwa ameunda faili hiyo ili kunyamazisha bango hilo, kwa hivyo usitegemee hilo pekee. Uliza hifadhidata ya kifurushi ni kifurushi kipi kinachomiliki binary hiyo:

command -v docker
rpm -qf "$(command -v docker)"

Jibu linaloanza na podman-docker linamaanisha podman inajibu. Jibu linaloanza na docker-ce-cli linamaanisha Docker halisi. Ikiwa rpm -qf inaripoti kuwa hakuna kifurushi kinachomiliki faili hiyo, mtu aliisakinisha kwa mkono na unapaswa kusoma hati hiyo kabla ya kuiamini.

Podman huendesha picha zilezile za OCI na ni chaguo linalofaa. Ikiwa unaitaka, simama hapa. Ikiwa unataka Docker Engine, ondoa vifurushi vinavyokinzana kwanza. Hii ndiyo orodha ambayo Docker imeiandika kwa ajili ya RHEL:

sudo dnf remove docker docker-client docker-client-latest docker-common \
  docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc

Soma kile ambacho dnf inapanga kukiondoa kabla ya kuthibitisha. Kwenye picha mpya ya VPS, orodha hiyo ni fupi. Kwenye seva ambayo mtu amekwisha itumia, kuondoa podman kunaweza kuondoa cockpit-podman au zana nyingine inayotegemea kifurushi hicho.

Kuweka podman pamoja na Docker kunawezekana kimsingi: ondoa podman-docker pekee, ili jina la docker liwe huru, na runc, ambayo kifurushi cha containerd.io huchukua nafasi yake. Nyaraka za Docker huchukulia podman kama kifurushi kinachokinzana, kwa hivyo mpangilio huu hauauniwi na Docker. Ikiwa usakinishaji bado unaripoti mgongano, tumia orodha kamili ya uondoaji hapo juu.

Ongeza hazina ya Docker kwa kutumia dnf config-manager

Docker huchapisha RPM kwa ajili ya Enterprise Linux kwenye download.docker.com. Faili ya hazina hiyo inaelekeza kwenye mti wa CentOS, ambao ndio unaotumiwa na Rocky Linux na AlmaLinux kutatua utegemezi. Kufikia Agosti 2026, Docker inaelekeza hazina hii kwa ajili ya CentOS Stream 9 na CentOS Stream 10.

sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Toleo la 5 la dnf limeondoa hoja ya --add-repo, kwa hivyo amri hiyo ya pili inashindwa kufanya kazi kwenye matoleo mapya zaidi. Angalia toleo ulilo nalo, kisha chagua umbo linalolingana:

dnf --version

Ikiwa inachapisha toleo la 5.x, tumia umbo la subcommand badala yake:

sudo dnf config-manager addrepo --from-repofile=https://download.docker.com/linux/centos/docker-ce.repo

Zote mbili huandika faili ileile kwenye /etc/yum.repos.d/docker-ce.repo. Umbo lisilo sahihi hushindwa kwa kutoa kosa la hoja isiyojulikana badala ya kufanya kitu kimyakimya, kwa hivyo hutalikosa.

Faili hiyo ya hazina huweka baseurl kwenye njia inayojumuisha $releasever, na dnf hupanua kigezo hicho kutoka kwenye kifurushi chako cha toleo (release package). Rocky Linux na AlmaLinux huweka kigezo hicho kuwa namba ya toleo kuu (major version), kwa hivyo 9 kwenye EL 9 na 10 kwenye EL 10, ndiyo sababu hazina ya CentOS inatatua njia kwa usahihi kwenye mashine ya Rocky. Thibitisha upanuzi huo kabla ya kusakinisha:

sudo dnf repoinfo docker-ce-stable

Soma mstari wa Repo-baseurl. Unapaswa kuishia na /9/x86_64/stable au /10/x86_64/stable. Ikiwa toleo lako linaweka $releasever kwenye toleo dogo (point version) kama vile 9.6, dnf itaripoti Status code: 404 kwa URL hiyo wakati inapopakua metadata. Rekebisha kwa kuhariri /etc/yum.repos.d/docker-ce.repo na kubadilisha $releasever na namba kuu pekee.

Sakinisha injini na plugin ya compose

sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Kuna vifurushi vitano, na kila kimoja kina kazi yake. docker-ce ndiyo daemon, dockerd. docker-ce-cli ndiyo amri ya docker unayoandika. containerd.io ndiyo runtime ya container inayoendeshwa na daemon. docker-buildx-plugin hujenga images. docker-compose-plugin hutoa docker compose kama subcommand.

Vifurushi hivi havijasakinisha binary ya docker-compose yenye kistari. Hiyo ilikuwa Compose v1, ambayo ilifikia mwisho wa maisha yake mwezi Julai 2023. Kila kitu kinachotumia docker-compose chenye kistari kinahitaji kusasishwa kuwa docker compose chenye nafasi.

Usakinishaji wa kwanza husimama ili kuingiza ufunguo wa kusaini wa Docker na kukuonyesha fingerprint yake. Ufunguo huo unatoka gpgkey=https://download.docker.com/linux/centos/gpg kwenye faili ya repo uliyoongeza hivi punde, kwa hivyo linganisha fingerprint inayochapishwa na dnf na URL hiyo kabla ya kuikubali.

Kuna hitilafu moja inayotokea mara nyingi kiasi cha kupewa jina. Ikiwa dnf itaripoti kuwa containerd.io inahitaji container-selinux na hakuna kinachotoa hitaji hilo, basi AppStream repository yako imezimwa. Tekeleza dnf repolist na uhakikishe kuwa appstream imeorodheshwa, kwa sababu hapo ndipo container-selinux inaposafirishwa kwenye EL 9 na EL 10.

Anzisha Docker na uthibitishe inafanya kazi

sudo systemctl enable --now docker
sudo systemctl status docker --no-pager
sudo docker run --rm hello-world

Vifurushi vya RPM vya Docker huacha daemon ikiwa imesimama na kulemazwa baada ya usakinishaji. Hii ndiyo sababu hatua hii inaonekana kwenye ukurasa wa Docker wa CentOS na si kwenye ukurasa wa Ubuntu, ambapo faili ya deb huanzisha huduma kwa ajili yako. Ukiruka enable, Docker itafanya kazi hadi reboot inayofuata, kisha itazimika na kubeba kila container iliyo nayo.

systemctl status inapaswa kuonyesha Active: active (running). Container ya hello-world inapaswa kuchapisha This message shows that your installation appears to be working correctly. na kutoka. Ikiwa badala yake inachapisha hitilafu ya ruhusa kwenye /var/run/docker.sock, umesahau sudo, ambayo sehemu ya kundi la docker hapa chini inarekebisha.

Kagua plugin ya compose kando, kwa sababu ni kifurushi tofauti na kinaweza kukosekana wakati engine iko sawa:

docker compose version

Jibu zuri linaonekana kama Docker Compose version v2.x.x. Kurudisha huduma zako baada ya reboot ni swali tofauti na kuwezesha daemon, na sera za kuanzisha upya huamua kama huduma za Compose zinarudi wakati wa boot.

Kwa nini bind mount inatoa hitilafu ya permission denied?

Rocky Linux na AlmaLinux huendesha SELinux (Security-Enhanced Linux) katika hali ya enforcing kwa chaguomsingi. Thibitisha hili kwa getenforce, ambayo huchapisha Enforcing.

Docker containers huendeshwa chini ya aina ya SELinux ya container_t, na aina hiyo inaweza tu kusoma na kuandika faili zilizopewa lebo ya container_file_t. Saraka uliyounda kwenye host hubeba lebo yoyote ile inayotokana na njia ya mzazi wake (parent path), ambayo si container_file_t. Container hukataliwa hata kama mmiliki, kundi, na mode vinaonekana kuwa sahihi kwa upande wa host. Izae hitilafu hiyo kwa amri tatu:

sudo mkdir -p /srv/site
echo hello | sudo tee /srv/site/index.html
sudo docker run --rm -v /srv/site:/usr/share/nginx/html:ro nginx:alpine cat /usr/share/nginx/html/index.html

Container huchapisha:

cat: can't open '/usr/share/nginx/html/index.html': Permission denied

Amri mbili hukuonyesha sababu. ls -ldZ /srv/site huchapisha lebo, ambayo kwa njia iliyo chini ya /srv ni system_u:object_r:var_t:s0, si container_file_t. Kisha sudo ausearch -m avc -ts recent huchapisha rekodi ya audit ya kernel, inayojumuisha avc: denied { read }, uwanja wa scontext= unaotaja container_t, na uwanja wa tcontext= unaotaja lebo uliyoiangalia kwenye saraka hiyo. Kutolingana kati ya nyanja hizo mbili ndiyo sababu nzima.

Suluhisho ni kiambishi (suffix) kwenye hoja ya volume. Docker hubadilisha lebo ya njia hiyo kwa ajili yako:

sudo docker run --rm -v /srv/site:/usr/share/nginx/html:ro,z nginx:alpine cat /usr/share/nginx/html/index.html

:z katika herufi ndogo hubadilisha lebo ya maudhui kama shared, ili containers kadhaa ziweze kutumia saraka moja. :Z katika herufi kubwa hubadilisha lebo yake kama private na isiyoshirikiwa, iliyofungwa kwenye container moja, na container ya pili inayosoma njia hiyo hiyo hukataliwa. Tumia :z kwa kitu chochote ambacho sidecar au container ya backup pia inakigusa. Tumia :Z kwa saraka ya database ambayo container moja inaimiliki.

Nyaraka za Docker zina onyo linalostahili kurudiwa, kwa sababu ubadilishaji wa lebo ni wa recursive. Kufanya bind-mount ya saraka ya mfumo kama /home au /usr na :Z "hufanya mashine yako ya host kutofanya kazi na unaweza kuhitaji kubadilisha lebo za faili za host kwa mkono". Elekeza viambishi hivi kwenye saraka ulizounda kwa ajili ya container, kamwe usielekeze kwenye njia ya mfumo.

Katika Compose, kiambishi huwekwa kwenye string hiyo hiyo:

services:
  web:
    image: nginx:alpine
    volumes:
      - /srv/site:/usr/share/nginx/html:ro,z

Mipaka miwili ni rahisi kukwama nayo. Bendera ya --mount haiwezi kuweka lebo ya SELinux hata kidogo, kwa hivyo tumia -v unapohitaji moja. Named volumes hazihitaji kiambishi, kwa sababu Docker huweka lebo kwenye saraka inazounda chini ya /var/lib/docker/volumes yenyewe.

Usizime SELinux. Tumia sudo setenforce 0 kama jaribio la dakika moja tu: ikiwa container itafanya kazi, tatizo ni lebo na :z ndilo jibu. Iirudishe na sudo setenforce 1 mara moja. Kwenye Enterprise Linux, permission denied kwenye bind mount ina sababu mbili tofauti zinazoonekana sawa kutoka ndani ya container. Moja ni lebo ya SELinux. Nyingine ni umiliki wa kawaida wa mtumiaji na kundi wa namba, ambao ndio sababu ya kuwepo kwa vigezo vya PUID na PGID. ls -lnZ hukuonyesha mode, mmiliki wa namba, na lebo katika mstari mmoja, ili uweze kujua ni ipi unayopambana nayo.

Kwa nini port iliyochapishwa inafikika wakati firewalld inaonekana imefungwa?

Firewalld ndiyo firewall chaguo-msingi kwenye Rocky Linux na AlmaLinux. Thibitisha kuwa inaendeshwa kwa kutumia sudo systemctl is-active firewalld. Sasa chapisha port na uangalie ni nini firewalld inachokiona kuwa kiko wazi:

sudo docker run -d --name web -p 8080:80 nginx:alpine
sudo firewall-cmd --list-ports

firewall-cmd huchapisha mstari mtupu. Kutoka mashine nyingine, curl -I http://YOUR_SERVER_IP:8080/ inarudisha HTTP/1.1 200 OK. Port iko wazi kwa Internet na firewall yako haionyeshi chochote.

Sababu ni njia inayopitiwa na pakiti. Sheria za zone za firewalld huchuja trafiki inayoelekezwa kwa seva yenyewe. Port iliyochapishwa haielekezwi kwa seva: Docker huweka sheria ya destination NAT (network address translation) inayobadilisha destination kuwa anwani ya container kabla pakiti haijafika kwenye njia ya input ya seva, kwa hivyo kernel husambaza (forward) pakiti badala ya kuifikisha ndani. Docker kisha huweka interface zake za bridge kwenye zone ya firewalld inayoitwa docker ambayo target yake ni ACCEPT, na huongeza sera ya usambazaji inayoitwa docker-forwarding inayoruhusu usambazaji kutoka zone yoyote kwenda kwenye zone ya docker. Sheria zako za zone hazioni pakiti hiyo kamwe.

Suluhisho safi kabisa halihitaji sheria ya firewall. Funga upande wa seva wa uchapishaji kwenye loopback na uweke reverse proxy mbele yake:

sudo docker rm -f web
sudo docker run -d --name web -p 127.0.0.1:8080:80 nginx:alpine
curl -I http://127.0.0.1:8080/

curl ya ndani inarudisha HTTP/1.1 200 OK na ombi lilelile kutoka mashine nyingine haliunganishi tena. Kitu chochote kisicho na anwani ya seva katika argument ya -p huchapishwa kwenye kila interface, kwa hivyo chukulia -p 8080:80 tupu kama uamuzi wa kufichua huduma hiyo hadharani.

Unapohitaji huduma ifikike kutoka anwani fulani na si nyingine, Docker hukutengea chain. DOCKER-USER huchakatwa kabla ya sheria za kukubali (accept) za Docker, kwa hivyo sheria unayoiweka hapo hudumu hata baada ya Docker kuanza upya na kuandika upya chain zake:

sudo iptables -I DOCKER-USER -i enp1s0 ! -s 203.0.113.10 -j DROP
sudo iptables -S DOCKER-USER

Chukua jina la interface kutoka ip route show default badala ya kudhani eth0, kwa sababu image za sasa za EL hutumia majina kama enp1s0 au ens3. Kwenye Rocky na AlmaLinux amri ya iptables ni safu ya utangamano juu ya nftables, na chain za Docker zinaonekana kupitia hiyo. Sheria zilizoongezwa kwa njia hii hupotea baada ya reboot isipokuwa kama utazihifadhi, kwa hivyo ziandike kwenye systemd unit mara tu unapoziridhia.

Docker Engine 28.0, iliyotolewa mwaka 2025, ilifunga mwanya mwingine: ufikiaji wa moja kwa moja wa routed kwenye port za container ambazo hazikuchapishwa sasa umezuiwa katika chain ya DOCKER. Mabadiliko hayo hayaathiri port zilizochapishwa, kwa hivyo kila kitu hapo juu bado kinatumika kwenye matoleo ya sasa. Tabia moja ya kiutendaji inayofaa kujengwa ni: baada ya kila sudo firewall-cmd --reload, jaribu tena port iliyochapishwa. Ikiwa imeacha kujibu, sudo systemctl restart docker husakinisha upya sheria za Docker.

Wasimamizi wa Ubuntu hukutana na kikwazo hicho hicho kupitia zana tofauti, ambayo ni kwa nini port za Docker zilizochapishwa hupuuza sheria za ufw. Njia ya NAT ndiyo sababu katika visa vyote viwili. Firewall iliyo mbele yake ndiyo pekee inayobadilika.

Ongeza mtumiaji asiye root kwenye kundi la docker

Kuandika sudo kabla ya kila amri ya docker huchosha, na kundi la docker huondoa uhitaji huo:

sudo usermod -aG docker $USER
newgrp docker
docker run --rm hello-world

usermod -aG huhariri /etc/group, lakini shell yako ya sasa tayari ina orodha yake ya makundi, kwa hivyo mabadiliko hayatumiki hadi upate shell mpya. newgrp docker huanzisha shell ikiwa na kundi hilo ili uweze kujaribu mara moja. Vikao vipya vya SSH huchukua mabadiliko hayo vyenyewe.

Kuwa wazi kuhusu kile ambacho kundi hilo hutoa. Uanachama hutoa uwezo wa kuandika kwenye /var/run/docker.sock, na chochote kinachoweza kuwasiliana na socket hiyo kinaweza kuamuru daemon kuanzisha container inayopachika (mount) mfumo wa faili wa seva mwenyeji. Amri moja inaonyesha maana ya hili:

docker run --rm -v /:/host alpine wc -l /host/etc/shadow

Hiyo inasoma faili ambayo root pekee anaweza kuisoma, kutoka kwa akaunti isiyo na haki za sudo. Nyaraka za Docker zenyewe za baada ya usakinishaji zinasema jambo lilelile: kundi la docker hutoa marupurupu sawa na root. Ongeza akaunti kwenye kundi hilo ikiwa tu ungeipa akaunti hiyo sudo. Ikiwa unaweka akaunti kwenye seva mpya, amua hili pamoja na sehemu nyingine ya usanidi wa mtumiaji mwenye haki ndogo kwenye VPS badala ya kufanya hivyo baadaye.

Docker pia inatoa hali ya rootless inayoiendesha daemon kama mtumiaji asiye na marupurupu. Hii ni njia tofauti ya usakinishaji na inabadilisha jinsi viendeshi vya hifadhi (storage drivers) na bandari (ports) zilizo chini ya 1024 zinavyofanya kazi, kwa hivyo ipange kama mradi wa pekee badala ya kuichukulia kama flag unayoongeza baadaye.

Hatua zinazofuata

Sasa una injini, plugin ya compose, huduma inayoweza kuanza upya baada ya reboot, na tabia tatu mahususi za EL zilizoelezwa hapo juu. Hatua inayofuata ni compose.yaml kwa kila huduma, na muundo wa faili ya Compose inaelezea umbizo la faili na amri zinazoiendesha. Ikiwa hii ni mara yako ya kwanza kutumia seva ya container, kuendesha Docker kwenye VPS inashughulikia masuala ya ukubwa wa rasilimali, hifadhi, na usafi wa image ambayo mwongozo huu haukuyagusia.

FAQ

Je, hazina ya Docker ya CentOS inafanya kazi kwenye Rocky Linux na AlmaLinux?

Ndiyo. Ongeza https://download.docker.com/linux/centos/docker-ce.repo kwa kutumia dnf config-manager. Faili hiyo ina baseurl yenye $releasever, na Rocky Linux pamoja na AlmaLinux huipanua hiyo kuwa namba ya toleo kuu (major version). Kwa hivyo, mfumo wa EL 9 hurejelea mti wa CentOS 9 na mfumo wa EL 10 hurejelea mti wa CentOS 10. Thibitisha upanuzi huo kwa sudo dnf repoinfo docker-ce-stable na usome mstari wa Repo-baseurl. Hitilafu ya Status code: 404 wakati dnf inapopakua metadata inamaanisha kuwa kigezo hicho kilipanuka kuelekea toleo dogo (point release), na kuhariri /etc/yum.repos.d/docker-ce.repo ili kutumia namba kuu pekee kutatatua tatizo hilo.

Je, Docker na podman zinaweza kusakinishwa kwenye seva moja?

Nyaraka za Docker huorodhesha podman na runc kama vifurushi vinavyokinzana na hukuagiza uondoe vyote viwili kabla ya kusakinisha Docker Engine. Mgongano halisi ni kifurushi cha podman-docker, ambacho kinamiliki /usr/bin/docker na kubadilisha kila amri ya docker kuwa amri ya podman. Tekeleza rpm -qf "$(command -v docker)" ili kuona ni kifurushi kipi kinamiliki njia hiyo. Ikiwa matokeo yanaanza na podman-docker, basi podman ndiyo inayojibu. Kuweka injini zote mbili si usanidi unaoungwa mkono na Docker, kwa hivyo kwenye seva muhimu, chagua moja.

Kwa nini kontena langu linapata "permission denied" kwenye bind mount?

SELinux inatekelezwa kwa chaguo-msingi kwenye Rocky Linux na AlmaLinux. Kontena huendeshwa kama aina ya container_t na linaweza kugusa tu faili zilizowekewa lebo ya container_file_t. Kwa hivyo, saraka uliyounda ina lebo isiyo sahihi na ufikiaji unakataliwa bila kujali mmiliki au mode yake. Thibitisha hili kwa ls -ldZ kwenye njia ya host na sudo ausearch -m avc -ts recent, ambayo huchapisha avc: denied ikionyesha miktadha miwili isiyolingana. Ongeza :z kwenye hoja ya volume kwa maudhui yanayoshirikiwa kati ya kontena, au :Z kwa maudhui ya faragha ya kontena moja. Usielekeze kamwe :Z kwenye /home au /usr, kwa sababu uwekaji lebo upya ni wa kurudia (recursive) na utaharibu mfumo wa host.

Je, ninahitaji kufungua port kwenye firewalld ili kuchapisha port ya kontena?

Hapana, na hilo ndilo tatizo. Sheria ya NAT ya Docker hubadilisha anwani ya lengo kabla ya pakiti kufika kwenye njia ya kuingia ya host, kwa hivyo sheria za zone za firewalld hazichunguzi pakiti hiyo. Docker pia huweka madaraja yake kwenye zone ya firewalld inayoitwa docker yenye lengo la ACCEPT. Kontena lililoanzishwa kwa -p 8080:80 linaweza kufikiwa kutoka kwenye Internet wakati sudo firewall-cmd --list-ports haichapishi chochote. Chapisha kwenye anwani maalum kwa kutumia -p 127.0.0.1:8080:80 wakati ni host pekee inayopaswa kufikia huduma hiyo, au ingiza sheria za kuchuja kwenye mnyororo wa DOCKER-USER, ambao Docker huuchakata kabla ya sheria zake za kukubali (accept rules).

Je, ni salama kuongeza mtumiaji wangu kwenye kundi la docker?

Hilo linatoa ufikiaji wa root. Mwanachama wa kundi la docker anaweza kuandika kwenye /var/run/docker.sock, na docker run --rm -v /:/host alpine wc -l /host/etc/shadow kisha husoma faili ya root pekee kutoka kwa akaunti isiyo na haki za sudo. Nyaraka za baada ya usakinishaji za Docker zinathibitisha usawa huo. Ongeza akaunti unazoziamini tayari kwa sudo, na endelea kutumia sudo docker kwa akaunti za pamoja au za huduma. Rootless mode ndiyo njia mbadala unapohitaji kontena chini ya mtumiaji asiye na haki za juu, na ni njia tofauti ya usakinishaji badala ya kuwa mpangilio tu.