- 1 1. Utangulizi
- 2 2. Mahitaji ya Awali na Maandalizi
- 3 3. Installing Docker
- 4 4. Ruhusa za Mtumiaji na Kuendesha Docker Bila sudo
- 5 5. Uthibitishaji wa Kuanzisha na Uendeshaji
- 6 6. Kusakinisha na Kutumia Docker Compose
- 6.1 6-1. Kuhakiki Usakinishaji wa Docker Compose V2
- 6.2 6-2. Faida za Docker Compose
- 6.3 6-3. Muundo wa Msingi wa Faili la Usanidi la Compose
- 6.4 6-4. Mfano: Usanidi wa Kontena Nyingi (Wavuti + Hifadhidata)
- 6.5 6-5. Amri za Docker Compose Zinazotumika Mara kwa Mara
- 6.6 6-6. Matumizi Yanayopendekezwa ya Compose katika Maendeleo
- 7 7. Masuala ya Usalama na Uendeshaji
- 7.1 7-1. Kundi la docker Lina Haki za “Root” Kawaida
- 7.2 ● Vidokezo Muhimu vya Kuzijua
- 7.3 7-2. Kuangalia Docker Isiyo na Root (Chaguo la Juu)
- 7.4 7-3. Kusafisha Picha na Kontena Zisizotumika
- 7.5 7-4. Epuka Kutumia Tag ya “latest” katika Uzalishaji
- 7.6 7-5. Tumia Picha za Msingi Rasmi katika Dockerfiles
- 7.7 7-6. Kuwa Makini na Ufafanuzi wa Mtandao na Bandari
- 7.8 7-7. Usimamizi wa Logi Wakati wa Makosa
- 8 8. Masuala ya Kawaida na Utatuzi wa Tatizo
1. Utangulizi
Wakati wa kuweka mazingira ya maendeleo kwenye Ubuntu, hali ambapo unafikiri “tukamilishe tu Docker kwa sasa” zimekuwa za kawaida zaidi. Programu za wavuti, usindikaji wa batch, hifadhidata za majaribio, middleware ya majaribio… Ikiwa utaweka hizi kwa mkono kila wakati, muda mwingi na juhudi nyingi zitatumika tu kwa ajili ya kuanzisha mazingira.
Hapa ndipo teknolojia ya uhalisia wa kontena Docker inakuwa na manufaa makubwa. Kwa Docker, unaweza kusimamia si tu programu yenyewe bali pia maktaba zote zinazohitajika na usanidi pamoja kama “picha.” Mara Docker itakapowekwa kwenye Ubuntu, unaweza kwa urahisi:
- Kuzindua mazingira mapya ya maendeleo ndani ya dakika chache
- Kuhakikisha washiriki wote wa timu wanaweza kurudia tabia katika mazingira yale yale
- Kuunda upya mazingira yanayofanana na uzalishaji kwenye mashine yako mwenyewe kwa urahisi
Manufaa haya yanaweza kufurahiwa kwa jitihada ndogo.
Kwa upande mwingine, kwa wale wanaotumia Docker kwa mara ya kwanza, kuna vizingiti vingi vya kawaida:
- Kutokujua ni taratibu gani za usakinishaji ambazo ni sahihi
- Kutokuelewa tofauti kati ya hazina ya chaguo-msingi ya Ubuntu na hazina rasmi ya Docker
- Kukutana na makosa ya ruhusa kutokana na mkanganyiko kuhusu lini kutumia
sudo
Unapojaribu kutafuta “ubuntu install docker,” utapata makala nyingi zinazoorodhesha mfuatano mrefu wa amri, lakini mara nyingi hazielezi kwa nini hatua hizo ni muhimu au ni nini kinachoashiria usakinishaji kamili.
1-1. Lengo la Makala Hii
Makala hii imeandaliwa kwa wasomaji wanaotaka kusakinisha Docker kwenye Ubuntu, na inashughulikia mambo yafuatayo muhimu:
- Utaratibu unaotumika sana kwa sasa wa kusakinisha Docker kwenye Ubuntu
- Njia rahisi zaidi ya usakinishaji kwa kutumia hazina rasmi
- Jinsi ya kuendesha amri ya
dockerbilasudo - Uthibitishaji baada ya usakinishaji na amri za msingi muhimu
- Utangulizi wa zana zinazotumika sana kama Docker Compose
Badala ya kuorodhesha amri tu, mwongozo huu unaelezea kwa nini kila hatua inahitajika, ikikusaidia kudumisha mazingira yako kwa urahisi zaidi katika siku zijazo.
1-2. Wasomaji Lengwa na Mahitaji ya Awali
Makala hii imeandaliwa kwa wasomaji ambao:
- Wanaelewa shughuli za msingi za Ubuntu (kufungua terminal, kutumia amri ya
apt, n.k.) - Ni watengenezaji au wahandisi wanaotaka kujaribu Docker kwa mara ya kwanza
- Wanapanga kuhamisha mazingira ya majaribio yaliyopo kwenda kwenye kontena
Ujuzi wa hali ya juu wa usimamizi wa Linux hauhitajiki. Mradi tu uko na urahisi wa kuandika amri kwenye terminal, mwongozo huu utatosha.
1-3. Muundo wa Makala na Jinsi ya Kuusoma
Makala haya yanafuata mpangilio ufuatao:
- Kukagua mahitaji ya awali
- Njia za usakinishaji (hazina rasmi / kulingana na script)
- Mipangilio ya ruhusa na uthibitishaji
- Kusakinisha Docker Compose
- Utatuzi wa matatizo na hatua zinazofuata
Unaweza kusoma makala kutoka mwanzo hadi mwisho, au ikiwa Docker tayari imewekwa, unaweza kuzingatia tu sehemu za “Ruhusa” au “Compose”.
2. Mahitaji ya Awali na Maandalizi
Kusakinisha Docker yenyewe ni rahisi kiasi, lakini kulingana na toleo lako la Ubuntu au mazingira yaliyopo, kuna mambo kadhaa yanayostahili kukaguliwa mapema. Sehemu hii inahitimisha mahitaji ya awali na maandalizi yanayohitajika kwa usakinishaji laini.
2-1. Matoleo ya Ubuntu Yanayoungwa mkono
Docker inafanya kazi kwenye matoleo mengi ya Ubuntu, lakini matoleo yafuatayo ya LTS ndiyo yanayotumika zaidi:
- Ubuntu 22.04 LTS (Inashauriwa)
- Ubuntu 20.04 LTS
- Ubuntu 24.04 LTS (Ya Hivi Karibuni)
Matoleo ya LTS (Long Term Support) yanatoa uthabiti wa muda mrefu, na hivyo ni mazuri kwa kudumisha mazingira ya maendeleo yanayotegemea Docker.
Matoleo yasiyo ya LTS (kama 23.10) pia yanaweza kutumika, lakini matoleo ya LTS kwa ujumla yanapendekezwa zaidi katika mazingira ya kitaalamu.
2-2. Pakiti za Docker Zilizowekwa Awali
Ubuntu’s default repository includes a package called docker.io. However, this is not the official Docker package provided by Docker Inc., and updates tend to lag behind. Therefore, installing Docker from the official repository is strongly recommended.
First, check and remove any existing Docker-related packages if necessary:
sudo apt remove docker docker.io containerd runc
If the message indicates that nothing is installed, no action is required.
2-3. Updating APT and Installing Required Packages
Before adding Docker’s official repository, update APT and install required tools:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
These tools are required to add Docker’s GPG key and repository securely.
2-4. Verifying Administrator Privileges (sudo)
Docker installation requires sudo privileges. If your account does not have sudo access, switch to an administrator account or request permission.
You can verify sudo access with the following command:
sudo -v
If you are prompted for a password and the command succeeds, you are ready to proceed.
2-5. Checking Network Connectivity
Installing Docker requires access to external repositories, so an active internet connection is mandatory. In corporate or proxy environments, GPG key retrieval may fail due to access restrictions.
In such cases, consult your network administrator regarding proxy settings or allowlist configurations.
2-6. Choosing the Installation Method
There are three main ways to install Docker:
- Install via the official Docker repository (Recommended)
- Use the
get.docker.cominstallation script (Quick and easy) - Manually download and install Docker .deb packages (Special cases)
This article focuses primarily on the official repository method, which is the most common and easiest to maintain.
3. Installing Docker
Now let’s install Docker on Ubuntu. Although multiple installation methods exist, this guide focuses on the official Docker repository method, which is the most reliable and widely used in production environments.
This method allows stable upgrades via apt upgrade, making it ideal for long-term use.
3-1. Adding the Official Docker Repository (Recommended)
First, register the official GPG key provided by Docker and add Docker’s repository to APT.
Once this is configured correctly, you can avoid accidentally installing the outdated docker.io package from Ubuntu’s default repository.
3-1-1. Registering the GPG Key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
/etc/apt/keyrings/is the recommended key storage location for Ubuntu 22.04 and later--dearmorconverts the key into binary format
This step allows APT to trust the official Docker repository.
3-1-2. Adding the Repository
Next, add Docker’s repository to APT’s source list.
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Key points:
$(. /etc/os-release && echo $VERSION_CODENAME)automatically inserts the correct Ubuntu codename (such asjammyorfocal)- Only the stable repository is added
3-1-3. Updating Repository Information
After adding the repository, update the APT index.
sudo apt update
At this point, docker-ce (Docker Engine) should appear as an installable package.
3-2. Installing Docker Engine
Now install the main Docker packages.
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Package roles:
- docker-ce : Kiini cha Docker Engine
- docker-ce-cli : Kiolesura cha amri ya Docker (command‑line interface)
- containerd.io : Mjengine wa msingi wa kontena unaotumika na Docker
- docker-buildx-plugin : Vipengele vya juu vya ujenzi kama ujenzi wa majukwaa mengi
- docker-compose-plugin : Docker Compose V2 (amri ya
docker compose)
Baada ya usakinishaji, daemon ya Docker huanza kiotomatiki.
3-3. Kuhakiki Usakinishaji
Angalia hali ya utekelezaji wa Docker kwa kutumia amri ifuatayo:
sudo systemctl status docker
Ukiona active (running), Docker inaendeshwa kwa usahihi.
Bonyeza q kutoka kwenye mwonekano wa hali.
3-4. Hiari: Usakinishaji wa Skripti kwa Rahisi
Docker pia hutoa skripti ya usakinishaji wa “all‑in‑one”.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Faida:
- Amri chache na usanidi wa haraka
- Inafaa kwa mazingira rahisi au ya muda mfupi
Hasara:
- Udhibiti mgumu wa matoleo
- Mara nyingi haipendekezwi kwa uzalishaji au matumizi ya muda mrefu
Ingawa ni rahisi kwa wanaoanza, makala hii inazingatia kudumu na hivyo inazingatia njia ya hazina rasmi.
3-5. Vidokezo kwa Matoleo ya Hivi Karibuni ya Ubuntu (km., 24.04)
Mara tu baada ya kutolewa kwa toleo kuu la Ubuntu, hazina rasmi ya Docker huenda bado haijaunga mkono toleo jipya kikamilifu.
Katika hali hizo, hakikisha yafuatayo:
- Eneo na muundo wa ufunguo wa GPG vinakidhi viwango vya sasa
VERSION_CODENAMEimeungwa mkono rasmi- Hakuna makosa ya sahihi yanayotokea wakati wa
apt update
Ikiwa usaidizi uchelewa, kutumia kwa muda mfupi skripti ya get.docker.com inaweza kuwa suluhisho la kiutendaji.
4. Ruhusa za Mtumiaji na Kuendesha Docker Bila sudo
Baada ya kusakinisha Docker, unaweza kutaka kuanza kutumia amri ya docker mara moja. Hata hivyo, kwa chaguo-msingi, lazima uanze kila amri na sudo.
Tabia hii imepangwa kwa sababu za usalama, lakini inaweza kuwa kikwazo kwa maendeleo ya kila siku au kujifunza. Ili kutatua hili, unaweza kuongeza mtumiaji wako kwenye kikundi cha docker, ili amri za Docker ziweze kutekelezwa bila sudo.
4-1. Kwa Nini Kuendesha Bila sudo Ni Muhimu
Katika Ubuntu, daemon ya Docker (dockerd) inaendeshwa na ruhusa za root.
Kwa hiyo, kuunda au kuondoa kontena kupitia amri ya docker kawaida inahitaji ufikia wa root.
Kikundi cha docker kipo ili kushughulikia hitaji hili.
- Watumiaji katika kikundi hiki wanaweza kupata ufikiaji wa moja kwa moja wa daemon ya Docker
- Hii inaruhusu amri kama
docker runbilasudo - Mpangilio huu ni karibu muhimu kwa matumizi ya maendeleo
Kumbuka kwamba kikundi cha docker kinatoa ruhusa zinazofanana sana na root, hivyo tahadhari inahitajika katika mazingira yanayoshirikishwa.
(Kwa kompyuta binafsi au WSL2, hii kwa kawaida haina tatizo.)
4-2. Kuongeza Mtumiaji Wako kwenye Kikundi cha docker
Ongeza mtumiaji aliyeingia kwa sasa kwenye kikundi cha docker:
sudo usermod -aG docker $USER
Amri hii inaongeza mtumiaji kwenye kikundi. Chaguo -aG linamaanisha ongeza kwenye kikundi.
4-3. Kutumia Mabadiliko
Mabadiliko ya uanachama wa kikundi yanaanza kutumika baada ya kutoka nje na kuingia tena.
Ili kutekeleza mabadiliko mara moja, unaweza pia kuendesha:
newgrp docker
Hii inafungua kikao kipya cha ghasira (shell) ambacho kina ruhusa za kikundi cha docker.
4-4. Kuhakiki Utekelezaji Bila sudo
Sasa jaribu Docker bila sudo:
docker run hello-world
Matokeo yenye mafanikio:
- Hello from Docker!
- Picha imesakinishwa na ujumbe umeonyeshwa
Kama kuna kosa, angalia yafuatayo:
- Je, umeondoka nje na kuingia tena baada ya kubadilisha uanachama wa kikundi?
- Je,
/usr/bin/dockerinatumiwa? - Je, daemon ya Docker inaendesha (
systemctl status docker)?
4-5. Masuala ya Usalama (Muhimu)
Kikundi cha docker kinatoa ruhusa zenye nguvu ambazo kwa vitendo ni sawa na ufikiaji wa root.
- Kusoma faili zozote
- Kuweka saraka za mwenyeji ndani ya kontena
- Kufanya shughuli za mtandao
- Udhibiti wa kiwango cha mfumo kupitia soketi ya Docker
This is acceptable for personal systems, but user management is critical on shared servers.
Katika hali kama hizi, unaweza kuzingatia Docker isiyo na root, ambayo inajadiliwa katika sehemu za baadaye.
5. Uthibitishaji wa Kuanzisha na Uendeshaji
Mara usakinishaji wa Docker na usanidi wa ruhusa umekamilika, hatua inayofuata ni kuthibitisha kuwa Docker inafanya kazi kwa usahihi.
Sehemu hii inaelezea jinsi ya kuangalia hali ya huduma ya Docker na kuendesha kontena.
5-1. Kuangalia Hali ya Daemon ya Docker
Kwanza, thibitisha kuwa Docker inaendesha kwa usahihi katika usuli.
sudo systemctl status docker
Viashiria muhimu vya hali:
- active (running) → Inaendesha kawaida
- inactive → Haiko inafanya kazi (lazima ianze kwa mkono)
- failed → Hitilafu ya usanidi au utegemezi
Kama hali ni inactive au failed, anza Docker kwa amri ifuatayo:
sudo systemctl start docker
Ili kuhakikisha Docker inaanza kiotomatiki wakati mfumo wa uendeshaji unapoanzisha:
sudo systemctl enable docker
5-2. Kuthibitisha Uendeshaji kwa Kontena ya hello-world
Njia maarufu zaidi ya kuthibitisha usakinishaji wa Docker ni kwa kuendesha picha rasmi ya hello-world.
docker run hello-world
Amri hii hufanya vitendo vifuatavyo:
- Inapakua picha kutoka Docker Hub ikiwa haipo kwenye mashine
- Inaanza kontena kutoka kwenye picha
- Inaonyesha ujumbe wa majaribio na kuondoka
Kama imefaulu, utaona matokeo yanayofanana na yafuatayo:
Hello from Docker!
This message shows that your installation appears to be working correctly.
Kama ujumbe huu unaonekana, Docker imewekwa na inafanya kazi kwa usahihi.
5-3. Kujaribu Amri za Msingi za Docker
Mara uendeshaji wa msingi umethibitishwa, jaribu baadhi ya amri za Docker zinazotumika mara kwa mara.
5-3-1. Orodha ya Picha za Docker
docker images
Hii inaonyesha orodha ya picha zilizopakuliwa kwenye mashine. Ikiwa hello-world inaonekana, kila kitu kinafanya kazi kama inavyotarajiwa.
5-3-2. Kuangalia Kontena Zinazoendesha
docker ps
Amri hii inaorodhesha kontena zinazoendesha kwa sasa.
(The hello-world container exits immediately and will not usually appear.)
Kuonyesha kontena zilizostahili pia:
docker ps -a
5-3-3. Kuendesha Mfano wa Picha Rasmi
Kujaribu seva ya wavuti rahisi ya Nginx:
docker run -d -p 8080:80 nginx
-d→ Endesha katika usuli-p→ Fanya uhusiano kati ya bandari ya mwenyeji 8080 na bandari ya kontena 80
Fungua http://localhost:8080 katika kivinjari chako ili kuona ukurasa wa chaguo-msingi wa Nginx.
5-4. Kusimamisha na Kuondoa Kontena
Unaweza kusimamisha kontena inayotumika kwa kutumia amri ifuatayo:
docker stop <container-id>
Kuondoa kontena:
docker rm <container-id>
Kuondoa picha zisizotumika:
docker rmi <image-id>
Kumbuka kwamba utegemezi unafuata mpangilio kontena → picha → kifungu, hivyo viendelekee kwa uangalifu.
5-5. Sababu za Kawaida za Makosa
● Makosa ya Ruhusa
Got permission denied while trying to connect to the Docker daemon socket
→ Mtumiaji hajajumuishwa kwenye kundi la docker
● Daemon ya Docker Haiko Inafanya Kazi
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
→ Anzisha Docker kwa systemctl start docker
● Masuala ya Mtandao Yanayozuia Upakuaji wa Picha
→ Angalia mipangilio ya proxy, usanidi wa DNS, au vikwazo vya mtandao
● Pakiti ya urithi docker.io Bado Imewekwa
→ Iondoe kabisa na usakinishe upya Docker kutoka kwenye hazina rasmi
6. Kusakinisha na Kutumia Docker Compose
Chombo muhimu kwa kufanya kazi na Docker kwa kiwango kikubwa ni Docker Compose.
Matumizi ya wavuti ya kisasa mara nyingi yanajumuisha vipengele vingi kama vile hifadhidata, caches, wafanyakazi, na seva za wavuti.
Kusimamia haya moja kwa moja kwa amri za docker run haraka huwa haifai.
Docker Compose inakuwezesha kufafanua usanidi wa kontena nyingi katika faili moja na kuzisimamia pamoja, na hivyo kuwa mojawapo ya zana zinazotumika sana katika maendeleo ya ulimwengu halisi.
6-1. Kuhakiki Usakinishaji wa Docker Compose V2
When installing Docker from the official repository, Docker Compose is automatically installed as a plugin.
Verify the installation with the following command:
docker compose version
If installed correctly, you should see output similar to:
Docker Compose version v2.x.x
If you see an error such as docker: 'compose' is not a docker command, install the plugin manually:
sudo apt install docker-compose-plugin
6-2. Faida za Docker Compose
Key advantages of Docker Compose include:
- Usimamizi mmoja wa kontena nyingi (kuanzisha, kusimamisha, kuanzisha upya)
- Usanidi kama msimbo, kuhakikisha mazingira yanayoweza kurudiwa
- Ushiriki rahisi wa usanidi wa programu, API, na hifadhidata
- Kuanzisha mazingira ya maendeleo kwa
docker compose upmoja
This makes Docker Compose nearly indispensable for application development.
6-3. Muundo wa Msingi wa Faili la Usanidi la Compose
Docker Compose uses a file named docker-compose.yml (or compose.yaml) to define services.
As a minimal example, create a simple configuration that launches Nginx.
services:
web:
image: nginx:latest
ports:
- "8080:80"
Run the following command in the directory containing the file:
docker compose up -d
Nginx will start in the background. Access http://localhost:8080 in your browser to confirm.
6-4. Mfano: Usanidi wa Kontena Nyingi (Wavuti + Hifadhidata)
The real power of Compose becomes apparent when managing multiple containers simultaneously.
For example, running a web application together with MySQL can be configured as follows:
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
Explanation:
depends_oninahakikisha hifadhidata inaanza kabla ya programuvolumeshuhifadhi data ya hifadhidata- Huduma nyingi zinashughulikiwa ndani ya faili moja ya YAML
This is a highly practical pattern for development environments.
6-5. Amri za Docker Compose Zinazotumika Mara kwa Mara
These commands are useful to memorize:
| Command | Description |
|---|---|
docker compose up -d | Start containers in the background |
docker compose down | Stop and remove containers and networks |
docker compose build | Build images using Dockerfile |
docker compose ps | List containers managed by Compose |
docker compose logs -f | View logs (optionally per service) |
Using Compose allows you to recreate identical environments repeatedly, making it ideal for team development.
6-6. Matumizi Yanayopendekezwa ya Compose katika Maendeleo
- Usanidi wa mazingira ya ndani kwa amri moja
- Kujaribu katika mazingira yanayofanana na uzalishaji
- Kuanzisha huduma zilizounganishwa kama hifadhidata, caches, na foleni za ujumbe
- Kuhifadhi data kwa volumes
- Kusimamia usanidi kwa vigezo vya mazingira
.env - Kusaidia usanifu tata wa microservice
Once you are comfortable with Docker and Compose, environment setup time is drastically reduced, significantly improving development efficiency.
7. Masuala ya Usalama na Uendeshaji
Docker is an extremely powerful and convenient tool, but “being containerized” does not automatically mean “secure.”
When using Docker regularly on Ubuntu, there are several important security and operational points you should understand.
This section organizes essential knowledge for operating Docker safely and stably, in a way that is easy to understand even for beginners.
7-1. Kundi la docker Lina Haki za “Root” Kawaida
The docker group configured earlier actually grants very strong privileges.
Users belonging to the docker group can operate the host OS via the Docker socket, which is effectively equivalent to root-level access.
● Vidokezo Muhimu vya Kuzijua
- Usiongeze watumiaji wasio na uhusiano kwenye kundi la docker kwenye seva za pamoja
- Elewa matokeo, si tu urahisi wa “hakuna sudo inahitajika”
- Katika mashirika yenye sera za usalama kali, idhini ya msimamizi inaweza kutakiwa
This is rarely an issue on personal Ubuntu machines or development PCs, but careful judgment is required on production servers.
7-2. Kuangalia Docker Isiyo na Root (Chaguo la Juu)
Docker inatoa kipengele kinachoitwa rootless mode, ambacho huruhusu daemon ya Docker kuendesha chini ya akaunti ya mtumiaji wa kawaida badala ya root.
Faida:
- Inapunguza kwa kiasi kikubwa hatari ya ruhusa za OS ya mwenyeji
- Inaruhusu matumizi salama ya Docker katika mazingira yenye mahitaji ya usalama mkali
Hasara:
- Baadhi ya vipengele vya mtandao vimepunguzwa
- Usanidi ni mgumu zaidi kwa wanaoanza
- Tabia inaweza kutofautiana na Docker ya kawaida
Rootless mode si lazima kwa matumizi mengi ya maendeleo, lakini inaweza kuwa chaguo linalofaa katika mazingira ya biashara au yanayolenga uzingatiaji wa kanuni.
7-3. Kusafisha Picha na Kontena Zisizotumika
Kwa muda, Docker inaweza kutumia nafasi kubwa ya diski bila uliyogundua. Kontena, picha, na volumu zisizotumika zinaweza kukusanyika na kupita kwa urahisi 100GB.

