🐳 Docker

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
Imechapishwa

31 Agosti 2025

Docker ni jukwaa la kuendesha programu kwenye kontena yaliyotengwa. Mwongozo huu wa haraka unajumuisha amri za kufanya kazi na picha (images), kontena (containers), mitandao, volumes, pamoja na Docker Compose na Swarm.

📦 Amri za Msingi

Amri

Mfano

Maelezo

docker Amri kuu ya Docker CLI inayotumika kuendesha amri ndogo na kusimamia kontena, picha, mitandao, na volumes
docker version Onyesha toleo lililosakinishwa la Docker (mteja na seva). Inafaa kuthibitisha usakinishaji
docker version --format '{{.Client.APIVersion}}'

Onyesha toleo la API ya Docker client pekee

docker version --format '{{.Server.Version}}'

Onyesha toleo la seva (Engine) ya Docker pekee

docker version --format '{{json .}}'

Toa taarifa kamili ya toleo kwa umbizo la JSON

docker system info Onyesha taarifa za jumla za mfumo wa Docker: idadi ya kontena, picha, na rasilimali
docker info

Onyesha data ya Docker: matoleo, mitandao, idadi ya kontena na picha

docker info --format '{{json .}}'

Toa taarifa kwa umbizo la JSON — muhimu kwa otomatiki

docker info --format '{{.NCPU}} CPUs, {{.MemTotal}} bytes RAM'

Onyesha idadi ya CPU na jumla ya kumbukumbu

docker info --format '{{.Driver}}'

Onyesha dereva wa hifadhi unaotumika na Docker

docker image pull Pakua picha kutoka Docker Hub au sajili nyingine. Kontena haziwezi kuendeshwa bila picha
docker pull ubuntu

Pakua picha ya Ubuntu ya hivi karibuni

docker pull nginx:alpine

Pakua picha nyepesi ya Nginx iliyo msingi wa Alpine Linux

docker pull redis:7

Pakua picha ya Redis toleo 7

docker container run Unda na endesha kontena jipya kutoka kwa picha
docker run -it ubuntu bash

Endesha Ubuntu na terminal ya Bash ya mwingiliano

docker run -d nginx

Endesha Nginx katika hali ya nyuma (detached)

docker run -p 8080:80 nginx

Endesha Nginx na uunganishe bandari 80 ya kontena na bandari 8080 ya host

docker container ls Orodhesha kontena zinazoendeshwa
docker ps

Onyesha kontena zinazoendeshwa pekee

docker ps -a

Onyesha kontena zote, ikiwemo zilizozimwa

docker ps --format '{{.Names}}'

Toa majina ya kontena pekee

docker container start Washa kontena moja au zaidi zilizozimwa
docker start container_name

Washa kontena kwa jina

docker start $(docker ps -aq)

Washa kontena zote

docker start -ai container_name

Washa kontena na uunganishe terminal ya mwingiliano

docker container stop Zima kontena inayoendeshwa
docker stop container_name

Zima kontena kwa jina

docker stop $(docker ps -q)

Zima kontena zote zinazoendeshwa

docker stop -t 5 container_name

Zima kontena kwa kuipa sekunde 5 kumaliza michakato

docker container restart Anzisha tena kontena
docker restart container_name

Anzisha tena kontena maalum

docker restart $(docker ps -q)

Anzisha tena kontena zote zinazoendeshwa

docker restart -t 10 container_name

Anzisha tena kontena kwa kuchelewa sekunde 10

docker container rm Ondoa kontena
docker rm container_name

Ondoa kontena maalum iliyozimwa

docker rm $(docker ps -aq)

Ondoa kontena zote zilizozimwa

docker rm -f container_name

Lazimisha kuondoa kontena inayoendeshwa

docker image ls Orodhesha picha zilizopakuliwa
docker images

Onyesha picha zote kwenye host

docker images -a

Onyesha picha zote, ikiwemo tabaka za kati

docker images --format '{{.Repository}}:{{.Tag}}'

Toa majina na vitambulisho (tags) vya picha pekee

docker image rm Ondoa picha moja au zaidi kutoka hifadhi ya ndani
docker rmi test1:latest

Ondoa picha yenye tagi latest kutoka hazina test1

docker rmi 1a2b3c4d5e6f

Ondoa picha kwa kutumia ID yake

docker rmi $(docker images -q)

Ondoa picha zote (tumia kwa tahadhari!)

🔁 Usimamizi wa Kontena

Amri

Mfano

Maelezo

docker container exec Endesha amri ndani ya kontena inayoendeshwa
docker exec -it container bash

Fungua shell ya bash ya mwingiliano ndani ya kontena container

docker exec container ls /app

Tekeleza amri ls kwenye saraka /app ndani ya kontena

docker exec -d container touch /tmp/testfile

Endesha amri ndani ya kontena katika hali ya nyuma (bila kungojea)

docker container logs Tazama logi za kontena
docker logs container

Onyesha logi zote za kontena container

docker logs -f container

Fuatilia logi za kontena kwa wakati halisi

docker logs --tail 50 container

Onyesha mistari 50 ya mwisho ya logi

docker inspect Pata taarifa za kina za JSON kuhusu kontena au picha
docker inspect container

Onyesha maelezo ya kontena container

docker inspect --format '{{.NetworkSettings.IPAddress}}' container

