{"id":30,"date":"2016-05-18T11:43:54","date_gmt":"2016-05-18T11:43:54","guid":{"rendered":"http:\/\/blog.exorcito.com\/?p=30"},"modified":"2017-04-18T07:29:20","modified_gmt":"2017-04-18T07:29:20","slug":"primeros-pasos-con-docker-tras-un-proxy","status":"publish","type":"post","link":"https:\/\/blog.alorenzo.es\/?p=30","title":{"rendered":"Primeros pasos con Docker tras un Proxy"},"content":{"rendered":"<h2><strong>Introducci\u00f3n<\/strong><\/h2>\n<p>Hay millones de art\u00edculos explicando Docker, que son los contenedores y como hacerlos funcionar. En estos art\u00edculos el objetivo es hacer una peque\u00f1a\u00a0gu\u00eda de como realizar algunas tareas que tal vez no est\u00e9n claras o requieran ejemplos para mejorar la comprensi\u00f3n.<\/p>\n<p><!--more--><\/p>\n<h2><\/h2>\n<h2><b>Definir el Proxy para APT<\/b><\/h2>\n<p>En este ejemplo voy a instalar Docker en Ubuntu mediante el gestor de paquetes apt. El problema que tengo es que estoy tras un proxy y para ello necesito hacer algunos cambios previos. Sino estas tras un proxy no es necesario hacerlo.<\/p>\n<p>He a\u00f1adido el proxy con un simple echo al gestor de paquetes.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">alberto@ansible-master:\/$\u00a0echo \"Acquire::http::Proxy\u00a0\"http:\/\/userproxy:passproxy@urlproxy:80\" &gt;&gt; \/etc\/apt\/apt.conf<\/pre>\n<p>Hacemos una simple verificaci\u00f3n<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">alberto@ansible-master:\/etc\/apt$ cat apt.conf\r\nAcquire::http::Proxy \"http:\/\/userproxy:passproxy@urlproxy:80\";<\/pre>\n<h2><\/h2>\n<h2><strong>Instalar Docker<\/strong><\/h2>\n<p>Lo primero es verificar que Docker no lo tenemos ya instalado. Para ello vamos a hacer un <em><strong>docker-run hello-world<\/strong> <\/em>que lo que hace es cargar una imagen hola mundo y nos servir\u00e1 para testear que Docker funciona correctamente.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">alberto@ansible-master:~$ docker run hello-world\r\nEl programa \u00abdocker\u00bb no est\u00e1 instalado. Puede instalarlo escribiendo:\r\nsudo apt install docker.io\r\nalberto@ansible-master:~$<\/pre>\n<p>Como veis no lo tenemos instalado, ya nos sugiere el comando para instalarlo. Por tanto vamos a ello:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">alberto@ansible-master:~$ sudo apt install docker.io\r\nLeyendo lista de paquetes... Hecho\r\nCreando \u00e1rbol de dependencias\r\nLeyendo la informaci\u00f3n de estado... Hecho\r\nSe instalar\u00e1n los siguientes paquetes adicionales:\r\n  bridge-utils cgroupfs-mount containerd runc ubuntu-fan\r\nPaquetes sugeridos:\r\n  mountall aufs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils\r\nSe instalar\u00e1n los siguientes paquetes NUEVOS:\r\n  bridge-utils cgroupfs-mount containerd docker.io runc ubuntu-fan\r\n0 actualizados, 6 nuevos se instalar\u00e1n, 0 para eliminar y 0 no actualizados.\r\nSe necesita descargar 16,4 MB de archivos.\r\nSe utilizar\u00e1n 83,6 MB de espacio de disco adicional despu\u00e9s de esta operaci\u00f3n.\r\n\u00bfDesea continuar? [S\/n]\r\nDes:1 http:\/\/es.archive.ubuntu.com\/ubuntu xenial\/main amd64 bridge-utils amd64 1.5-9ubuntu1 [28,6 kB]\r\nDes:2 http:\/\/es.archive.ubuntu.com\/ubuntu xenial\/universe amd64 cgroupfs-mount all 1.2 [4.970 B]\r\nDes:3 http:\/\/es.archive.ubuntu.com\/ubuntu xenial-updates\/universe amd64 runc amd64 1.0.0~rc2-0ubuntu2~16.04.1 [1.476 kB]\r\nDes:4 http:\/\/es.archive.ubuntu.com\/ubuntu xenial-updates\/universe amd64 containerd amd64 0.2.5-0ubuntu1~16.04.1 [4.041 kB]\r\nDes:5 http:\/\/es.archive.ubuntu.com\/ubuntu xenial-updates\/universe amd64 docker.io amd64 1.12.6-0ubuntu1~16.04.1 [10,8 MB]\r\nDes:6 http:\/\/es.archive.ubuntu.com\/ubuntu xenial-updates\/main amd64 ubuntu-fan all 0.9.2 [30,7 kB]\r\nDescargados 16,4 MB en 11s (1.469 kB\/s)\r\nSeleccionando el paquete bridge-utils previamente no seleccionado.\r\n(Leyendo la base de datos ... 117333 ficheros o directorios instalados actualmente.)\r\nPreparando para desempaquetar ...\/bridge-utils_1.5-9ubuntu1_amd64.deb ...\r\nDesempaquetando bridge-utils (1.5-9ubuntu1) ...\r\nSeleccionando el paquete cgroupfs-mount previamente no seleccionado.\r\nPreparando para desempaquetar ...\/cgroupfs-mount_1.2_all.deb ...\r\nDesempaquetando cgroupfs-mount (1.2) ...\r\nSeleccionando el paquete runc previamente no seleccionado.\r\nPreparando para desempaquetar ...\/runc_1.0.0~rc2-0ubuntu2~16.04.1_amd64.deb ...\r\nDesempaquetando runc (1.0.0~rc2-0ubuntu2~16.04.1) ...\r\nSeleccionando el paquete containerd previamente no seleccionado.\r\nPreparando para desempaquetar ...\/containerd_0.2.5-0ubuntu1~16.04.1_amd64.deb ...\r\nDesempaquetando containerd (0.2.5-0ubuntu1~16.04.1) ...\r\nSeleccionando el paquete docker.io previamente no seleccionado.\r\nPreparando para desempaquetar ...\/docker.io_1.12.6-0ubuntu1~16.04.1_amd64.deb ...\r\nDesempaquetando docker.io (1.12.6-0ubuntu1~16.04.1) ...\r\nSeleccionando el paquete ubuntu-fan previamente no seleccionado.\r\nPreparando para desempaquetar ...\/ubuntu-fan_0.9.2_all.deb ...\r\nDesempaquetando ubuntu-fan (0.9.2) ...\r\nProcesando disparadores para man-db (2.7.5-1) ...\r\nProcesando disparadores para ureadahead (0.100.0-19) ...\r\nProcesando disparadores para systemd (229-4ubuntu16) ...\r\nConfigurando bridge-utils (1.5-9ubuntu1) ...\r\nConfigurando cgroupfs-mount (1.2) ...\r\nConfigurando runc (1.0.0~rc2-0ubuntu2~16.04.1) ...\r\nConfigurando containerd (0.2.5-0ubuntu1~16.04.1) ...\r\nConfigurando docker.io (1.12.6-0ubuntu1~16.04.1) ...\r\nA\u00f1adiendo el grupo `docker' (GID 120) ...\r\nHecho.\r\nConfigurando ubuntu-fan (0.9.2) ...\r\nProcesando disparadores para systemd (229-4ubuntu16) ...\r\nProcesando disparadores para ureadahead (0.100.0-19) ...\r\n<\/pre>\n<p>Bien, ya tenemos docker instalado pero dado que no queremos ejecutar las cosas como <strong>root<\/strong>, vamos a a\u00f1adir nuestro usuario <strong>al grupo docker<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">alberto@ansible-master:~$ sudo usermod -aG docker $(whoami)\r\n<\/pre>\n<p>Volvemos a cargar nuestro comando <strong><em>docker run hello-world<\/em><\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">alberto@ansible-master:~$ docker run hello-world\r\nUnable to find image 'hello-world:latest' locally\r\nPulling repository docker.io\/library\/hello-world\r\ndocker: Error while pulling image: Get https:\/\/index.docker.io\/v1\/repositories\/library\/hello-world\/images: dial tcp: lookup index.docker.io on 10.70.219.100:53: no such host.<\/pre>\n<p>Bien, como vemos tenemos un problema de conexi\u00f3n y es debido nuevamente al proxy. Tenemos que definir el proxy para Docker antes de poder continuar.<\/p>\n<h2><\/h2>\n<h2><strong>Definir el Proxy en Docker<\/strong><\/h2>\n<p>Para ello creamos esta carpeta:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">mkdir \/etc\/systemd\/system\/docker.service.d\r\n<\/pre>\n<p>Dentro de la carpeta creamos un fichero <strong>http-proxy.conf<\/strong> con los siguientes datos<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">\r\nalberto@ansible-master:~% cat \/etc\/systemd\/system\/docker.service.d\/http-proxy.conf\r\n\r\n[Service]\r\nEnvironment=\"HTTP_PROXY=http:\/\/userproxy:passproxy@urlproxy:80\"<\/pre>\n<p>Relanzamos para que lo tome en cuenta<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">sudo systemctl daemon-reload\r\nsudo systemctl restart docker<\/pre>\n<p>Verificamos que esta cargado el proxy en la configuraci\u00f3n:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$ sudo systemctl show --property Environment docker\r\nEnvironment=HTTP_PROXY=http:\/\/userproxy:passproxy@urlproxy:80\/<\/pre>\n<p>&nbsp;<\/p>\n<h2><strong>Ejecutando nuestro primer contenedor<\/strong><\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">alberto@ansible-master:~$ docker run hello-world\r\nUnable to find image 'hello-world:latest' locally\r\nlatest: Pulling from library\/hello-world\r\n78445dd45222: Pull complete\r\nDigest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7\r\nStatus: Downloaded newer image for hello-world:latest\r\n\r\nHello from Docker!\r\nThis message shows that your installation appears to be working correctly.\r\n\r\nTo generate this message, Docker took the following steps:\r\n 1. The Docker client contacted the Docker daemon.\r\n 2. The Docker daemon pulled the \"hello-world\" image from the Docker Hub.\r\n 3. The Docker daemon created a new container from that image which runs the\r\n    executable that produces the output you are currently reading.\r\n 4. The Docker daemon streamed that output to the Docker client, which sent it\r\n    to your terminal.\r\n\r\nTo try something more ambitious, you can run an Ubuntu container with:\r\n $ docker run -it ubuntu bash\r\n\r\nShare images, automate workflows, and more with a free Docker ID:\r\n https:\/\/cloud.docker.com\/\r\n\r\nFor more examples and ideas, visit:\r\n https:\/\/docs.docker.com\/engine\/userguide\/<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Hay millones de art\u00edculos explicando Docker, que son los contenedores y como hacerlos funcionar. En estos art\u00edculos el objetivo es hacer una peque\u00f1a\u00a0gu\u00eda de como realizar algunas tareas que tal vez no est\u00e9n claras o requieran ejemplos para mejorar la comprensi\u00f3n.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-30","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=\/wp\/v2\/posts\/30","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=30"}],"version-history":[{"count":6,"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=\/wp\/v2\/posts\/30\/revisions"}],"predecessor-version":[{"id":37,"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=\/wp\/v2\/posts\/30\/revisions\/37"}],"wp:attachment":[{"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=30"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=30"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alorenzo.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}