● Amri za kuondoa rasilimali zisizotumika
Kuondoa picha zisizotumika
docker image prune
Kuondoa kontena na mitandao pamoja
docker system prune
Usafi mkali (tumia kwa tahadhari)
docker system prune -a
Chaguo -a linaondoa picha zote zisizotumika, hivyo liutumie kwa uangalifu.
7-4. Epuka Kutumia Tag ya “latest” katika Uzalishaji
Ingawa tagi kama nginx:latest ni rahisi wakati wa maendeleo, hazipendekezwi kwa matumizi ya uzalishaji.
Sababu:
- Toleo halisi nyuma ya
latesthalihakikishi - Sasisho zisizotarajiwa zinaweza kusababisha kushindwa kwa wakati wa utekelezaji
- Upotevu wa uwezo wa kurudia husababisha usambazaji usio thabiti
Njia inayopendekezwa: Baini matoleo wazi
Mfano:
image: nginx:1.25
Utoaji wa matoleo wazi ni kanuni ya msingi kwa mazingira ya uzalishaji.
7-5. Tumia Picha za Msingi Rasmi katika Dockerfiles
Unapounda Dockerfiles, fuata miongozo hii:
- Pendekeza picha rasmi (picha za maktaba)
- Epuka picha zinazodhibitiwa na waandishi wasiojulikana au wasioaminika
- Unapotumia picha za OS nyepesi kama Alpine, hakikisha hali ya usaidizi wa hatari
Picha zisizoaminika zinaweza kuwa na programu hasidi. Hata katika mazingira ya maendeleo, epuka pale inapowezekana.
7-6. Kuwa Makini na Ufafanuzi wa Mtandao na Bandari
Wakati kontena zinafichua bandari kwenye OS ya mwenyeji, zinaweza kupatikana kutoka nje ya mfumo.
Tahadhari:
- Epuka ramani zisizo za lazima
-p 80:80 - Kwa matumizi ya ndani, fungua kwa localhost pekee, mfano
-p 127.0.0.1:8080:80 - Changanya na mipangilio ya ukuta wa moto kama UFW
- Kwa uzalishaji, tumia proxy ya kinyume (kama Nginx) kwa usalama bora
Usimamizi wa bandari ni muhimu hasa kwenye VPS au seva za Ubuntu zilizo kwenye wingu.
7-7. Usimamizi wa Logi Wakati wa Makosa
Logi za Docker zinaweza kuangaliwa kwa amri ifuatayo:
docker logs <container-name>
Kiasi kikubwa cha logi kinaweza kutumia nafasi ya diski haraka, hivyo fikiria kusanidi madereva ya logi na mzunguko wa logi.
8. Masuala ya Kawaida na Utatuzi wa Tatizo
Ingawa Docker ni chombo chenye nguvu, makosa yasiyotabirika yanaweza kutokea kwenye Ubuntu kutokana na tofauti za mazingira au makosa ya usanidi. Sehemu hii inahitimisha masuala ya kawaida na suluhisho zake, kutoka kiwango cha mwanzo hadi cha kati.
8-1. Haiwezi Kuunganisha na Daemon ya Docker
● Ujumbe wa kosa
Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
● Sababu na suluhisho
- Daemon ya Docker haifanyi kazi :
sudo systemctl start docker - Mabadiliko ya kikundi cha docker hayajachukuliwa : Toka nje na uingie tena, au tumia
newgrp docker - Tatizo la ruhusa na /var/run/docker.sock : Hakikisha mtumiaji yuko katika kikundi cha docker
8-2. Makosa ya Ruhusa Imekataliwa
● Kosa la kawaida
Got permission denied while trying to connect to the Docker daemon socket
● Suluhisho
Sababu ni karibu kila wakati ukosefu wa usanidi wa kikundi cha docker.
sudo usermod -aG docker $USER
Kisha toka nje na uingie tena.
8-3. Makosa ya GPG Wakati wa Kuongeza Hifadhi ya APT
● Mifano ya makosa
NO_PUBKEY XXXXXXXX
au
The following signatures couldn't be verified
● Sababu na suluhisho
- Ufunguo wa GPG haukuandikishwa kwa usahihi
- curl ilishindwa kutokana na vikwazo vya mtandao
Rejista upya ufunguo kwa kutumia:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Kisha endesha tena sudo apt update.
8-4. Migogoro ya Kuunganisha Bandari
● Mfano wa kosa
Bind for 0.0.0.0:80 failed: port is already allocated.
● Sababu
- Bandari tayari inatumika na mchakato mwingine kwenye mwenyeji
- Kontena nyingine ya Docker inatumia bandari ileile
● Suluhisho
Angalia mchakato upi unaotumia bandari:
sudo lsof -i -P -n | grep :80
Angalia kontena zinazoendesha:
docker ps
Badilisha ramani ya bandari:
-p 8080:80
8-5. Kushindwa Kupakua Picha
● Sababu za kawaida
- Vikwazo vya mtandao (mazingira ya kampuni)
- Masuala ya usanidi wa DNS
- Ufikiaji uliozuiwa wa Docker Hub
● Suluhisho
- Badilisha seva za DNS (kwa mfano 1.1.1.1 au 8.8.8.8)
- Hakiki usanidi wa proksi
- Tumia VPN ikiwa mazingira yanahitaji hivyo
8-6. Makosa ya Kukosekana kwa Nafasi ya Diski
● Ujumbe wa kawaida
no space left on device
● Utatuzi
Ondoa rasilimali zisizotumika:
docker system prune -a
Pitia upya picha, kontena, na vyoe:
docker images
docker ps -a
docker volume ls
Kukosekana kwa nafasi ya diski ni mojawapo ya masuala ya kiutendaji ya Docker yanayojulikana zaidi.