Onyesha anwani ya IP ya kontena

docker container stats Onyesha takwimu za matumizi ya rasilimali kwa wakati halisi za kontena
docker stats

Onyesha CPU, kumbukumbu, mtandao na matumizi ya diski kwa kontena zote

docker stats container_name

Onyesha takwimu kwa kontena maalum pekee

docker stats --no-stream

Onyesha picha ya takwimu mara moja na utoke

docker container rename Badilisha jina la kontena
docker rename old_name new_name

Badilisha jina la kontena kutoka old_name hadi new_name

docker container cp Nakili faili kati ya kontena na host
docker cp container:/src/file.txt ./file.txt

Nakili faili kutoka kontena hadi saraka ya host ya sasa

docker cp ./config.yaml container:/app/config.yaml

Nakili faili kutoka host hadi kontena

docker cp CONTAINER:/var/logs/app.log - | tar x -O | grep "ERROR"

Tiririsha faili la logi kutoka kontena na uchuje mistari yenye “ERROR” bila kuhifadhi kwenye diski

docker container top Onyesha michakato inayoendeshwa ndani ya kontena
docker top container

Onyesha michakato ya kontena container

docker container pause Sitisha michakato yote ndani ya kontena
docker pause container

Sitisha kontena container

docker container unpause Rejesha kontena iliyositishwa
docker unpause container

Rejesha kontena container

docker container update Sasisha mipangilio ya kontena bila kuanzisha tena
docker update --memory 500m container

Punguza matumizi ya kumbukumbu ya kontena hadi 500 MB

🧱 Picha na Dockerfile

Amri

Mfano

Maelezo

docker buildx build Jenga picha ya Docker kutoka Dockerfile
docker build -t my_image .

Jenga picha yenye tagi my_image kutoka saraka ya sasa

docker build -t my_image:1.0 .

Jenga picha yenye tagi la toleo 1.0

docker build --no-cache -t my_image .

Jenga picha bila kutumia cache kwa ujenzi safi

docker container commit Unda picha kutoka hali ya sasa ya kontena
docker commit container my_img:v1

Unda picha my_img yenye tagi v1 kutoka kontena container

docker commit -m "Added config" container my_img:v2

Unda picha na ujumbe wa commit

docker commit -a "John Doe" container my_img:latest

Unda picha ukibainisha mwandishi

docker image tag Ongeza au badilisha tagi ya picha
docker tag my_image myrepo/my_image:latest

Ongeza tagi kwa kusukuma (push) kwenye sajili myrepo

docker tag my_image:1.0 my_image:stable

Unda tagi stable kwa picha yenye tagi 1.0

docker tag my_image my_image:backup

Ongeza tagi backup kwenye picha ya ndani

docker image push Sukuma picha kwenda Docker Hub au sajili nyingine
docker push myrepo/my_image:latest

Sukuma picha yenye tagi latest kwenye hazina myrepo

docker push myrepo/my_image:1.0

Sukuma picha yenye tagi 1.0

docker push myrepo/my_image

Sukuma picha yenye tagi chaguo-msingi latest

docker login Thibitisha kwenye Docker Hub au sajili nyingine
docker login

Weka jina la mtumiaji na nenosiri kwa mwingiliano kwa Docker Hub

docker login myregistry.local:5000

Ingia kwenye sajili binafsi

docker login -u username -p password

Ingia na jina la mtumiaji na nenosiri (haipendekezwi)

docker logout Toka kwenye Docker Hub au sajili nyingine
docker logout

Toka kutoka Docker Hub

docker logout myregistry.local:5000

Toka kutoka sajili binafsi

HEALTHCHECK Maelekezo ya Dockerfile ya kuangalia hali ya afya ya kontena kiotomatiki
HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD curl -f http://localhost/ || exit 1

Ongeza ukaguzi wa afya kuthibitisha upatikanaji wa huduma kila sekunde 30

docker inspect --format='{{json .State.Health}}' container_name

Angalia hali ya healthcheck ya kontena inayoendeshwa

🔌 Mitandao na Volumes

Amri

Mfano

Maelezo

docker network ls Orodhesha mitandao yote ya Docker
docker network ls

Onyesha mitandao yote iliyoundwa

docker network ls --filter driver=bridge

Onyesha mitandao yenye dereva bridge pekee

docker network ls --format '{{.Name}}'

Onyesha majina ya mitandao pekee

docker network create Unda mtandao mpya wa Docker
docker network create my_net

Unda mtandao my_net ukiwa na mipangilio chaguo-msingi

docker network create --driver bridge my_bridge_net

Unda mtandao na dereva bridge

docker network create --subnet=192.168.10.0/24 my_custom_net

Unda mtandao ukiwa na subnet maalum

docker network connect Unganisha kontena kwenye mtandao
docker network connect my_net container

Unganisha kontena container kwenye mtandao my_net

docker network connect --alias db_net my_net container

Unganisha na jina bandia db_net

docker network disconnect Tenganisha kontena kutoka mtandao
docker network disconnect my_net container

Tenganisha kontena container kutoka mtandao my_net

docker volume ls Orodhesha volumes zote za Docker
docker volume ls

Onyesha volumes zote

docker volume ls --filter dangling=true

Onyesha volumes ambazo hazitumiki

docker volume create Unda volume mpya ya Docker
docker volume create my_vol

