{"id":1497,"date":"2023-02-22T18:41:14","date_gmt":"2023-02-22T17:41:14","guid":{"rendered":"https:\/\/alessandromasciadri.com\/?p=1497"},"modified":"2023-02-27T09:36:35","modified_gmt":"2023-02-27T08:36:35","slug":"come-containerizzare-un-server-dns-con-docker","status":"publish","type":"post","link":"https:\/\/alessandromasciadri.com\/come-containerizzare-un-server-dns-con-docker\/","title":{"rendered":"Come containerizzare un Server DNS con Docker"},"content":{"rendered":"\t\t<div data-akihiro-type=\"ama-post\" data-akihiro-id=\"1497\" class=\"akihiro akihiro-1497\" data-akihiro-post-type=\"post\">\n\t\t\t\t<div class=\"akihiro-element akihiro-element-1bdbdc9 e-flex e-con-boxed e-con e-parent\" data-id=\"1bdbdc9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"akihiro-element akihiro-element-d3eeb36 akihiro-widget akihiro-widget-text-editor\" data-id=\"d3eeb36\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Quando si sviluppano sistemi distribuiti, pi\u00f9 applicazioni possono eseguire chiamate per comunicare tra loro. Un esempio molto frequente sono le chiamate tramite API RESTful.<\/p><p>Nella maggior parte dei casi queste chiamate usano <code>localhost<\/code> come nome di dominio, poich\u00e9 l&#8217;host \u00e8 la propria macchina locale.<\/p><p>La risoluzione dei nomi negli ambienti Linux \u00e8 descritta nel file <code>\/etc\/nsswitch.conf<\/code>. Per impostazione predefinita, ha una voce con file dns, il che significa che controller\u00e0 prima il file <code>\/etc\/hosts<\/code>, quindi il server DNS.<\/p><p>Il Domain Name System (DNS) \u00e8 un servizio che traduce i nomi di dominio in indirizzi IP, e in questo articolo ci sar\u00e0 una breve panoramica su come eseguire un server DNS in un container Docker.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-e70d114 akihiro-widget akihiro-widget-heading\" data-id=\"e70d114\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Docker network<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-ff6971e akihiro-widget akihiro-widget-text-editor\" data-id=\"ff6971e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Il primo passo \u00e8 quello di creare una rete Docker che utilizzeremo per connettere tra loro i nostri container Docker.<\/p><p>Seppur sia possibile utilizzare la rete predefinita creata durante l&#8217;installazione, mi sento di sconsigliarne l&#8217;utilizzo in quanto non sarebbe possibile assegnare un indirizzo IP statico ai propri container.<\/p><p>Il seguente comando crea una rete arbitraria chiamata <code>bushido-net<\/code> con intervallo <code>172.100.0.0\/16<\/code>. Questa ci consentir\u00e0 di eseguire container con IP statici.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-0435b65 akihiro-widget akihiro-widget-code-highlight\" data-id=\"0435b65\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>sudo docker network create --subnet=172.100.0.0\/16 bushido-net<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-18d8acc akihiro-widget akihiro-widget-heading\" data-id=\"18d8acc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Bind9<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-0958337 akihiro-widget akihiro-widget-text-editor\" data-id=\"0958337\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ci sono diversi DNS Server disponibili, ma si \u00e8 optato per Bind9 per la sua natura Open Source e semplicit\u00e0 configurativa.<\/p><p>Inoltre sul Docker Hub \u00e8 presente l&#8217;immagine ufficiale mantenuta da Canonical:\u00a0<a href=\"https:\/\/hub.docker.com\/r\/ubuntu\/bind9\">https:\/\/hub.docker.com\/r\/ubuntu\/bind9<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-7eaf203 akihiro-widget akihiro-widget-heading\" data-id=\"7eaf203\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h4 class=\"akihiro-heading-title akihiro-size-default\">Creazione dei file configurativi<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-b09d03a akihiro-widget akihiro-widget-text-editor\" data-id=\"b09d03a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ora dobbiamo creare i file per configurare Bind9 e far si che lavori sulla nostra rete Docker bushido-net.<\/p><p>Seguiamo gli step qui sotto per creare tutti i file necessari.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-9cba55c akihiro-widget akihiro-widget-heading\" data-id=\"9cba55c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h5 class=\"akihiro-heading-title akihiro-size-default\">Creazione di named.conf.options<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-98e04c5 akihiro-widget akihiro-widget-text-editor\" data-id=\"98e04c5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Il primo file da configurare \u00e8 il <code>named.conf.options<\/code> il quale descrive i DNS forwarders, le interfacce su cui deve stare in ascolto e la directory per la cache.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-081be9b akihiro-widget akihiro-widget-code-highlight\" data-id=\"081be9b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language- \">\n\t\t\t\t<code readonly=\"true\" class=\"language-\">\n\t\t\t\t\t<xmp>options {\n    directory \"\/var\/cache\/bind\";\n\n    recursion yes;\n    listen-on { any; };\n\n    forwarders {\n            8.8.8.8;\n            8.8.4.4;\n    };\n};<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-9fb045d akihiro-widget akihiro-widget-heading\" data-id=\"9fb045d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h5 class=\"akihiro-heading-title akihiro-size-default\">Creazione di named.conf.local<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-cda6e70 akihiro-widget akihiro-widget-text-editor\" data-id=\"cda6e70\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Creaiamo un file denominandolo <code>named.conf.local<\/code> file definiamo la zona <code>bushido-foundation.com<\/code> e la facciamo puntare al file <code>\/etc\/bind\/zones\/db.bushido-foundation.com<\/code>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-ab6abb1 akihiro-widget akihiro-widget-code-highlight\" data-id=\"ab6abb1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language- \">\n\t\t\t\t<code readonly=\"true\" class=\"language-\">\n\t\t\t\t\t<xmp>zone \"bushido-foundation.com\" {\n    type master;\n    file \"\/etc\/bind\/zones\/db.bushido-foundation.com\";\n};<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-7c33b70 akihiro-widget akihiro-widget-heading\" data-id=\"7c33b70\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h5 class=\"akihiro-heading-title akihiro-size-default\">Creazione di db.bushido-foundation.com<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-1ee5168 akihiro-widget akihiro-widget-text-editor\" data-id=\"1ee5168\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Come ultimo file creaiamo il db.bushido-foundation.com dove definiamo tutti gli host appartenenti alla nostra network (nel nostro caso saranno i container docker che andremo successivamente a creare).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-4b2b179 akihiro-widget akihiro-widget-code-highlight\" data-id=\"4b2b179\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language- \">\n\t\t\t\t<code readonly=\"true\" class=\"language-\">\n\t\t\t\t\t<xmp>$TTL    604800\n@       IN      SOA     ns1.bushido-foundation.com. root.bushido-foundation.com. (\n                  3       ; Serial\n             604800     ; Refresh\n              86400     ; Retry\n            2419200     ; Expire\n             604800 )   ; Negative Cache TTL\n;\n; name servers - NS records\n     IN      NS      ns1.bushido-foundation.com.\n\n; name servers - A records\nns1.bushido-foundation.com.          IN      A      172.100.0.2\n\nhost1.bushido-foundation.com.        IN      A      172.100.0.3\nhost2.bushido-foundation.com.        IN      A      172.100.0.4<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-9dc7a57 akihiro-widget akihiro-widget-text-editor\" data-id=\"9dc7a57\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In questo esempio abbiamo definito un DNS Server denominato <strong>ns1.bushido-foundation.com<\/strong> e due host chiamati <strong>host1.bushido-foundation.com<\/strong> e <strong>host2.bushido-foundation.com<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-e88df25 akihiro-widget akihiro-widget-heading\" data-id=\"e88df25\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Creazione dell'immagine Docker<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-21a76e7 akihiro-widget akihiro-widget-text-editor\" data-id=\"21a76e7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ora non ci resta che creare l&#8217;immagine Docker per il nostro DNS Server. Ci baseremo sull&#8217;<a href=\"https:\/\/hub.docker.com\/r\/ubuntu\/bind9\">immagine ufficiale<\/a> di Bind9 mantenuta da Canonical.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-12a240f akihiro-widget akihiro-widget-heading\" data-id=\"12a240f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h5 class=\"akihiro-heading-title akihiro-size-default\">Creazione del Docker file<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-92fa963 akihiro-widget akihiro-widget-text-editor\" data-id=\"92fa963\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Creiamo quindi il seguente Docker file.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-079f31c akihiro-widget akihiro-widget-code-highlight\" data-id=\"079f31c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language- \">\n\t\t\t\t<code readonly=\"true\" class=\"language-\">\n\t\t\t\t\t<xmp>FROM ubuntu\/bind9:latest\n\nRUN apt-get update && apt-get upgrade -y\n\nCOPY custom-config\/named.conf.options \/etc\/bind\/\nCOPY custom-config\/named.conf.local \/etc\/bind\/\nCOPY custom-config\/db.bushido-foundation.com \/etc\/bind\/zones\/<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-040b231 akihiro-widget akihiro-widget-heading\" data-id=\"040b231\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h5 class=\"akihiro-heading-title akihiro-size-default\">Creazione del docker-compose.yml<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-b0b81ae akihiro-widget akihiro-widget-text-editor\" data-id=\"b0b81ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Con il seguente docker-compose.yml possiamo eseguire la build dell&#8217;immagine Docker ed istanziare un container con questi dettagli:<\/p><ul><li>Container name: bushido-bind9<\/li><li>IP: 172.100.0.2<\/li><\/ul><p>Questo container sar\u00e0 collegato alla seguente Docker network:<\/p><ul><li>Network name: bushido-network<\/li><li>Subnet: 172.100.0.0\/24<\/li><li>Gateway: 172.100.0.1<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-e6832e5 akihiro-widget akihiro-widget-code-highlight\" data-id=\"e6832e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language- \">\n\t\t\t\t<code readonly=\"true\" class=\"language-\">\n\t\t\t\t\t<xmp>version: \"3.8\"\n\nservices:\n\n  bind9:\n    build: .\n    image: bind9:latest\n    container_name: bushido-bind9\n    restart: always\n    privileged: true\n    networks:\n      bushido-network:\n        ipv4_address: 172.100.0.2\n\nnetworks:\n  bushido-network:\n    name: bushido-network\n    driver: bridge\n    ipam:\n      config:\n        - subnet: 172.100.0.0\/24\n          gateway: 172.100.0.1<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-44ee7c2 akihiro-widget akihiro-widget-heading\" data-id=\"44ee7c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Test di funzionalit\u00e0<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-778cb4a akihiro-widget akihiro-widget-heading\" data-id=\"778cb4a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h5 class=\"akihiro-heading-title akihiro-size-default\">Build dell'immagine<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-db3f69b akihiro-widget akihiro-widget-text-editor\" data-id=\"db3f69b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Come prima cosa eseguiamo la build dell&#8217;immagine Docker e relativo istanziamento del container bushido-bind9. Lanciamo quindi il seguente comando:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-607d3db akihiro-widget akihiro-widget-code-highlight\" data-id=\"607d3db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>sudo docker-compose up --build -d<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-2a1eef0 akihiro-widget akihiro-widget-heading\" data-id=\"2a1eef0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h5 class=\"akihiro-heading-title akihiro-size-default\">Lancio di due container host<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-104a525 akihiro-widget akihiro-widget-text-editor\" data-id=\"104a525\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ora possiamo lanciare due container host rispettivamente con IP 172.100.0.3 e 172.100.0.4 che fungeranno da test per verificare il corretto funzionamento del nostro DNS Server containerizzato. Lanciamo quindi questi due comandi:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-4304242 akihiro-widget akihiro-widget-code-highlight\" data-id=\"4304242\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>sudo docker run -d --rm --name=host1 --net=bushido-network --ip=172.100.0.3 --dns=172.100.0.2 ubuntu:22.04 \/bin\/bash -c \"while :; do sleep 10; done\"\nsudo docker run -d --rm --name=host2 --net=bushido-network --ip=172.100.0.4 --dns=172.100.0.2 ubuntu:22.04 \/bin\/bash -c \"while :; do sleep 10; done\"<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-1cbc55c akihiro-widget akihiro-widget-text-editor\" data-id=\"1cbc55c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Colleghiamoci quindi al container denominato host1:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-5b6c6e0 akihiro-widget akihiro-widget-code-highlight\" data-id=\"5b6c6e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>sudo docker exec -it host1 \/bin\/bash<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-883f876 akihiro-widget akihiro-widget-text-editor\" data-id=\"883f876\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Una volta a bordo della macchina host1 provvediamo ad installare il comando ping<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-6d62570 akihiro-widget akihiro-widget-code-highlight\" data-id=\"6d62570\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>apt update\napt install iputils-ping<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-2733481 akihiro-widget akihiro-widget-text-editor\" data-id=\"2733481\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ora siamo pronti per provare a pingare l&#8217;host2 e verificare la corretta risoluzione dei nomi da parte del nostro DNS Server<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-02e9ec5 akihiro-widget akihiro-widget-code-highlight\" data-id=\"02e9ec5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>ping host2.bushido-foundation.com<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-e191353 akihiro-widget akihiro-widget-text-editor\" data-id=\"e191353\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Se otteniamo la seguente risposta, tutto \u00e8 andato per il verso giusto.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-c6be542 akihiro-widget akihiro-widget-code-highlight\" data-id=\"c6be542\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>PING host2.bushido-foundation.com (172.100.0.4) 56(84) bytes of data.\n64 bytes from f4d843e21c53 (172.100.0.4): icmp_seq=1 ttl=64 time=0.059 ms\n64 bytes from f4d843e21c53 (172.100.0.4): icmp_seq=2 ttl=64 time=0.060 ms<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Quando si sviluppano sistemi distribuiti, pi\u00f9 applicazioni possono eseguire chiamate per comunicare tra loro. Un esempio molto frequente sono le chiamate tramite API RESTful. Nella maggior parte dei casi queste chiamate usano localhost come nome di dominio, poich\u00e9 l&#8217;host \u00e8 la propria macchina locale. La risoluzione dei nomi negli ambienti Linux \u00e8 descritta nel file [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[27,20,19],"class_list":["post-1497","post","type-post","status-publish","format-standard","hentry","category-sistemistica","tag-docker","tag-linux","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1497","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/comments?post=1497"}],"version-history":[{"count":19,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1497\/revisions"}],"predecessor-version":[{"id":1516,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1497\/revisions\/1516"}],"wp:attachment":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/media?parent=1497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/categories?post=1497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/tags?post=1497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}