{"id":356606,"date":"2021-10-22T16:09:42","date_gmt":"2021-10-22T13:09:42","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-assign-a-static-ip-to-a-docker-container-cloudsavvy-it\/"},"modified":"2021-10-22T16:09:42","modified_gmt":"2021-10-22T13:09:42","slug":"how-to-assign-a-static-ip-to-a-docker-container-cloudsavvy-it","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-assign-a-static-ip-to-a-docker-container-cloudsavvy-it\/","title":{"rendered":"#How to Assign a Static IP to a Docker Container \u2013 CloudSavvy IT"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2bf07401e78\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2bf07401e78\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-assign-a-static-ip-to-a-docker-container-cloudsavvy-it\/#Why_Use_a_Static_IP\" >Why Use a Static IP?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-assign-a-static-ip-to-a-docker-container-cloudsavvy-it\/#Setting_Up_Static_IPs\" >Setting Up Static IPs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-assign-a-static-ip-to-a-docker-container-cloudsavvy-it\/#Using_Docker_Compose\" >Using Docker Compose<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong>&#8220;#How to Assign a Static IP to a Docker Container \u2013 CloudSavvy IT&#8221;<\/strong><\/p>\n<div id=\"article-content-area\">\n<img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage alignnone size-full wp-image-14169\" srcset=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/993634a1.png?width=398&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1 400w, https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/993634a1.png?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1 1200w\" sizes=\"auto, 400w, 1200w\" src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/993634a1.png?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"1200\" height=\"675\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>Static IP addresses don\u2019t change when containers or services are stopped and started, making them useful for permanent networking. Assigning Docker containers static IP addresses is an easy way to make them more accessible.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Why_Use_a_Static_IP\"><\/span>Why Use a Static IP?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>There are two kinds of \u201cstatic IP\u201d; private IP addresses used for internal networking inside a server, and public IP addresses used to connect outside the server, often over the internet.<\/p>\n<p>If you need to set up a public IP address for a container, you\u2019ll want to use port bindings. You can \u201cpublish\u201d ports on the Docker container to be accessible from the host. While there are more advanced networking setups, this is by far the easiest and most common. For example, binding port 80 (HTTP) on the host to point to an NGINX container:<\/p>\n<pre>docker run --publish=80:8080 nginx<\/pre>\n<p>If you want to make a static private IP address, you should consider if you need to use one at all. Most of the time, you\u2019ll want a static IP to talk to one container from another, or from the host. In most cases, Docker\u2019s built in networking can handle this.<\/p>\n<p>Docker comes with a default network, but if you make your own, you can give containers aliases when launched in that network.\u00a0This alias will resolve to the container\u2019s private IP automatically.\u00a0For example, the NGINX container here can access the MongoDB instance with the connection string <code>mongodb:\/\/mongohost:27017<\/code>.<\/p>\n<pre>docker network create example&#13;\ndocker run --net example --name nginx -d nginx&#13;\ndocker network connect example --alias mongohost mongodb<\/pre>\n<p>To learn more, you can read <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.docker.com\/network\/bridge\/\">Docker\u2019s documentation on user-defined bridge networks<\/a>.<\/p>\n<p>However, there are still plenty of times when you\u2019ll want to manually specify a private IP address, such as accessing containers directly from the host. You\u2019ll still need to use a custom Docker network to do so, but it\u2019s easy to set up.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Setting_Up_Static_IPs\"><\/span>Setting Up Static IPs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>First, you\u2019ll need to set up a Docker network, and since we care about the IP address, you\u2019ll need to specify a fixed subnet:<\/p>\n<pre>docker network create --subnet=172.20.0.0\/16 customnetwork<\/pre>\n<p><strong>RELATED:<\/strong> <strong><em>What are Subnets, and How Do They Affect My Network?<\/em><\/strong><\/p>\n<p>Then, you can run a container, specifying the network with the <code>--net<\/code>\u00a0flag, and specifying the IP with the <code>-ip<\/code>\u00a0flag:<\/p>\n<pre>docker run --net customnetwork --ip 172.20.0.10 -d container<\/pre>\n<p>You caan verify the address is correct by checking it in container with <code>exec -t bin\/bash<\/code>, or by inspecting the Docker container list:<\/p>\n<pre>docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id<\/pre>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Using_Docker_Compose\"><\/span>Using Docker Compose<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Docker Compose is a tool used to launch multiple containers with predefined settings. This includes setting up networks with specific subnets, and you can attach containers to networks with fixed IPs using the <code>ipv4_address<\/code>\u00a0config block shown here:<\/p>\n<pre>version: '2'&#13;\nservices:&#13;\n  webserver:&#13;\n    image: nginx&#13;\n    container_name: web-server&#13;\n    networks:&#13;\n      customnetwork:&#13;\n        ipv4_address: 172.20.0.10&#13;\nnetworks:&#13;\n  customnetwork:&#13;\n    ipam:&#13;\n      config:&#13;\n        - subnet: 172.20.0.0\/16<\/pre>\n<\/div>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.cloudsavvyit.com\/14508\/how-to-assign-a-static-ip-to-a-docker-container\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#How to Assign a Static IP to a Docker Container \u2013 CloudSavvy IT&#8221; Static IP addresses don\u2019t change when containers or services are stopped and started, making them useful for permanent networking. Assigning Docker containers static IP addresses is an easy way to make them more accessible. Why Use a Static IP? There are two&#8230;<\/p>\n","protected":false},"author":1,"featured_media":356607,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/993634a1.png","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-356606","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/356606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=356606"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/356606\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/356607"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=356606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=356606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=356606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}