Unda volume my_vol

docker volume create --driver local --opt type=tmpfs my_tmp_vol

Unda volume ya muda kwa kutumia tmpfs

docker volume inspect Onyesha taarifa za kina kuhusu volume
docker volume inspect my_vol

Onyesha maelezo ya volume my_vol kwa umbizo la JSON

docker volume rm Ondoa volume moja au zaidi
docker volume rm my_vol

Ondoa volume my_vol

docker volume rm $(docker volume ls -qf dangling=true)

Ondoa volumes zote ambazo hazitumiki

🧩 Viongezeo vya Docker

Amri

Mfano

Maelezo

docker plugin ls Orodhesha viongezeo vya Docker vilivyosakinishwa
docker plugin ls

Onyesha viongezeo vyote na hali zao

docker plugin install Sakinisha kiongezeo cha Docker kutoka sajili
docker plugin install vieux/sshfs

Sakinisha kiongezeo cha SSHFS volume

docker plugin install store/weaveworks/net-plugin:latest_release

Sakinisha kiongezeo cha mtandao cha Weave

docker plugin disable Lemaza kiongezeo kilichosakinishwa
docker plugin disable vieux/sshfs

Lemaza kiongezeo cha SSHFS

docker plugin enable Wezesha kiongezeo kilicholemazwa awali
docker plugin enable vieux/sshfs

Wezesha kiongezeo cha SSHFS

docker plugin rm Ondoa kiongezeo cha Docker
docker plugin rm vieux/sshfs

Ondoa kiongezeo cha SSHFS

📋 Docker Compose

Amri

Mfano

Maelezo

docker compose up Washa kontena zilizofafanuliwa kwenye docker-compose.yml
docker compose up

Washa huduma zote katika saraka ya sasa kwa hali ya mwingiliano

docker compose up -d

Washa huduma katika hali ya nyuma (detached)

docker compose up --build

Jenga picha kabla ya kuanzisha huduma

docker compose down Zima na ondoa kontena, mitandao, na volumes vilivyoundwa na up
docker compose down

Zima huduma zote na ondoa rasilimali zinazohusiana

docker compose down --volumes

Ondoa pia volumes zilizoundwa na Compose

docker compose down --rmi all

Ondoa pia picha zilizoundwa na Compose

docker compose logs Tazama logi za huduma zote au maalum
docker compose logs

Onyesha logi za huduma zote

docker compose logs -f

Fuatilia logi kwa wakati halisi

docker compose logs web

Onyesha logi za huduma web pekee

docker compose exec Endesha amri ndani ya kontena la huduma inayoendeshwa
docker compose exec web bash

Ingia kwenye shell ya bash ya mwingiliano ndani ya kontena la huduma web

docker compose exec db ls /var/lib/postgresql

Endesha amri ls ndani ya kontena la hifadhidata

docker compose exec -d worker touch /tmp/done

Endesha amri ndani ya kontena worker kwa hali ya nyuma

docker compose build Jenga au jenga upya picha za huduma
docker compose build

Jenga picha zote zilizofafanuliwa kwenye docker-compose.yml

docker compose build web

Jenga picha ya huduma web pekee

docker compose build --no-cache

Jenga picha bila kutumia cache

docker compose ps Onyesha hali ya huduma na kontena zote
docker compose ps -a

Onyesha kontena zote, ikiwemo zilizozimwa

docker compose ps --services

Onyesha majina ya huduma pekee

docker compose pull Pakua/sasisha picha za huduma kutoka sajili
docker compose pull web

Pakua picha kwa huduma web pekee

docker compose pull --ignore-pull-failures

Endelea kupakua hata kama picha zingine zinashindwa

docker compose restart Anzisha tena huduma zote au maalum
docker compose restart db

Anzisha tena huduma db pekee

docker compose restart -t 10

Anzisha tena huduma na muda wa sekunde 10

docker compose config Onyesha usanidi wa mwisho wa Compose kwa umbizo la YAML
docker compose config --services

Orodhesha huduma zote kwenye usanidi

docker compose config --volumes

Orodhesha volumes zote zilizofafanuliwa

docker compose start Washa huduma zilizozimwa bila kuunda upya kontena
docker compose start web

Washa huduma web

docker compose start db api

Washa huduma nyingi mara moja

docker compose stop Zima huduma bila kuondoa kontena
docker compose stop web

Zima huduma web

docker compose stop -t 5

Zima huduma na muda wa sekunde 5

📤 Uhamisho na Uagizaji

Amri

Mfano

Maelezo

docker image save Hifadhi picha moja au zaidi za Docker kwenye faili la tar kwa ajili ya kuagiza au kuhamisha baadaye
docker save -o image.tar my_img:tag

Hifadhi picha ya Docker kwenye faili la tar

docker save my_image > my_image.tar

Njia mbadala ya kuhifadhi picha kwenye faili

docker save -o redis_latest.tar redis:latest

Hifadhi picha maalum ya Redis kwenye faili

docker image load Pakia picha za Docker kutoka faili la tar lililohifadhiwa awali
docker load < image.tar

Pakia picha ya Docker kutoka faili la tar

docker load --input redis_latest.tar

Pakia picha ukitaja faili kwa parameta

docker load --quiet < my_image.tar

Pakia picha bila matokeo ya maendeleo

