{"id":155,"date":"2026-05-15T18:17:23","date_gmt":"2026-05-15T16:17:23","guid":{"rendered":"https:\/\/gorankostic.com\/blog\/?p=155"},"modified":"2026-05-15T18:17:23","modified_gmt":"2026-05-15T16:17:23","slug":"container-debugging","status":"publish","type":"post","link":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/","title":{"rendered":"Container Debugging"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Container Debugging<\/h1>\n\n\n\n<p><strong>Excerpt:<\/strong> <br>Container debugging je proces pronala\u017eenja problema u Docker servisima kroz logove, status container-a, mre\u017ee, portove, environment vrednosti, volume-e i samu aplikaciju koja radi unutar container-a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Container Debugging<\/h2>\n\n\n\n<p>Container debugging po\u010dinje proverom osnovnog stanja: da li container radi, da li se stalno restartuje, da li je uga\u0161en ili uop\u0161te nije uspe\u0161no kreiran. Komande kao \u0161to su <code>docker ps<\/code>, <code>docker ps -a<\/code> i <code>docker compose ps<\/code> daju prvi uvid u to \u0161ta se zaista de\u0161ava.<\/p>\n\n\n\n<p>Logovi su slede\u0107i najva\u017eniji korak. <code>docker logs<\/code> ili <code>docker compose logs<\/code> \u010desto odmah poka\u017eu da li aplikacija puca zbog pogre\u0161ne konfiguracije, nedostaju\u0107e environment promenljive, problema sa bazom, zauzetog porta ili gre\u0161ke u samom kodu.<\/p>\n\n\n\n<p>Kod Compose sistema korisno je gledati logove po konkretnom servisu. Ako stack ima aplikaciju, bazu, reverse proxy i worker, nije dovoljno znati da \u201csistem ne radi\u201d. Potrebno je izolovati koji container pravi problem i u kom trenutku se gre\u0161ka javlja.<\/p>\n\n\n\n<p>Mre\u017ea je \u010dest izvor problema. Aplikacija mo\u017eda radi, ali ne mo\u017ee da do\u0111e do baze ili drugog servisa. Tada treba proveriti da li su container-i na istoj Docker mre\u017ei, da li se koriste ispravni service name-ovi i da li aplikacija poku\u0161ava da se pove\u017ee na pogre\u0161an host ili port.<\/p>\n\n\n\n<p>Environment promenljive \u010desto izazivaju gre\u0161ke koje nisu odmah o\u010digledne. Pogre\u0161an database URL, secret key, API token, domen, webhook URL ili production flag mo\u017ee napraviti problem koji izgleda kao aplikacioni bug, a zapravo je konfiguracioni problem.<\/p>\n\n\n\n<p>Port mapping treba proveriti pa\u017eljivo. Va\u017eno je razlikovati port koji aplikacija koristi unutar container-a od porta koji je mapiran na host server. U produkcionom setup-u \u010desto nije potrebno javno izlagati aplikacioni port, ve\u0107 je dovoljno da ga vidi reverse proxy.<\/p>\n\n\n\n<p>Volume-i i permisije tako\u0111e mogu izazvati probleme. Aplikacija mo\u017ee raditi, ali ne mo\u017ee da upi\u0161e fajl, pristupi upload folderu, pro\u010dita konfiguraciju ili koristi data directory baze. U takvim slu\u010dajevima problem nije u kodu, ve\u0107 u storage ili permission sloju.<\/p>\n\n\n\n<p>Ponekad je potrebno u\u0107i direktno u container. Komande kao \u0161to su <code>docker exec -it container_name sh<\/code> ili <code>bash<\/code> omogu\u0107avaju proveru fajlova, environment vrednosti, mre\u017enih konekcija i procesa iznutra. To je korisno kada spolja\u0161nji logovi nisu dovoljni.<\/p>\n\n\n\n<p>Kod reverse proxy problema treba proveriti i proxy i aplikaciju. Gre\u0161ka 502 \u010desto zna\u010di da proxy radi, ali ne mo\u017ee da do\u0111e do internog servisa. Tada treba proveriti da li je aplikacija pokrenuta, da li slu\u0161a pravi port, da li je na pravoj mre\u017ei i da li proxy ruta pokazuje na ispravan service name.<\/p>\n\n\n\n<p>Dobar container debugging nije nasumi\u010dno restartovanje svega, ve\u0107 sistematsko su\u017eavanje problema. Kada se redom provere status, logovi, mre\u017ea, portovi, environment vrednosti, volume-i i aplikacioni sloj, Docker problemi postaju mnogo lak\u0161i za razumevanje i stabilno re\u0161avanje.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Container debugging je proces pronala\u017eenja problema u Docker servisima kroz logove, status container-a, mre\u017ee, portove, environment vrednosti, volume-e i samu aplikaciju koja radi unutar container-a. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,6],"tags":[],"class_list":["post-155","post","type-post","status-publish","format-standard","hentry","category-docker-environments","category-infrastructure"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Container Debugging - Goran Kostic Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Container Debugging\" \/>\n<meta property=\"og:description\" content=\"Container debugging je proces pronala\u017eenja problema u Docker servisima kroz logove, status container-a, mre\u017ee, portove, environment vrednosti, volume-e i samu aplikaciju koja radi unutar container-a. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/\" \/>\n<meta property=\"og:site_name\" content=\"Goran Kostic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-15T16:17:23+00:00\" \/>\n<meta name=\"author\" content=\"WebixDesign\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"WebixDesign\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/\"},\"author\":{\"name\":\"WebixDesign\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\"},\"headline\":\"Container Debugging\",\"datePublished\":\"2026-05-15T16:17:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/\"},\"wordCount\":469,\"commentCount\":0,\"articleSection\":[\"Docker Environments\",\"INFRASTRUCTURE\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/\",\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/\",\"name\":\"Container Debugging - Goran Kostic Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-05-15T16:17:23+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/container-debugging\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Container Debugging\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/\",\"name\":\"Goran Kostic Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\",\"name\":\"WebixDesign\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"caption\":\"WebixDesign\"},\"sameAs\":[\"https:\\\/\\\/gorankostic.com\\\/blog\"],\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/author\\\/webixdesign\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Container Debugging - Goran Kostic Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/","og_locale":"en_US","og_type":"article","og_title":"Container Debugging","og_description":"Container debugging je proces pronala\u017eenja problema u Docker servisima kroz logove, status container-a, mre\u017ee, portove, environment vrednosti, volume-e i samu aplikaciju koja radi unutar container-a. [&hellip;]","og_url":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/","og_site_name":"Goran Kostic Blog","article_published_time":"2026-05-15T16:17:23+00:00","author":"WebixDesign","twitter_card":"summary_large_image","twitter_misc":{"Written by":"WebixDesign","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/#article","isPartOf":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/"},"author":{"name":"WebixDesign","@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8"},"headline":"Container Debugging","datePublished":"2026-05-15T16:17:23+00:00","mainEntityOfPage":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/"},"wordCount":469,"commentCount":0,"articleSection":["Docker Environments","INFRASTRUCTURE"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/","url":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/","name":"Container Debugging - Goran Kostic Blog","isPartOf":{"@id":"https:\/\/gorankostic.com\/blog\/#website"},"datePublished":"2026-05-15T16:17:23+00:00","author":{"@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8"},"breadcrumb":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/container-debugging\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gorankostic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Container Debugging"}]},{"@type":"WebSite","@id":"https:\/\/gorankostic.com\/blog\/#website","url":"https:\/\/gorankostic.com\/blog\/","name":"Goran Kostic Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gorankostic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8","name":"WebixDesign","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","caption":"WebixDesign"},"sameAs":["https:\/\/gorankostic.com\/blog"],"url":"https:\/\/gorankostic.com\/blog\/author\/webixdesign\/"}]}},"_links":{"self":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/comments?post=155"}],"version-history":[{"count":1,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/155\/revisions"}],"predecessor-version":[{"id":156,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/155\/revisions\/156"}],"wp:attachment":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/media?parent=155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/categories?post=155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/tags?post=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}