{"id":11027,"date":"2026-04-11T16:12:19","date_gmt":"2026-04-11T16:12:19","guid":{"rendered":"https:\/\/bitep.net\/blog\/2026\/04\/11\/ubuntu-24-04-docker-install-tutorial\/"},"modified":"2026-04-11T16:12:19","modified_gmt":"2026-04-11T16:12:19","slug":"ubuntu-24-04-docker-install-tutorial","status":"publish","type":"post","link":"https:\/\/bitep.net\/blog\/2026\/04\/11\/ubuntu-24-04-docker-install-tutorial\/","title":{"rendered":"Ubuntu 24.04-d\u0259 Docker nec\u0259 qurulur? Add\u0131m-add\u0131m r\u0259smi setup"},"content":{"rendered":"<p>Ubuntu 24.04 server v\u0259 ya lokal ma\u015f\u0131nda Docker qura\u015fd\u0131rmaq indi bir \u00e7ox layih\u0259 \u00fc\u00e7\u00fcn baza add\u0131mlardan biridir. Container \u0259sasl\u0131 deploy, local development, CI\/CD v\u0259 mikroservis yana\u015fmas\u0131 il\u0259 i\u015fl\u0259yirsinizs\u0259, Docker \u00e7ox vaxt ilk qura\u015fd\u0131r\u0131lan al\u0259tl\u0259rd\u0259n olur. Amma praktik t\u0259r\u0259fd\u0259n vacib olan m\u0259s\u0259l\u0259 Docker-i sad\u0259c\u0259 i\u015fl\u0259tm\u0259k yox, onu d\u00fczg\u00fcn repo il\u0259, d\u00fczg\u00fcn paketl\u0259rl\u0259 v\u0259 sonrak\u0131 t\u0259hl\u00fck\u0259sizlik qeydl\u0259ri il\u0259 qurmaqd\u0131r.<\/p>\n<p>Bu m\u0259qal\u0259d\u0259 Ubuntu 24.04-d\u0259 Docker Engine qura\u015fd\u0131r\u0131lmas\u0131n\u0131, r\u0259smi Docker repository-si il\u0259 t\u0259miz setup prosesini, ilk yoxlaman\u0131 v\u0259 sudo-suz istifad\u0259 \u00fc\u00e7\u00fcn post-install add\u0131mlar\u0131n\u0131 add\u0131m-add\u0131m g\u00f6st\u0259r\u0259c\u0259y\u0259m.<\/p>\n<h2>Niy\u0259 r\u0259smi Docker repository istifad\u0259 etm\u0259k laz\u0131md\u0131r?<\/h2>\n<p>Ubuntu repository-l\u0259rind\u0259 b\u0259z\u0259n k\u00f6hn\u0259 v\u0259 ya f\u0259rqli paket adlar\u0131 il\u0259 g\u0259l\u0259n Docker variantlar\u0131 olur. Praktik v\u0259 stabil yana\u015fma r\u0259smi Docker repository-si \u00fcz\u0259rind\u0259n qura\u015fd\u0131rmaqd\u0131r. Bunun \u00fcst\u00fcnl\u00fckl\u0259ri:<\/p>\n<ul>\n<li>daha aktual versiyalar<\/li>\n<li>Docker t\u0259r\u0259find\u0259n saxlan\u0131lan paketl\u0259r<\/li>\n<li>buildx v\u0259 compose plugin kimi komponentl\u0259rin bir yerd\u0259 g\u0259lm\u0259si<\/li>\n<li>upgrade prosesinin daha t\u0259miz olmas\u0131<\/li>\n<\/ul>\n<h2>Ba\u015flamazdan \u0259vv\u0259l n\u0259 haz\u0131r olmal\u0131d\u0131r?<\/h2>\n<ul>\n<li>Ubuntu 24.04 server v\u0259 ya desktop<\/li>\n<li>sudo s\u0259lahiyy\u0259ti<\/li>\n<li>internet ba\u011flant\u0131s\u0131<\/li>\n<li>\u0259g\u0259r server istifad\u0259 edirsinizs\u0259, firewall davran\u0131\u015f\u0131n\u0131 ba\u015fa d\u00fc\u015fm\u0259k<\/li>\n<\/ul>\n<p><strong>Vacib qeyd:<\/strong> Docker container portlar\u0131n\u0131 publish ed\u0259nd\u0259 b\u0259zi hallarda UFW qaydalar\u0131n\u0131 yan ke\u00e7\u0259 bil\u0259r. Y\u0259ni Docker qura\u015fd\u0131rmas\u0131 il\u0259 yana\u015f\u0131 firewall davran\u0131\u015f\u0131n\u0131 ayr\u0131ca n\u0259z\u0259r\u0259 almaq laz\u0131md\u0131r.<\/p>\n<h2>Add\u0131m 1: K\u00f6hn\u0259 v\u0259 konflikt yaradan paketl\u0259ri silin<\/h2>\n<p>\u018fvv\u0259lc\u0259 m\u00fcmk\u00fcn konflikt yaradan k\u00f6hn\u0259 paketl\u0259ri t\u0259mizl\u0259yin:<\/p>\n<pre><code>sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc<\/code><\/pre>\n<p>Bu paketl\u0259rin ham\u0131s\u0131 sizd\u0259 olmaya bil\u0259r. Bu normald\u0131r.<\/p>\n<h2>Add\u0131m 2: Docker \u00fc\u00e7\u00fcn laz\u0131mi baza paketl\u0259ri qurun<\/h2>\n<pre><code>sudo apt update\nsudo apt install ca-certificates curl -y\nsudo install -m 0755 -d \/etc\/apt\/keyrings<\/code><\/pre>\n<p>Bu add\u0131m repository a\u00e7ar\u0131 v\u0259 source fayl\u0131 \u00fc\u00e7\u00fcn z\u0259min haz\u0131rlay\u0131r.<\/p>\n<h2>Add\u0131m 3: Docker GPG key \u0259lav\u0259 edin<\/h2>\n<pre><code>sudo curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg -o \/etc\/apt\/keyrings\/docker.asc\nsudo chmod a+r \/etc\/apt\/keyrings\/docker.asc<\/code><\/pre>\n<p>Bu a\u00e7ar Docker paketl\u0259rinin etibarl\u0131 m\u0259nb\u0259d\u0259n g\u0259ldiyini yoxlamaq \u00fc\u00e7\u00fcn laz\u0131md\u0131r.<\/p>\n<h2>Add\u0131m 4: R\u0259smi Docker repository-ni \u0259lav\u0259 edin<\/h2>\n<pre><code>sudo tee \/etc\/apt\/sources.list.d\/docker.sources &lt;&lt;EOF\nTypes: deb\nURIs: https:\/\/download.docker.com\/linux\/ubuntu\nSuites: $(. \/etc\/os-release && echo \"${UBUNTU_CODENAME:-$VERSION_CODENAME}\")\nComponents: stable\nArchitectures: $(dpkg --print-architecture)\nSigned-By: \/etc\/apt\/keyrings\/docker.asc\nEOF<\/code><\/pre>\n<p>Sonra paket siyah\u0131s\u0131n\u0131 yenil\u0259yin:<\/p>\n<pre><code>sudo apt update<\/code><\/pre>\n<h2>Add\u0131m 5: Docker Engine v\u0259 \u0259sas komponentl\u0259ri qura\u015fd\u0131r\u0131n<\/h2>\n<pre><code>sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y<\/code><\/pre>\n<p>Bu \u0259mrl\u0259 \u0259sas Docker Engine, CLI, container runtime, Buildx v\u0259 Compose plugin qura\u015fd\u0131r\u0131l\u0131r.<\/p>\n<h2>Add\u0131m 6: Docker servisinin i\u015fl\u0259diyini yoxlay\u0131n<\/h2>\n<pre><code>sudo systemctl status docker<\/code><\/pre>\n<p>\u018fg\u0259r servis avtomatik ba\u015flamay\u0131bsa, manual ba\u015flada bil\u0259rsiniz:<\/p>\n<pre><code>sudo systemctl start docker<\/code><\/pre>\n<p>Boot zaman\u0131 da aktiv qalmas\u0131n\u0131 ist\u0259yirsinizs\u0259:<\/p>\n<pre><code>sudo systemctl enable docker.service\nsudo systemctl enable containerd.service<\/code><\/pre>\n<h2>Add\u0131m 7: Hello World il\u0259 test edin<\/h2>\n<pre><code>sudo docker run hello-world<\/code><\/pre>\n<p>Bu \u0259mrl\u0259 test image endirilir v\u0259 container i\u00e7ind\u0259 i\u015fl\u0259dilir. \u018fg\u0259r h\u0259r \u015fey qaydas\u0131ndad\u0131rsa, Docker d\u00fczg\u00fcn i\u015fl\u0259yir.<\/p>\n<h2>Sudo-suz Docker istifad\u0259 etm\u0259k olar?<\/h2>\n<p>B\u0259li, amma burada t\u0259hl\u00fck\u0259sizlik t\u0259r\u0259fi var. Docker socket-\u0259 giri\u015f faktiki olaraq y\u00fcks\u0259k s\u0259lahiyy\u0259t verir. Buna baxmayaraq development v\u0259 g\u00fcnd\u0259lik istifad\u0259 \u00fc\u00e7\u00fcn \u00e7ox adam <code>docker<\/code> qrupundan istifad\u0259 edir.<\/p>\n<p>Bunun \u00fc\u00e7\u00fcn:<\/p>\n<pre><code>sudo groupadd docker\nsudo usermod -aG docker $USER<\/code><\/pre>\n<p>Sonra sessiyan\u0131 yenil\u0259yin:<\/p>\n<pre><code>newgrp docker<\/code><\/pre>\n<p>V\u0259 test edin:<\/p>\n<pre><code>docker run hello-world<\/code><\/pre>\n<p><strong>Vacib:<\/strong> Docker qrupu root s\u0259viyy\u0259sin\u0259 yax\u0131n imkanlar verdiyi \u00fc\u00e7\u00fcn bu rahatl\u0131qla t\u0259hl\u00fck\u0259sizlik aras\u0131nda tradeoff-dur.<\/p>\n<h2>\u018fvv\u0259l sudo il\u0259 i\u015fl\u0259misinizs\u0259<\/h2>\n<p>B\u0259z\u0259n \u0259vv\u0259l <code>sudo docker<\/code> i\u015fl\u0259dib sonra qrupa ke\u00e7\u0259nd\u0259 <code>~\/.docker\/config.json<\/code> permission x\u0259tas\u0131 yaran\u0131r. Bu halda ownership d\u00fcz\u0259ldin:<\/p>\n<pre><code>sudo chown \"$USER\":\"$USER\" \/home\/\"$USER\"\/.docker -R\nsudo chmod g+rwx \"$HOME\/.docker\" -R<\/code><\/pre>\n<h2>Ubuntu 24.04-d\u0259 praktik qeydl\u0259r<\/h2>\n<ul>\n<li>Docker qura\u015fd\u0131rmazdan \u0259vv\u0259l k\u00f6hn\u0259 <code>docker.io<\/code> tipli paketl\u0259ri t\u0259mizl\u0259m\u0259k yax\u015f\u0131d\u0131r<\/li>\n<li>UFW istifad\u0259 edirsinizs\u0259, publish olunan container portlar\u0131n\u0131 ayr\u0131ca yoxlay\u0131n<\/li>\n<li>production m\u00fchitind\u0259 convenience script-d\u0259n \u00e7ox r\u0259smi repo daha sa\u011flam se\u00e7imdir<\/li>\n<li>log-lar b\u00f6y\u00fcy\u0259 bil\u0259r, g\u0259l\u0259c\u0259kd\u0259 logging driver v\u0259 rotation m\u0259s\u0259l\u0259sini d\u00fc\u015f\u00fcnm\u0259k laz\u0131md\u0131r<\/li>\n<\/ul>\n<h2>\u018fn \u00e7ox rast g\u0259lin\u0259n probleml\u0259r<\/h2>\n<h3>1. docker command tap\u0131lm\u0131r<\/h3>\n<p>Qura\u015fd\u0131rma yar\u0131m\u00e7\u0131q qal\u0131b v\u0259 ya repo d\u00fczg\u00fcn \u0259lav\u0259 edilm\u0259yib. <code>apt update<\/code> v\u0259 repo fayl\u0131n\u0131 yenid\u0259n yoxlay\u0131n.<\/p>\n<h3>2. Service ba\u015flam\u0131r<\/h3>\n<p><code>systemctl status docker<\/code> v\u0259 <code>journalctl -u docker<\/code> il\u0259 log-lara bax\u0131n. B\u0259z\u0259n k\u00f6hn\u0259 containerd\/runc konfliktl\u0259ri s\u0259b\u0259b olur.<\/p>\n<h3>3. sudo-suz docker i\u015fl\u0259mir<\/h3>\n<p>\u0130stifad\u0259\u00e7i qrupa \u0259lav\u0259 olunsa da sessiya yenil\u0259nm\u0259yib. Logout\/login v\u0259 ya <code>newgrp docker<\/code> laz\u0131md\u0131r.<\/p>\n<h3>4. Firewall davran\u0131\u015f\u0131 g\u00f6zl\u0259nil\u0259nd\u0259n f\u0259rqlidir<\/h3>\n<p>Bu, Docker-in \u0259n vacib praktik detallardan biridir. Container port publish ed\u0259nd\u0259 UFW siyas\u0259tini ayr\u0131ca test etm\u0259lisiniz.<\/p>\n<h2>N\u0259tic\u0259<\/h2>\n<p>Ubuntu 24.04-d\u0259 Docker qura\u015fd\u0131rmaq \u00e7\u0259tin deyil, amma d\u00fczg\u00fcn qura\u015fd\u0131rmaq vacibdir. \u018fn yax\u015f\u0131 baza yana\u015fmas\u0131 r\u0259smi Docker repository-si il\u0259 qura\u015fd\u0131rmaq, servis v\u0259ziyy\u0259tini yoxlamaq, <code>hello-world<\/code> il\u0259 test etm\u0259k v\u0259 daha sonra ehtiyac varsa non-root istifad\u0259y\u0259 ke\u00e7m\u0259kdir. \u018fg\u0259r server m\u00fchitind\u0259 i\u015fl\u0259yirsinizs\u0259, Docker il\u0259 birlikd\u0259 firewall v\u0259 t\u0259hl\u00fck\u0259sizlik davran\u0131\u015f\u0131n\u0131 ayr\u0131ca planlamaq \u00e7ox vacibdir.<\/p>\n<p>N\u00f6vb\u0259ti m\u0259ntiqli add\u0131m olaraq Docker Compose il\u0259 bir app deploy etm\u0259k, Nginx reverse proxy qurmaq v\u0259 ya Docker log rotation t\u0259nziml\u0259m\u0259k olar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ubuntu 24.04 server v\u0259 ya lokal ma\u015f\u0131nda Docker qura\u015fd\u0131rmaq indi bir \u00e7ox layih\u0259 \u00fc\u00e7\u00fcn baza add\u0131mlardan biridir. Container \u0259sasl\u0131 deploy, local development, CI\/CD v\u0259 mikroservis yana\u015fmas\u0131 il\u0259 i\u015fl\u0259yirsinizs\u0259, Docker \u00e7ox vaxt ilk qura\u015fd\u0131r\u0131lan al\u0259tl\u0259rd\u0259n olur. Amma praktik t\u0259r\u0259fd\u0259n vacib olan m\u0259s\u0259l\u0259 Docker-i sad\u0259c\u0259 i\u015fl\u0259tm\u0259k yox, onu d\u00fczg\u00fcn repo il\u0259, d\u00fczg\u00fcn paketl\u0259rl\u0259 v\u0259 sonrak\u0131 t\u0259hl\u00fck\u0259sizlik qeydl\u0259ri [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11026,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[17,18,41],"tags":[],"class_list":["post-11027","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hosting","category-technology","category-tutoriallar"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/bitep.net\/blog\/wp-content\/uploads\/2026\/04\/docker-install-ubuntu-24-04.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/posts\/11027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/comments?post=11027"}],"version-history":[{"count":0,"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/posts\/11027\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/media\/11026"}],"wp:attachment":[{"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/media?parent=11027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/categories?post=11027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitep.net\/blog\/wp-json\/wp\/v2\/tags?post=11027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}