Docker Ubuntu · 6 min read · Feb 05, 2026
Gestionar Contenedores de Linux con Docker en Ubuntu
Gestionar Contenedores de Linux con Docker en Ubuntu
Versión: 1.0
Autores: Srijan Kishore
Última edición: 02 /Jul/2014
Esta guía explica cómo instalar Docker y gestionar máquinas virtuales de manera efectiva. Docker es una plataforma de virtualización de Linux de código abierto para desarrolladores y administradores de sistemas para construir, desplegar y ejecutar aplicaciones distribuidas fácilmente. Docker consiste en el Docker Engine, una capa de ejecución y virtualización ligera, herramientas para empaquetar y versionar máquinas virtuales similar a un repositorio de código fuente y Docker Hub, un servicio en la nube para compartir aplicaciones y automatizar flujos de trabajo. Docker permite que las aplicaciones se ensamblen rápidamente a partir de componentes y elimina la fricción entre entornos de desarrollo, control de calidad y producción.
1 Nota Preliminar
En mi caso tengo Ubuntu 14.04 en el que voy a instalar docker. En el mercado de software de virtualización tenemos varias tecnologías de virtualización de hardware completo disponibles como KVM, Xen o Hyper-V. Pero las visualizaciones completas son demasiado pesadas para virtualizar aplicaciones individuales en Linux. Podemos superar esta situación utilizando Contenedores de Linux, que es una buena alternativa para la visualización a nivel de sistema operativo. Los Contenedores de Linux son muy útiles para tener un entorno de desarrollo/prueba en un conjunto seguro de contenedores. Docker proporciona un entorno de Contenedor de Linux para este propósito.
2 Instalación
Como mencioné anteriormente, tengo Ubuntu en el que voy a instalar docker. En este capítulo te mostraré 2 opciones para instalar docker, en 2a utilizo la versión de docker del repositorio de Ubuntu, esta versión es mantenida por Ubuntu durante los 5 años completos de soporte LTS, pero no es la última versión. En 2b usaré la última versión del repositorio ppa de Ubuntu. Dado que docker está en un desarrollo intenso, la última versión de Docker de 2b) probablemente se adapte a la mayoría de los usuarios. ¡Por favor, utiliza el método 2a o 2b pero no ambos al mismo tiempo!
2a Instalar desde el repositorio oficial de Ubuntu
Para instalar usa:
sudo apt-get update
sudo apt-get install docker.ioy crea un enlace simbólico para facilitar su uso en la terminal.
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io2b Instalar la última versión de docker
Para instalar la última versión de docker desde el repositorio docker.io, ejecuta este comando
curl -s https://get.docker.io/ubuntu/ | sudo sh3 Preparar el entorno de la terminal
Ahora agregaré mi usuario=srijan al grupo docker
sudo usermod -a -G docker srijanO usa:
sudo usermod -a -G docker $USERAquí cerraré mi sesión actual y volveré a iniciar sesión. Ahora agregaré el archivo de configuración de docker para notificar al sistema sobre su ubicación.
sudo vi /etc/default/docker.io| DOCKER="/usr/bin/docker.io" |
Ahora reinicia el servicio de la siguiente manera:
sudo service docker.io restart4 Gestión de Contenedores
Voy a iniciar un contenedor con el sistema operativo Ubuntu. Descargaré la imagen de docker de la siguiente manera:
docker pull ubuntu Nota: pull se utiliza para obtener una imagen o un repositorio del registro Ahora iniciaré sesión en la terminal bash del contenedor ubuntu usando:
docker run -i -t ubuntu /bin/bashSolo para confirmar, verificaré mi IP de contenedor de la siguiente manera:
root@fd98ee950252:/# ifconfig
eth0 Link encap:Ethernet HWaddr 5a:a6:c6:88:f2:48
inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::58a6:c6ff:fe88:f248/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:7 errors:0 dropped:2 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:558 (558.0 B) TX bytes:648 (648.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@fd98ee950252:/#Tengo una IP de 172.17.0.3 en mi contenedor. De manera similar, también puedo usar otros contenedores. Para salir del contenedor, simplemente escribe:
exitDe manera similar, puedes tener otros contenedores de SO, por ejemplo.
Quiero usar un contenedor Debian, usaré el código:
docker run -i -t debian /bin/bashSi deseas tener una distribución particular, entonces usa:
docker run -i -t ubuntu:12.04 /bin/bashCreará el contenedor ubuntu12.04. Lo verificaré de la siguiente manera:
root@44b56100fd1f:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
root@44b56100fd1f:/#4 Construyendo nuestras propias imágenes
Hay dos formas de crear una imagen de Docker:
- A través del comando docker commit
- A través del comando docker build con un Dockerfile
El método docker commit no se recomienda actualmente, ya que construir con un Dockerfile es mucho más flexible y poderoso, pero lo demostraremos por el bien de la completitud. Después de eso, me centraré en el método recomendado para construir imágenes de Docker: escribir un Dockerfile y usar el comando docker build.
4.1 Usando Docker commit para crear imágenes
Crearé un contenedor, haré cambios en ese contenedor como lo harías al cambiar código, y luego comprometeré esos cambios a una nueva imagen.
Comencemos creando un contenedor a partir de la imagen de ubuntu que hemos utilizado en el pasado.
docker run -i -t ubuntu /bin/bash
root@73527b8b4261:/#Nota: Por favor, observa que arriba root está mostrando el nombre de host 73527b8b4261, es el nombre del contenedor creado y diferirá en tu caso.Además, instalaré apache en él:
apt-get install apache2He lanzado el contenedor y luego instalé Apache dentro de él. Ahora voy a usar este contenedor como un servidor web, así que lo guardaré en su estado actual.
Eso nos ahorrará tener que reconstruirlo con Apache cada vez que cree un nuevo contenedor. Para hacer esto, saldré del contenedor, usando el comando exit,
y usaré el comando docker commit.
exitdocker commit 73527b8b4261 srijan/apache2 8ce0ea7a1528Nota: aquí 73527b8b4261 es el nombre de mi contenedor y estoy usando 8ce0ea7a1528 como etiqueta para el contenedor, puedes dar cualquier nombre de etiqueta o usar el mismo.
Supongamos que olvidaste el id del último contenedor creado, puedes usar:
docker ps -l -qTe dará 73527b8b4261
Nota: 73527b8b4261 es el nombre de tu último contenedor creado, diferirá en tu caso.*Veamos nuestra nueva imagen. Se puede lograr de la siguiente manera:
docker images srijan/apache2srijan@vboxtest:~$ docker images srijan/apache2
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
srijan/apache2 8ce0ea7a1528 741155868ac8 6 minutes ago 207.2 MB
srijan@vboxtest:~$Nota: Aquí 8ce0ea7a1528 fue el nombre de etiqueta que usé al guardar el contenedor,
Nota: 741155868ac8 es el ID de la IMAGEN de ese contenedor
Nota: Todos estos valores diferirán en tu caso, ya que al guardar el contenedor docker genera nombres aleatorios para ellosAhora guardaré la imagen personalizada de la siguiente manera:
docker commit -m="Una nueva imagen personalizada" --author="Srijan Kishore" 73527b8b4261 srijan/apache2:webserver Te dará el resultado como:
srijan@vboxtest:~$ docker commit -m="Una nueva imagen personalizada" --author="Srijan Kishore" 73527b8b4261 srijan/apache2:webserver
f0367362eb405c513ac002b5cf172a2c0bc6c8212eab91c613f9ee611cf92fecPara ejecutar un contenedor a partir de nuestra nueva imagen, podemos hacerlo usando el comando docker run.
docker run -t -i srijan/apache2:webserver /bin/bashPodemos verificar nuestra imagen comprometida de la siguiente manera:
docker inspect srijan/apache2:webserversrijan@vboxtest:~$ docker inspect srijan/apache2:webserver
[{
"Architecture": "amd64",
"Author": "Srijan Kishore",
"Comment": "Una nueva imagen personalizada",
"Config": {
"AttachStderr": false,
"AttachStdin": false,
"AttachStdout": false,
"Cmd": [
"/bin/bash"
],
"CpuShares": 0,
"Cpuset": "",
"Domainname": "",
"Entrypoint": null,
"Env": [
"HOME=/",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"ExposedPorts": null,
"Hostname": "",
"Image": "",
"Memory": 0,
"MemorySwap": 0,
"NetworkDisabled": false,
"OnBuild": null,
"OpenStdin": false,
"PortSpecs": null,
"StdinOnce": false,
"Tty": false,
"User": "",
"Volumes": null,
"WorkingDir": ""
},
"Container": "73527b8b42614f6ecd83fb5f9822d6086988d3b68fd5e32b4afbc7cd415402fd",
"ContainerConfig": {
"AttachStderr": true,
"AttachStdin": true,
"AttachStdout": true,
"Cmd": [
"/bin/bash"
],
"CpuShares": 0,
"Cpuset": "",
"Domainname": "",
"Entrypoint": null,
"Env": [
"HOME=/",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"ExposedPorts": null,
"Hostname": "73527b8b4261",
"Image": "ubuntu",
"Memory": 0,
"MemorySwap": 0,
"NetworkDisabled": false,
"OnBuild": null,
"OpenStdin": true,
"PortSpecs": null,
"StdinOnce": true,
"Tty": true,
"User": "",
"Volumes": null,
"WorkingDir": ""
},
"Created": "2014-06-30T12:58:04.973349049Z",
"DockerVersion": "1.0.1",
"Id": "f0367362eb405c513ac002b5cf172a2c0bc6c8212eab91c613f9ee611cf92fec",
"Os": "linux",
"Parent": "ef83896b7fb99b00b9e0e6ac943826386e7edcef11a3a2f58b42011ab4a4e683",
"Size": 14463026
}
]srijan@vboxtest:~$Para ejecutar un contenedor a partir de nuestra nueva imagen, podemos hacerlo usando el comando docker run.
docker run -t -i srijan/apache2:webserver /bin/bashRecibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.