docker container export Hamisha mfumo wa faili wa kontena kama faili la tar bila historia au metadata ya picha
docker export container > file.tar

Hamisha mfumo wa faili wa kontena kwenye faili

docker export my_container > my_container_fs.tar

Hamisha kontena kwa jina

docker export -o container_fs.tar container_id

Hamisha kwa ID ya kontena kwa kutumia bendera -o

docker image import Unda picha mpya kutoka faili la tar la mfumo wa faili
docker import file.tar new_img

Agiza faili la archive kama picha mpya ya Docker

docker import https://example.com/image.tar my_new_image

Agiza picha moja kwa moja kutoka URL

docker import - my_image < file.tar

Agiza kutoka pembejeo ya kawaida

🧹 Usafishaji na Utambuzi

Amri

Mfano

Maelezo

docker system df Onyesha matumizi ya diski ya Docker: volumes, picha, kontena, na cache ya ujenzi
docker system df -v

Matokeo ya kina yenye taarifa juu ya kila picha, kontena, na volume

docker system df --format '{{json .}}'

Toa taarifa kwa umbizo la JSON

docker system prune Ondoa data zote za Docker zisizotumika: kontena zilizozimwa, mitandao isiyotumika, picha zisizo na marejeo, na cache ya ujenzi
docker system prune -a

Ondoa picha zisizotumika ikiwemo za kati

docker system prune --volumes

Ondoa volumes zisizotumika pamoja na rasilimali nyingine

docker image prune Ondoa picha za Docker zisizotumika ikiwemo tabaka zisizo na marejeo
docker image prune -a

Ondoa picha zote zisizotumika ikiwemo zisizo na marejeo

docker image prune --filter "until=24h"

Ondoa picha zilizokuwa zaidi ya masaa 24

docker container prune Ondoa kontena zilizozimwa zikilingana na vichujio au zote ikiwa hakuna maalum
docker container prune --filter "until=24h"

Ondoa kontena zilizozimwa zaidi ya masaa 24

docker container prune --force

Ondoa bila uthibitisho

🐝 Docker Swarm

Amri

Mfano

Maelezo

docker swarm init Anzisha klasta mpya ya Docker Swarm kwenye nodi ya sasa
docker swarm init --advertise-addr 192.168.1.100

Anzisha klasta kwa kubainisha anwani ya IP

docker swarm init --listen-addr 0.0.0.0:2377

Anzisha kwa kubainisha bandari ya kusikiliza

docker service create Unda huduma mpya kwenye klasta ya Swarm
docker service create --name nginx nginx

Unda huduma ya Nginx kwenye Swarm

docker service create --replicas 3 --name web webserver

Unda huduma yenye nakala 3

docker service create --name redis --publish 6379:6379 redis

Unda huduma yenye ramani ya bandari

docker stack deploy Weka kundi la huduma kwenye klasta ya Swarm kulingana na faili la Compose
docker stack deploy -c docker-compose.yml mystack

Weka stack kutoka faili la compose

docker stack deploy --with-registry-auth -c compose.yml mystack

Weka stack na kusambaza uthibitishaji wa sajili

docker stack deploy -c swarm-compose.yml mystack

Tumia faili mbadala la compose kwa stack

docker stack rm Ondoa stack moja au zaidi kutoka klasta ya Swarm
docker stack rm mystack

Ondoa stack mystack

docker stack rm

Ondoa stack zote (haipendekezwi)

docker stack rm mystack && docker swarm leave --force

Ondoa stack na uondoke kwenye Swarm

💼 Matumizi ya Kina ya Docker

🚀 Amri za Kitaalamu za Docker

Amri

Mfano

Maelezo

docker buildx Zana ya juu ya kujenga picha ikibadilisha docker build. Inasaidia majukwaa mengi, cache, ujenzi sambamba, na usafirishaji kwa umbizo mbalimbali. Inafaa kwa CI/CD na maendeleo ya cross-platform
docker buildx build --platform linux/arm64,linux/amd64 -t myimg:multi .

Jenga picha ya majukwaa mengi (ARM na x86 kwa wakati mmoja)

docker buildx build --load -t localimg .

Jenga picha na upakie kwenye cache ya Docker Engine ya ndani

docker buildx build --push --platform linux/amd64,linux/arm64 -t repo/app:latest .

Jenga na sukuma picha ya majukwaa mengi kwenye sajili

docker context Simamia muktadha wa Docker kwa kazi na mazingira ya mbali au mengi. Inawezesha kubadili haraka kati ya Docker Engines za ndani na mbali
docker context create myremote --docker "host=ssh://user@host"

Unda muktadha wa kuunganisha kwenye host ya Docker ya mbali

docker context use myremote

Badili hadi muktadha wa mbali

docker context ls

Orodhesha mikataba inayopatikana na ile inayotumika

docker system events Sikiliza matukio ya Docker kwa wakati halisi, na uchujaji kulingana na aina ya tukio (mf. kuanza kwa kontena). Inafaa kwa ufuatiliaji na otomatiki
docker events --filter 'event=start'

Onyesha matukio ya kuanza kwa kontena pekee

docker events --since 1h --until 10m

Onyesha matukio ya saa iliyopita hadi dakika 10 zilizopita

docker events --filter 'type=network'

Onyesha matukio yanayohusiana na mtandao pekee

docker events --filter 'image=nginx'

