{"id":2762,"date":"2018-03-15T15:13:05","date_gmt":"2018-03-15T19:13:05","guid":{"rendered":"http:\/\/arielantigua.com\/weblog\/?p=2762"},"modified":"2018-03-16T11:17:11","modified_gmt":"2018-03-16T15:17:11","slug":"ubuntu-lxd-alternativa-ligera","status":"publish","type":"post","link":"https:\/\/arielantigua.com\/weblog\/2018\/03\/ubuntu-lxd-alternativa-ligera\/","title":{"rendered":"Ubuntu LXD, Alternativa ligera?"},"content":{"rendered":"<p>Ubuntu LXD, Alternativa ligera?<\/p>\n<p>Containers!<\/p>\n<figure style=\"width: 318px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-640536httpgaleriaarielantiguacomvarresizesArielAntiguaCloudPhysicsStorageAnalitycsDatastoreSpaceDataStoreSpaceVMdetailsjpgm\" src=\"https:\/\/linuxcontainers.org\/static\/img\/containers.png\" width=\"318\" height=\"293\" \/><figcaption class=\"wp-caption-text\">LXD<\/figcaption><\/figure>\n<p>Si se hace una b\u00fasqueda en Internet relacionada a Docker, contenedores y dem\u00e1s, podremos notar que se ha convertido en algo muy aceptado. Desde hace un tiempo estoy sacando provecho de Docker en mi NAS. unRAID es actualmente mi sistema de preferencia para servicios de filesharing y un beneficio adicional es la facilidad con la que se pueden lanzar contenedores con Docker y tener servicios funcionales y f\u00e1ciles de mantener.<\/p>\n<p>Pero en este post me gustar\u00eda hablar de <a href=\"https:\/\/linuxcontainers.org\/lxd\/introduction\/\" target=\"_blank\" rel=\"noopener\"><strong>LXD<\/strong><\/a>, esto es un desarrollo realizado por <strong>Canonical<\/strong>, los creadores de Ubuntu. Durante un tiempo, no era atra\u00eddo por esta distribuci\u00f3n de Linux, pero eso est\u00e1 cambiando gracias a las utilidades que han creado y liberado para la comunidad. Todo comenz\u00f3 con LXC, lo us\u00e9 para solucionar un impase en una implementaci\u00f3n relacionada al manejo de datos .xml que necesitaban ser recibidos de manera segura, el proveedor solicitaba SFTP en un entorno aislado, en ese momento prob\u00e9 <strong>LXC<\/strong> y se crearon varios contenedores para cada proveedor. Todo funciono de maravilla y decid\u00ed seguir investigando.<\/p>\n<p>De manera casi inmediata encontr\u00e9 un caso de uso para tenerlo en mi casa y este fue, tener peque\u00f1os Ubuntus corriendo servicios claves (DNS, MySQL, PHP, AD Blocking\u2026), todo fue de maravilla. Hace unos d\u00edas pude terminar de completar una \u201cnueva m\u00e1quina\u201d con un board Mini-ITX + 6GB de RAM y varios SSD de tama\u00f1os entre 120GB y 60GB. Teniendo un consumo de apenas 20Watts, esta peque\u00f1a maquina es ideal para estar encendida 24\/7.<\/p>\n<p>Investigando la mejor manera de tener LXC, veo que Ubuntu ahora hace referencia a LXD como el siguiente paso de LXC, tomar en cuenta que LXD no es un reemplazo y es m\u00e1s que un complemento.<\/p>\n<p>Info: <a href=\"https:\/\/linuxcontainers.org\/lxd\/introduction\/#relationship-with-lxc\">https:\/\/linuxcontainers.org\/lxd\/introduction\/#relationship-with-lxc<\/a><\/p>\n<pre>\u201c LXD isn't a rewrite of LXC, in fact it's building on top of LXC to provide a new, better user experience. Under the hood, LXD uses LXC through liblxc and its Go binding to create and manage the containers.\r\n\r\nIt's basically an alternative to LXC's tools and distribution template system with the added features that come from being controllable over the network. \u201c<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Instalando LXD.<\/strong><\/p>\n<p>Los siguientes pasos son basados en el documento oficial de LinuxContainers en la secci\u00f3n de LXD:<\/p>\n<p>Nota: LXD puede ser instalado en las siguientes distribuciones:<\/p>\n<ul>\n<li>ArchLinux<\/li>\n<li>Fedora<\/li>\n<li>Gentoo<\/li>\n<li>Ubuntu<\/li>\n<li>Debian<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>En este caso he seleccionado Ubuntu por que deber\u00eda ser la distribuci\u00f3n mejor soportada, \u00bfcierto?<\/p>\n<pre>apt install lxd lxd-client\r\nsudo lxd init<\/pre>\n<p>&nbsp;<\/p>\n<p>Una serie de preguntas deben ser contestadas luego de ejecutar el <strong>lxd init<\/strong>. Siendo las m\u00e1s importantes la relacionada a redes, aqu\u00ed se podr\u00eda seleccionar crear un Bridge o utilizar uno ya existente, en mi caso opte por utilizar uno que ya hab\u00eda creado. La segunda opci\u00f3n con relevancia es el Storage, inicialmente seleccione <strong>dir<\/strong> como <strong>Storage backend<\/strong>, luego adicione un segundo disco usando <strong>ZFS<\/strong>.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Validando la instalaci\u00f3n de LXD.<\/strong><\/p>\n<p>Luego de realizar la instalaci\u00f3n podemos verificar que nuestro manejador de contenedores est\u00e1 operando de manera correcta con los siguientes comandos:<\/p>\n<pre><span style=\"font-family: Consolas, Monaco, monospace;\">lxc info<\/span>\r\n<span style=\"font-family: Consolas, Monaco, monospace;\">lxc image list - en un entorno reci\u00e9n instalado este comando no presenta informaci\u00f3n.<\/span>\r\n<span style=\"font-family: Consolas, Monaco, monospace;\">lxc storage list<\/span>\r\n<span style=\"font-family: Consolas, Monaco, monospace;\">lxc network list<\/span>\r\n<span style=\"font-family: Consolas, Monaco, monospace;\">lxc list \u2013 en un entorno reci\u00e9n instalado este comando no presenta informaci\u00f3n.<\/span><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Iniciando un contenedor.<\/strong><\/p>\n<p>Un nuevo contenedor puede ser creado desde una imagen, un contenedor existente o un snapshot. Por defecto LXD viene con tres repositorios de im\u00e1genes que podemos usar para crear contenedores.<\/p>\n<ul>\n<li>ubuntu<\/li>\n<li>ubuntu-daily<\/li>\n<li>images<\/li>\n<\/ul>\n<p>podemos investigar cuales im\u00e1genes est\u00e1n disponibles de la siguiente manera:<\/p>\n<p><strong><em>lxc image list ubuntu:<\/em><\/strong><\/p>\n<p>en pantalla nos mostrara la lista de im\u00e1genes disponibles para ser usadas, en este repositorio tenemos las versiones de Ubuntu.<\/p>\n<p>Si cambiamos \u201cubuntu:\u201d por \u201cubuntu-daily: podemos ver los snapshots generados diariamente. Si en lugar de Ubuntu usamos \u201cimages:\u201d, tendremos una lista de todas las distribuciones que han generado im\u00e1genes y enviado al repositorio de Linux Containers, incluyendo a Ubuntu.<\/p>\n<p>El resultado de este comando puede ser abrumador ya que contiene bastante informaci\u00f3n, en cambio si queremos ver la lista de una versi\u00f3n de Ubuntu o una distribuci\u00f3n espec\u00edfica, podemos hacer:<\/p>\n<p><strong><em>lxc image list ubuntu:xenial<\/em><\/strong><\/p>\n<p>De esta manera solo tendremos las im\u00e1genes de Xenial.<\/p>\n<p>Por otro lado, si queremos buscar im\u00e1genes de Debian:<\/p>\n<p><strong><em>lxc image list images:debian<\/em><\/strong><\/p>\n<p><strong><em>lxc image list images:debian\/9\/<\/em><\/strong><\/p>\n<p>&#8211;\u00a0 tendremos solo las versiones de <strong>Stretch<\/strong>.<\/p>\n<p>La lista de im\u00e1genes est\u00e1 disponible v\u00eda web en: <a href=\"https:\/\/uk.images.linuxcontainers.org\/\">https:\/\/uk.images.linuxcontainers.org\/<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Ya sabemos el nombre de la imagen que queremos usar como base de nuestro contenedor. Usando los siguientes comandos podemos crear contenedores.<\/p>\n<p><strong><em>lxc init ubuntu:xenial cont1<\/em><\/strong><\/p>\n<p>\u2013 un nuevo contenedor ser\u00e1 creado usando <strong>Xenial<\/strong> como base.<\/p>\n<p><strong><em>lxc launch ubuntu:xenial cont2<\/em><\/strong><\/p>\n<p>\u2013 a diferencia del anterior, de este modo podemos crear e inmediatamente iniciar el nuevo contenedor.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Interactuando con los contenedores.<\/strong><\/p>\n<p>Bien, ya tenemos nuestros contenedores. Necesitamos actualizarlo, instalar aplicaciones, usarlo tal cual usar\u00edamos un servidor en f\u00edsico o una m\u00e1quina virtual que ya conocemos y queremos.<\/p>\n<p><strong><em>lxc exec cont1 \u2013 bash<\/em><\/strong><\/p>\n<p>\u2013 inmediatamente ejecutado este comando estaremos en el contenedor llamado <strong>cont1<\/strong>, el acceso es otorgado directamente con permisos de <strong>root<\/strong>. En lo adelante todo es exactamente igual que cualquier instalaci\u00f3n de Ubuntu. Para salir del contenedor escribimos <strong>exit<\/strong>.<\/p>\n<p>&nbsp;<\/p>\n<p>Aqu\u00ed termina esta peque\u00f1a introducci\u00f3n a LXD, la capacidad de esta herramienta es bastante amplia, tengo varios planes y pruebas para realizar. Entre ella est\u00e1n tales como correr <a href=\"https:\/\/kubernetes.io\/\" target=\"_blank\" rel=\"noopener\"><strong>Kubernetes<\/strong> <\/a>en <strong>LXD<\/strong> o crear un <a href=\"https:\/\/docs.docker.com\/engine\/swarm\/\" target=\"_blank\" rel=\"noopener\"><strong>Docker Swarm<\/strong><\/a> usando contenedores en LXD y Raspberry Pi3.<\/p>\n<p>M\u00e1s informaci\u00f3n puede ser encontrada en:<\/p>\n<ul>\n<li><a href=\"https:\/\/linuxcontainers.org\/lxd\/introduction\/\">https:\/\/linuxcontainers.org\/lxd\/introduction\/<\/a><\/li>\n<li><a href=\"https:\/\/stgraber.org\/2016\/03\/11\/lxd-2-0-blog-post-series-012\/\">https:\/\/stgraber.org\/2016\/03\/11\/lxd-2-0-blog-post-series-012\/<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ubuntu LXD, Alternativa ligera? Containers! Si se hace una b\u00fasqueda en Internet relacionada a Docker, contenedores y dem\u00e1s, podremos notar que se ha convertido en algo muy aceptado. Desde hace un tiempo estoy sacando provecho de Docker en mi NAS. unRAID es actualmente mi sistema de preferencia para servicios de filesharing y un beneficio adicional [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,125,124],"tags":[127,126],"class_list":["post-2762","post","type-post","status-publish","format-standard","hentry","category-linux","category-lxd","category-ubuntu","tag-lxd","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/2762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/comments?post=2762"}],"version-history":[{"count":0,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/2762\/revisions"}],"wp:attachment":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/media?parent=2762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/categories?post=2762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/tags?post=2762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}