Jinsi ya Kusakinisha Docker kwenye Ubuntu: Mwongozo Kamili wa Kuanza (Njia Rasmi)

目次

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 docker bila sudo
  • 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:

  1. Install via the official Docker repository (Recommended)
  2. Use the get.docker.com installation script (Quick and easy)
  3. 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
  • --dearmor converts 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 as jammy or focal )
  • 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_CODENAME imeungwa 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 run bila sudo
  • 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/docker inatumiwa?
  • 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:

  1. Inapakua picha kutoka Docker Hub ikiwa haipo kwenye mashine
  2. Inaanza kontena kutoka kwenye picha
  3. 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 up moja

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_on inahakikisha hifadhidata inaanza kabla ya programu
  • volumes huhifadhi 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:

CommandDescription
docker compose up -dStart containers in the background
docker compose downStop and remove containers and networks
docker compose buildBuild images using Dockerfile
docker compose psList containers managed by Compose
docker compose logs -fView 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 latest halihakikishi
  • 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

  1. Daemon ya Docker haifanyi kazi : sudo systemctl start docker
  2. Mabadiliko ya kikundi cha docker hayajachukuliwa : Toka nje na uingie tena, au tumia newgrp docker
  3. 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.