Onyesha matukio yanayohusiana na picha nginx

docker container update Badilisha kikomo cha rasilimali na mipangilio ya kontena inayoendeshwa bila kuanzisha upya
docker update --cpus 2 --memory 1g my_container

Weka kikomo cha CPU 2 na RAM ya 1 GB

docker update --restart unless-stopped my_container

Weka sera ya kuanzisha upya kiotomatiki kuwa unless-stopped

docker update --pids-limit 200 my_container

Punguza idadi ya michakato hadi 200

docker container diff Onyesha mabadiliko ya mfumo wa faili kwenye kontena ukilinganisha na picha yake ya awali. Inafaa kwa debugging na ukaguzi
docker diff my_container

Onyesha mabadiliko yote ya mfumo wa faili kwenye kontena

docker diff my_container | grep '^A'

Onyesha faili zilizoongezwa pekee (A — Added)

docker image history Onyesha historia ya tabaka za picha: amri za ujenzi, ukubwa wa kila tabaka, na muda wa kuundwa. Inafaa kwa uboreshaji na ukaguzi
docker history my_image

Onyesha historia ya tabaka za picha

docker history --no-trunc my_image

Onyesha amri za ujenzi kamili bila kukatwa

docker history --format "{{.CreatedBy}}: {{.Size}}" my_image

Toa amri za ujenzi na ukubwa wa tabaka pekee

