🐳 Docker
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  | |
| 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  | |
| docker exec container ls /app | Tekeleza amri  | |
| 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  | |
| 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  | |
| 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  | |
| 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  | |
| docker container pause | Sitisha michakato yote ndani ya kontena | |
| docker pause container | Sitisha kontena  | |
| docker container unpause | Rejesha kontena iliyositishwa | |
| docker unpause container | Rejesha kontena  | |
| 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  | |
| docker build -t my_image:1.0 . | Jenga picha yenye tagi la toleo  | |
| 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  | |
| 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  | |
| docker tag my_image:1.0 my_image:stable | Unda tagi  | |
| docker tag my_image my_image:backup | Ongeza tagi  | |
| docker image push | Sukuma picha kwenda Docker Hub au sajili nyingine | |
| docker push myrepo/my_image:latest | Sukuma picha yenye tagi  | |
| docker push myrepo/my_image:1.0 | Sukuma picha yenye tagi  | |
| docker push myrepo/my_image | Sukuma picha yenye tagi chaguo-msingi  | |
| 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  | |
| 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  | |
| docker network create --driver bridge my_bridge_net | Unda mtandao na dereva  | |
| 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  | |
| docker network connect --alias db_net my_net container | Unganisha na jina bandia  | |
| docker network disconnect | Tenganisha kontena kutoka mtandao | |
| docker network disconnect my_net container | Tenganisha kontena  | |
| 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  | |
| 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  | |
| docker volume rm | Ondoa volume moja au zaidi | |
| docker volume rm my_vol | Ondoa volume  | |
| 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  | |
| 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  | |
| docker compose exec db ls /var/lib/postgresql | Endesha amri  | |
| docker compose exec -d worker touch /tmp/done | Endesha amri ndani ya kontena  | |
| docker compose build | Jenga au jenga upya picha za huduma | |
| docker compose build | Jenga picha zote zilizofafanuliwa kwenye  | |
| docker compose build web | Jenga picha ya huduma  | |
| 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  | |
| 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  | |
| 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  | |
| docker compose start db api | Washa huduma nyingi mara moja | |
| docker compose stop | Zima huduma bila kuondoa kontena | |
| docker compose stop web | Zima huduma  | |
| 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  | |
| 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  | |
| 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  | |
| 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  | |
| 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 ( | |
| 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- alpineau- scratchkwa ukubwa mdogo zaidi.
 Ili kuunganisha tabaka, unaweza kutumia- --squashwakati 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- RUNmoja 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=valueau.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 
 
- Docker Swarm
🐞 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(withstrace) | Zana ya Linux ya kuingia namespaces za mchakato mwingine (hapa, kontena). Inatumiwa na stracekufuatilia 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 pskwenye 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  | |
| 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 ( | |
| docker diff my_container | grep '^C' | Onyesha faili zilizobadilishwa pekee ( | |
| 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  | |
| 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  | |
| 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  | |
| 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  | |
| 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  | |
| docker compose exec web sh | Fungua shell ndani ya kontena  | |
| docker compose exec api curl http://localhost:8080 | Tekeleza ombi la curl kutoka kontena la huduma  | |
| 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  | |
| docker compose pause | Sitisha uendeshaji wa huduma | |
| docker compose pause api | Sitisha huduma  | |
| docker compose unpause | Rejesha huduma zilizositishwa | |
| docker compose unpause api | Rejesha huduma  | |
| docker compose create | Unda kontena bila kuziwasha | |
| docker compose create web db | Unda kontena za  | |
| 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  | 
🛠 Mbinu Muhimu na Otomatiki na Docker Compose
- Kutenganisha Mazingira 
 Tumia faili tofauti za- docker-compose.override.ymlkwa 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 .envkwa vigezo vya mazingira (kumbuka kuwa faili.envhazijasimbwa na hazipaswi kupakiwa kwenye repo za umma)
 
- docker secretna- docker configkwa 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) 
 
- Faili 
- Mpangilio wa Kuanza na - depends_onna- 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 - -dhuendesha kontena kwa nyuma, na- --remove-orphanshuondoa 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- volumeskupachika 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-stoppedndilo 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  | |
| docker compose exec db psql -U user -d database | Endesha amri ya psql ndani ya kontena la huduma  | |
| docker compose logs | Tazama logi za huduma kwa uchunguzi na ufuatiliaji | |
| docker compose logs -f db | Tazama logi za huduma  | |
| docker compose logs --tail=50 api | Onyesha mistari 50 ya mwisho ya logi kutoka huduma  | |
| docker compose logs --since=1h web | Onyesha logi za saa moja iliyopita kwa huduma  | |
| 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  | |
| 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  | |
| 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  | |
| 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  | 
💡 Kwa urahisi wa debugging ya usanidi mgumu wa huduma nyingi, tumia
docker compose run --rmkuanzisha 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 --helpaudocker <command> --helpkuchunguza 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/