SeminarioInformatica
jueves, 10 de diciembre de 2015
trabajando en Docker
Un cordial saludo al profesor Juan Jose Diaz Nerio y a nuestros compañeros de la materia.
Nota: todo este material es confines educativos tomado de referencia de otras paginas y de la fuente oficial.
lunes, 30 de noviembre de 2015
Conceptos basicos Docker
Algunos conceptos básicos:
Images
Una imagen es una especie de plantilla, una captura del
estado de un contenedor. Ya comenté que un contenedor no es una máquina
virtual, pero para que te hagas una idea, podríamos decir que una imagen de un
contenedor es como un snapshot de
una máquina virtual, pero mucho mucho más ligero.
DockerFile
Es un archivo de configuración que se utiliza para crear
imágenes. En dicho archivo indicamos qué es lo que queremos que tenga la
imagen, y los distintos comandos para instalar las herramientas. Esto sería un
ejemplo de DockerFile para tener una imagen de Ubuntu con Git instalado:
Y aquí podemos ver un ejemplo de lo que te decía antes, de
que normalmente creamos imágenes modificando otras imágenes padre. En este
DockerFile, le estamos indicando a Docker que tome la imagen ubuntu:14.04 y
sobre ella crearemos la nuestra, instalando git por consola.
Ejecutando el comando docker build sobre ese DockerFile, se
nos creará la imagen correspondiente, lista para crear un contenedor.
Containers
Son instancias en ejecución de una imagen. Son los que ejecutan cosas, los que ejecutarán nuestra aplicación. El concepto de contenedor es como si restauráramos una máquina virtual a partir de un snapshot.
Son instancias en ejecución de una imagen. Son los que ejecutan cosas, los que ejecutarán nuestra aplicación. El concepto de contenedor es como si restauráramos una máquina virtual a partir de un snapshot.
A partir de una única imagen, podemos ejecutar varios
contenedores.
Como podrás deducir a partir de la imagen anterior, esto es
una buena manera de tener copias de tu aplicación ejecutándose en varios
contenedores, para luego, a través de balanceadores de carga, distribuir los
accesos a tu aplicación, y ofrecer servicios con más garantías y con menos
carga de peticiones en cada contenedor.
Como las imágenes no cambian, si creas un contenedor a
partir de una imagen, y mientras que se está ejecutando el contenedor cambias
algo o instalas alguna herramienta, al parar dicho contenedor y después volver
a ejecutar otra vez la misma imagen, esos cambios no se verán reflejados.
Docker va trackeando los cambios en los contenedores como si
fuera una herramienta de control de versiones, por lo que si realmente deseas
esos cambios, haciendo un commit del contenedor puedes crear otra imagen que
contenga dichos cambios.
Por lo tanto otro beneficio de Docker, es el versionado de
los contenedores. Si algo va mal en nuestra aplicación, podremos volver de
forma sencilla a una versión anterior del contenedor, a una versión anterior
del entorno.
Volumes
No es una buena práctica guardar los datos persistentes
dentro de un contenedor de Docker. Para eso están los volúmenes, fuera de los
contenedores. Así podremos crear y borrar contenedores sin preocuparnos por que
se borren los datos.
Además los volúmenes se utilizan para compartir datos entre
contenedores.
Links
Sirven para enlazar contenedores entre sí, que están dentro
de una misma máquina, sin exponer a los contenedores cuáles son los datos de la
máquina que los contiene.
Comandos básicos de Docker
Docker y el uso de la línea de comandos
Tras la instalación, el demonio Docker debe estar ejecutándose en segundo plano, listo para aceptar comandos enviados por el cliente de la línea de comandos de Docker. Para ciertas situaciones en las que podría ser necesario ejecutar manualmente Docker, utiliza lo siguiente.
Ejecutar el demonio Docker:
sudo docker -d &
Uso del cliente de la línea de comandos de Docker:
sudo docker [opción] [comando] [argumentos]
Nota: Docker necesita privilegios de administrador para poder trabajar.
Comandos de Docker
He aquí un resumen actual (versión 0.7.1) de los comandos de Docker:
attach
Adjunta a un contenedor corriendo
build
Construye un contenedor de un archivo Docker
commit
Crea una nueva imagen de los cambios del contenedor
cp
Copia archivos/carpetas de los contenedores del sistema de archivos a la ruta de host
diff
Inspecciona los cambios en el sistema de archivos de un contenedor
events
Obtiene eventos en tiempo real desde el servidor
export
Transmite el contenido de un contenedor como un archivo tar
history
Muestra el historial de una imagen
images
Lista las imágenes
import
Crea una nueva imagen del sistema de archivos de los contenidos a partir de un archivo tar
info
Muestra el sistema de información de la pantalla
insert
Inserta un archivo en una imagen
inspect
Regresa información de bajo nivel en un contenedor
kill
Mata a un contenedor en ejecución (corriendo)
load
Carga una imagen desde un archivo tar
login
Registra la sesión para el servidor de registro de Docker
logs
Obtiene los registros de un contenedor
port
Busca el puerto público el cual está NAT-eado y lo hace privado (PRIVATE_PORT)
ps
Lista los Contenedores
pull
Descarga una imagen o un repositorio del servidor de registros Docker
push
Empuja una imagen o un repositorio del servidor de registro Docker
restart
Reinicia un contenedor en ejecución (corriendo)
rm
Elimina uno o más contenedores
rmi
Elimina una o más imágenes
run
Ejecuta un comando en un contenedor
save
Guarda una imagen en un archivo tar
search
Busca una imagen en el índice de Docker
start
Inicia un contenedor detenido
stop
Detiene un contenedor en ejecución (corriendo)
tag
Etiqueta una imagen en un repositorio
top
Busca los procesos en ejecución de un contenedor
versión
Muestra la información de versión de Docker
¿Qué son los Dockerfile?
Dockerfiles son scripts que contienen comandos declarados sucesivamente que serán ejecutados, en el orden dado, por Docker para crear automáticamente una nueva imagen Docker. Estos ayudan en gran medida durante los despliegues.
Estos archivos siempre comienzan con la definición de una imagen base utilizando el comando FROM. A partir de ahí, el proceso de construcción se inicia y cada siguiente acción tomada forma finalizando con commits (guardando el estado de imagen) en el host.
Uso:
# Construir una imagen mediante el archivo Dockerfile en la ubicación actual
# Marcar la imagen final con [nombre] (por ejemplo, *nginx*)
# Ejemplo: sudo docker build -t [nombre] .
sudo docker build -t memcached_img .
Nota: Para obtener más información sobre archivos Dockerfiles, echa un vistazo a nuestro artículo:Explicando Docker: El Uso de archivos Dockerfiles para automatizar la creación de imágenes.
Información general sobre comandos Dockerfile
Add
Copia un archivo desde el host en el contenedor
CMD
Configura comandos por defecto para ser ejecutado, o se pasa al punto de entrada ENTRYPOINT
ENTRYPOINT
Ajusta el punto de entrada por defecto de la aplicación desde el contenedor
ENV
Inicializa variables de entorno (por ejemplo, "clave=valor")
EXPOSE
Expone un puerto al exterior
FROM
Configura la imagen base para usar
MAINTAINER
Establece los datos de autor/propietario del archivo Dockerfile
RUN
Ejecuta un comando y cambia (commit) el resultado de la la imagen final (contenedor)
USER
Establece el usuario para ejecutar los contenedores de la imagen
VOLUMEN
Monta un directorio desde el host al contenedor
WORKDIR
Establece el directorio para las directivas de CMD que se ejecutarán
Creación de un archivo Dockerfile
Dado que los archivos Dockerfile son documentos de texto sin formato, puedes crear uno desde tu editor de texto favorito y escribir los comandos que deseas que Docker ejecute con el fin de construir una imagen. Después de empezar a trabajar en el archivo, continúa con la adición de todo el contenido a continuación (uno tras otro) antes de guardar el resultado final.
Nos gusto mucho este material explica como usar el repositorio de Docker:
https://picodotdev.github.io/blog-bitix/2015/07/crear-y-usar-un-repositorio-en-docker-hub/
jueves, 26 de noviembre de 2015
Suscribirse a:
Entradas (Atom)