🛠 Mbinu na Otomatiki za Docker

  • Punguza ukubwa wa picha
    Tumia picha za msingi kama alpine au scratch kwa ukubwa mdogo zaidi.
    Ili kuunganisha tabaka, unaweza kutumia --squash wakati wa kujenga (inahitaji vipengele vya majaribio kuwezeshwa).
    Pia, ondoa faili za muda na cache ndani ya tabaka moja:

    RUN apk add --no-cache curl && rm -rf /var/cache/apk/*
  • Punguza idadi ya tabaka
    Unganisha amri katika RUN moja ili kupunguza idadi ya tabaka na ukubwa wa picha ya mwisho:

    RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
  • Boresha ujenzi wa Dockerfile
    Tumia ujenzi wa hatua nyingi (multi-stage) ili faili muhimu pekee zibaki kwenye picha ya mwisho.
    Nakili na sakinisha utegemezi kwanza, kisha nakili msimbo — hii huboresha cache ya tabaka na kuharakisha ujenzi upya.

  • Tenganisha siri na configs
    Usihifadhi faili .env, funguo za API, au vyeti binafsi ndani ya picha.
    Tumia kwa usanidi:

    • docker secret (katika Swarm)
    • vigezo vya mazingira (-e VAR=value au .env)
    • volumes za nje kwa configs

  • Siri za wakati wa ujenzi (BuildKit)
    Kwa upitishaji salama wa siri wakati wa ujenzi, tumia bendera --secret:

    docker buildx build --secret id=mysecret,src=./secret.txt .

    Ndani ya Dockerfile, siri inapatikana kwenye /run/secrets/mysecret:

    RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret

    🛡 Hii huzuia siri kuhifadhiwa kwenye tabaka za picha.

  • Docker bila Root
    Kuendesha Docker bila haki za root huboresha usalama na hupunguza hatari ya kushambuliwa kwa host.
    Ili kuwezesha:

    dockerd-rootless-setuptool.sh install
    export PATH=/usr/bin:$PATH

    Kagua:

    docker info | grep Rootless

    ⚠ Baadhi ya vipengele (mfano, forwarding ya bandari <1024) havitapatikana.

  • Changanua picha kwa udhaifu
    Tumia zana zilizojengewa ndani:

    docker scan my_image

    Au CLI mpya:

    docker scout cves my_image

    Hii husaidia kugundua udhaifu kwenye picha za msingi na utegemezi.

  • Fuatilia matumizi ya rasilimali
    Punguza kontena kwa kumbukumbu, CPU, na idadi ya michakato:

    docker run --memory=512m --cpus="1.5" --pids-limit=200 myimage

    Hii huzuia matumizi ya rasilimali kupita kiasi.
    Unaweza pia kupunguza I/O:

    docker run --device-read-bps /dev/sda:1mb --device-write-bps /dev/sda:1mb myimage

    Inafaa kwa kontena ambazo hazipaswi kuzidisha mfumo wa diski.

  • Usafishaji wa kiotomatiki
    Ondoa mara kwa mara picha, kontena, volumes, na mitandao zisizotumika:

    docker system prune -af --volumes

    ⚠ Kuwa mwangalifu: amri hii hufuta rasilimali zote zisizotumika.

    Kwa usafishaji maalum tumia:

    docker image prune --filter "until=24h"
  • Ujumuishaji wa CI/CD
    Unganisha ujenzi, majaribio, na uwekaji kwenye GitHub Actions, GitLab CI, Jenkins.
    Mfano wa hatua ya GitHub Actions:

    - run: docker build -t myapp:${GITHUB_SHA} .
    - run: docker push myapp:${GITHUB_SHA}
  • Ufuatiliaji na ukaguzi
    Ambatanisha dereva wa logi (--log-driver) kwa mifumo ya kati: ELK, Loki, Splunk.
    Tumia Prometheus + cAdvisor kwa metrics za kontena.

  • Uwekaji kwenye uzalishaji
    Tenganisha configs za maendeleo na uzalishaji kwa kutumia docker-compose.override.yml.
    Kwa upatikanaji wa juu na upanuzi tumia:

    • Docker Swarm
    • Kubernetes

🐞 Urekebishaji na Uchambuzi wa Kontena za Docker

Amri

Mfano

Maelezo

docker container exec Inaendesha amri ndani ya kontena inayoendeshwa, ikitoa ufikiaji wa mwingiliano au uwezo wa kuendesha michakato ndani ya mazingira yaliyotengwa
docker exec -it my_container bash

Anza terminal ya mwingiliano (bash) ndani ya kontena inayoendeshwa

docker exec -it my_container sh

Anza shell ndogo ndani ya kontena (ikiwa bash haipatikani)

docker exec my_container ls /app

Endesha amri ndani ya kontena bila hali ya mwingiliano

docker container logs Inaonyesha logi za kontena maalum, ikiruhusu kuona matokeo na matukio yanayohusiana na uendeshaji wake kwa uchunguzi na ufuatiliaji
docker logs -f --tail 100 my_container

Tazama mistari 100 ya mwisho ya logi kwa wakati halisi

docker logs my_container

Onyesha logi zote zinazopatikana za kontena

docker logs --since 1h my_container

Onyesha logi za saa moja iliyopita

docker inspect Inatoa taarifa za kina kuhusu kitu cha Docker (kontena, picha, mtandao, n.k.) kwa umbizo la JSON, ikiwemo usanidi na hali
docker inspect my_container

Pata taarifa kamili za JSON kuhusu kontena

docker inspect --format '{{.State.Pid}}' my_container

Pata PID ya mchakato mkuu wa kontena kwenye host

docker inspect --format '{{.NetworkSettings.IPAddress}}' my_container

Onyesha anwani ya IP ya kontena

nsenter (with strace) Zana ya Linux ya kuingia namespaces za mchakato mwingine (hapa, kontena). Inatumiwa na strace kufuatilia simu za mfumo ndani ya kontena kwa urekebishaji
nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid strace -p 1

Ingia namespaces za kontena na fuatilia simu za mfumo za mchakato 1

nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid bash

Fungua shell ya bash ndani ya namespaces za kontena

nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --net netstat -tulnp

Tazama bandari zilizo wazi ndani ya kontena

tcpdump (inside container) Zana ya console kwa kunasa na kuchanganua trafiki ya mtandao. Inatumika kwenye kontena kugundua matatizo ya mtandao, kuchambua pakiti, na kufuatilia miunganisho
docker exec -it my_container tcpdump -i any

Nasa na uchanganue trafiki ya mtandao ndani ya kontena

docker exec -it my_container tcpdump -nn port 80

Nasa trafiki kwenye bandari 80 pekee

docker exec -it my_container tcpdump -w /tmp/dump.pcap

Hifadhi trafiki kwenye faili kwa uchambuzi baadaye

docker container stats Inaonyesha metrics za sasa za matumizi ya rasilimali (CPU, kumbukumbu, mtandao, diski) kwa kontena moja au nyingi kwa wakati halisi
docker stats my_container

Onyesha matumizi ya CPU, kumbukumbu, mtandao, na diski kwa wakati halisi ya kontena

docker stats

Onyesha takwimu kwa kontena zote

docker stats --no-stream

Toa takwimu mara moja na utoke

docker container top Inaonyesha orodha ya michakato inayoendeshwa ndani ya kontena, sawa na ps kwenye Linux, kuchambua shughuli za kontena
docker top my_container

Onyesha michakato inayoendeshwa ndani ya kontena

docker top my_container aux

Tumia umbizo mbadala la matokeo kama ps aux

docker top my_container -eo pid,cmd

Onyesha PID na amri za michakato pekee

docker diff Inaonyesha mabadiliko kwenye mfumo wa faili wa kontena ukilinganisha na picha ya msingi, ikionyesha faili zilizoongezwa, kubadilishwa, au kufutwa
docker diff my_container

Onyesha mabadiliko ya mfumo wa faili kwenye kontena ukilinganisha na picha ya msingi

docker diff my_container | grep '^A'

Onyesha faili zilizoongezwa pekee (A — Added)

docker diff my_container | grep '^C'

Onyesha faili zilizobadilishwa pekee (C — Changed)

docker cp Hunanakili faili na saraka kati ya kontena na host, kuwezesha kubadilishana data na kuhifadhi nakala
docker cp my_container:/path/to/file ./file

Nakili faili kutoka kontena hadi host

docker cp ./config.yaml my_container:/app/config.yaml

Nakili faili kutoka host hadi kontena

docker cp my_container:/var/log/app.log - | tar x -O | grep "ERROR"

Nakili faili la logi na uchuje mistari ya makosa bila kuhifadhi kwenye diski

💡 Kwa urekebishaji wa hali ya juu unaweza kutumia nsenter, strace, tcpdump, gdb, na zana nyingine za kiwango cha chini.

💼 Matumizi ya Kina ya Docker Compose

🚀 Amri za Kitaalamu za Docker Compose

Amri

Mfano

Maelezo

docker compose up Washa na simamia maisha ya huduma maalum kutoka faili la docker-compose.yml ukiwa na uwezo wa kuendesha kwa nyuma
docker compose up -d web db

Endesha huduma web na db pekee katika hali ya nyuma (detached)

docker compose up --build

Jenga upya picha kabla ya kuanza huduma

docker compose up --remove-orphans

Ondoa kontena ambazo hazijafafanuliwa kwenye faili la compose la sasa

docker compose build Jenga picha kwa huduma kama zilivyoelezwa kwenye faili la compose kwa kudhibiti cache na ujenzi sambamba
docker compose build --no-cache

Jenga upya picha zote bila kutumia cache

docker compose build --parallel

Jenga huduma zote kwa wakati mmoja ili kuharakisha mchakato

docker compose build web

Jenga picha kwa huduma web pekee

docker compose pull Pakua matoleo ya hivi karibuni ya picha kutoka sajili kwa huduma zote au maalum
docker compose pull

Pakua picha kwa huduma zote

docker compose pull db

Pakua picha kwa huduma db pekee

docker compose pull --ignore-pull-failures

Endelea kutekeleza ukipuuza makosa wakati wa kupakua picha

docker compose restart Anzisha tena huduma zote au maalum bila kuunda upya kontena
docker compose restart

Anzisha tena huduma zote kwenye mradi wa sasa

docker compose restart worker

Anzisha tena huduma worker pekee

docker compose restart web db

Anzisha tena huduma nyingi kwa wakati mmoja

docker compose exec Tekeleza amri ndani ya kontena la huduma inayoendeshwa ukiwa na chaguo la mwingiliano
docker compose exec db psql -U user -d database

Endesha psql ndani ya kontena la huduma db

docker compose exec web sh

Fungua shell ndani ya kontena web

docker compose exec api curl http://localhost:8080

Tekeleza ombi la curl kutoka kontena la huduma api

docker compose config Toa usanidi wa mwisho wa Compose ukizingatia faili zote na vigezo vya mazingira
docker compose config

Onyesha usanidi uliounganishwa kwa umbizo la YAML

docker compose config --services

Orodhesha huduma zote

docker compose config --environment

Onyesha vigezo vyote vya mazingira vinavyotumika na huduma

docker compose watch Anzisha upya huduma kiotomatiki kwenye mabadiliko ya faili za chanzo, muhimu kwa maendeleo
docker compose watch

Anza kufuatilia faili na anzisha upya huduma kwenye mabadiliko

docker compose events Tiririsha matukio ya Compose: kuanza kwa huduma, kusimama, kusasisha
docker compose events --json

Pokea matukio kwa umbizo la JSON

docker compose rm Ondoa kontena za huduma zilizozimwa
docker compose rm web db

Ondoa kontena za huduma web na db

docker compose pause Sitisha uendeshaji wa huduma
docker compose pause api

Sitisha huduma api

docker compose unpause Rejesha huduma zilizositishwa
docker compose unpause api

Rejesha huduma api

docker compose create Unda kontena bila kuziwasha
docker compose create web db

Unda kontena za web na db lakini usiziwasha

docker compose images Onyesha orodha ya picha zinazotumika na huduma
docker compose images

Onyesha picha za huduma zote

docker compose top Onyesha michakato inayoendeshwa ndani ya kontena za huduma
docker compose top web

Onyesha michakato ndani ya kontena za huduma web

🛠 Mbinu Muhimu na Otomatiki na Docker Compose

  • Kutenganisha Mazingira
    Tumia faili tofauti za docker-compose.override.yml kwa mazingira tofauti — development, staging, production. Hii husaidia kutenga usanidi na kuepuka migongano.
    Pia unaweza kuchanganya faili nyingi za usanidi ukitumia bendera -f:

    docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

    Tumia faili tofauti za .env (.env.dev, .env.prod, n.k.) kusimamia vigezo vya mazingira.

  • Uhifadhi Salama wa Siri
    Usiweke data nyeti (nywila, tokeni) moja kwa moja kwenye faili za Compose. Badala yake, tumia:

    • Faili .env kwa vigezo vya mazingira (kumbuka kuwa faili .env hazijasimbwa na hazipaswi kupakiwa kwenye repo za umma)
    • docker secret na docker config kwa usimamizi salama wa siri na usanidi katika Docker Swarm
    • volumes za nje kwa faili za usanidi zilizo na siri
    • mifumo ya nje ya usimamizi wa siri (mf. HashiCorp Vault, AWS Secrets Manager)

  • Mpangilio wa Kuanza na depends_on na healthcheck
    Ili huduma zisubiri utegemezi kuwa tayari:

    services:
      db:
        image: postgres
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U postgres"]
          interval: 10s
          retries: 5
      api:
        image: my_api
        depends_on:
          db:
            condition: service_healthy
  • Punguza Muda wa Kukatika Wakati wa Kusasisha
    Kabla ya kusasisha huduma, endesha:

    docker compose pull && docker compose up -d --remove-orphans

    Chaguo -d huendesha kontena kwa nyuma, na --remove-orphans huondoa kontena ambazo hazijafafanuliwa kwenye configs za sasa.
    Ili kuzima kabisa na kuondoa kontena za zamani ikiwa ni lazima:

    docker compose down --remove-orphans

    Hii huhakikisha picha mpya zinapakiwa na kontena zisizotumika zinaondolewa bila kukatika.

  • Hot Code Reloading kwa Maendeleo
    Tumia volumes kupachika saraka za ndani kwenye kontena. Hii huruhusu mabadiliko ya msimbo kutumika mara moja bila kujenga upya picha.
    Kuwa mwangalifu na masuala ya ruhusa za faili na tabia za cache za filesystem, hasa kwenye Windows na macOS, ili kuepuka matatizo ya utendaji.

  • Hot Code Reloading Bila Volume (Compose 2.22+)

    develop:
      watch:
        - path: ./src
          action: sync
          target: /app
  • Ufuatiliaji wa Kati wa Huduma
    Elekeza logi za kontena kwenye mifumo ya ufuatiliaji na ukusanyaji logi kama ELK Stack, Loki, Prometheus, na Fluentd kwa uchambuzi rahisi na arifa.
    Tumia dereva za logi za Docker (--log-driver) kuwezesha ukusanyaji na uchakataji wa kati wa logi.
    Sanidi dereva za logi kwa kontena kwenye Compose:

    services:
      api:
        image: my_api
        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "3"
  • Uanzishaji Upya wa Kiotomatiki wa Huduma
    Sanidi sera ya kuanzisha upya kwenye docker-compose.yml:

    restart: unless-stopped

    Sera zingine za kuanzisha upya ni pamoja na:

    • no — hakuna uanzishaji upya wa kiotomatiki (chaguo-msingi)
    • always — anzisha upya kontena kila mara
    • on-failure — anzisha upya tu kwenye hitilafu (kwa hiari na idadi ya majaribio)

    Kwenye uzalishaji, unless-stopped ndilo chaguo bora kuhakikisha uimara wa huduma.
    Hii huwezesha urejeshaji wa kiotomatiki wa huduma baada ya hitilafu au kuanzishwa upya kwa host.

  • Profaili za Huduma
    Ruhusu kuendesha vikundi maalum vya huduma pekee:

    services:
      db:
        image: postgres
        profiles: ["backend"]
      web:
        image: nginx
        profiles: ["frontend"]

    Ili kuendesha profaili ya frontend pekee:

    docker compose --profile frontend up

🐞 Urekebishaji na Uchambuzi wa Huduma kwenye Docker Compose

Amri

Mfano

Maelezo

docker compose exec Tekeleza amri ndani ya kontena la huduma inayoendeshwa, ukitoa ufikiaji wa kontena au kuendesha michakato binafsi
docker compose exec web sh

Fungua shell ndani ya kontena la huduma web

docker compose exec db psql -U user -d database

Endesha amri ya psql ndani ya kontena la huduma db

docker compose logs Tazama logi za huduma kwa uchunguzi na ufuatiliaji
docker compose logs -f db

Tazama logi za huduma db kwa wakati halisi

docker compose logs --tail=50 api

Onyesha mistari 50 ya mwisho ya logi kutoka huduma api

docker compose logs --since=1h web

Onyesha logi za saa moja iliyopita kwa huduma web

docker inspect Tazama taarifa za kina kuhusu kontena linaloendesha huduma
docker inspect $(docker compose ps -q web)

Pata JSON yenye taarifa za kina kuhusu kontena la huduma web

docker container stats Fuatilia matumizi ya rasilimali ya kontena zinazendesha huduma
docker stats $(docker compose ps -q worker)

Fuatilia CPU, kumbukumbu, na matumizi mengine ya rasilimali kwa kontena la huduma worker

docker compose run --rm Endesha kontena la muda kwa usanidi wa huduma, muhimu kwa debugging
docker compose run --rm web sh

Anzisha kontena la muda kwa huduma web ukiwa na shell ya mwingiliano

docker container cp Nakili faili kati ya host na kontena
docker cp $(docker compose ps -q db):/dump.sql ./dump.sql

Nakili faili kutoka kontena la huduma db kwenda host

💡 Kwa urahisi wa debugging ya usanidi mgumu wa huduma nyingi, tumia docker compose run --rm kuanzisha kontena za mtu mmoja mmoja zikiwa na mitandao na volumes muhimu bila kuathiri huduma kuu.

📚 Rasilimali za Ziada

🚫 Kupuuza Faili kwa .dockerignore

Ongeza faili na folda kwenye faili .dockerignore ambazo hazipaswi kujumuishwa kwenye picha ili kupunguza ukubwa na kuharakisha ujenzi:

node_modules/
*.log
.env

⚡ Kurahisisha Amri kwa Aliases

Unaweza kuunda aliases kwa amri zinazotumika mara kwa mara ili kuziendesha haraka zaidi:

alias dcu="docker compose up -d"
alias dcd="docker compose down"
alias dcb="docker compose build"

🧠 Kidokezo: Ushauri wa Matumizi ya Docker

  • Usijaribu kukumbuka kila kitu — tumia docker --help au docker <command> --help kuchunguza amri.
  • Fanya mazoezi mara kwa mara na ujaribu miradi midogo.
  • Fuatilia ukubwa wa picha na ondoa faili zisizohitajika kupitia .dockerignore.

🌐 Viungo vya Muhimu

📘 Nyaraka Rasmi za Docker — miongozo na marejeo ya kina kwa mada zote za Docker:
https://docs.docker.com/

📙 Docker Cheat Sheet — karatasi ya rasimi ya Docker:
https://dockerlabs.collabnix.com/docker/cheatsheet/

📗 Docker Hub — picha na sajili:
https://hub.docker.com/