\documentclass[12pt,a4paper]{article}
\usepackage[spanish]{babel}
\usepackage[ddmmyyyy]{datetime}
\usepackage{hyperref}
\usepackage{graphicx}

\title{Ejercicio IV: Docker}
\author{Nicolás A. Ortega Froysa}

\begin{document}
\maketitle

\pagebreak

\section{Hoja De Control Del Documento}
\begin{table}[h!]
	\begin{center}
		\caption{Documento/Archivo}
		\label{tab:document}
		\begin{tabular}{|l|c|l|c|}
			\hline
			{\bf Fecha Última Modificación} & \today & {\bf Versión/Revisión} &
			v01r02 \\ \hline
			{\bf Fecha Creación} & 10/11/2021 & \hfill & \hfill \\ \hline
			{\bf Fecha Finalización} & \today & \hfill & \hfill \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\caption{Registro De Cambios}
		\label{tab:registro-cambios}
		\begin{tabular}{|c|c|c|}
			\hline
			{\bf Versión/Revisión} & {\bf Página(s)} & {\bf Descripción} \\ \hline
			v01r01 & Todas & Creación y elaboración del documento. \\ \hline
			v01r02 & 3-4 & Detallado de instalación y primer docker. \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\caption{Autores Del Documento}
		\label{tab:autores}
		\begin{tabular}{|c|c|}
			\hline
			{\bf Apellidos, Nombre} & {\bf Curso} \\ \hline
			Ortega Froysa, Nicolás Andrés & 1 \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\begin{tabular}{|p{4cm}|p{4cm}|p{4cm}|}
			\hline
			{\bf Preparado} & {\bf Revisado} & {\bf Aprobado} \\ \hline
			Ortega Froysa, Nicolás Andrés & \hfill & \hfill \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\pagebreak

\section{Instalación de Docker}
Para poder instalar Docker podemos instalarlo en una máquina de arquitectura
x86--64, ARM, s390x, y ppc64le, y de sistema operativo Linux, Windows, o macOS.
Para esta práctica se usará una distribución de Linux denominada ArchLinux en la
arquitectura ARM (aunque realmente los comandos serán los mismos en cualquier
sistema de ArchLinux). ArchLinux se puede instalar siguiendo las instrucciones
de la guía de instalación de ArchLinux en su Wiki.\footnotemark

\footnotetext{\url{https://wiki.archlinux.org/title/Installation\_guide}}

Cuando ya se tiene ArchLinux instalado, podemos instalar Docker fácilmente desde
la línea de comando con el comando \texttt{pacman -S docker}. Esto instalará el
programa de docker y todas sus dependencias, mas siendo ArchLinux no se
inicializa automáticamente el servicio de Docker, así que es necesario
iniciarlo manualmente. Suponiendo que estamos en un sistema que use systemd,
podemos hacer esto mediante el comendo \texttt{systemctl start docker}.
Si queremos que se inicialice al iniciar el sistema operativo, podemos
ejecutar adicionalmente el comando \texttt{systemctl enable docker}.

\section{Primer Contenedor: Hello World}
Al tenerlo corriendo de fondo ya podemos empezar a tratar con él. Esto se
hace por medio del comando \texttt{docker}. Para usarlo es necesario ejecutar
como superusuario, que se puede hacer o cambiando al usuario
\texttt{root}, o añadiendo \texttt{sudo} antes de todos los comandos. También
existe la opción de añadir el usuario a un grupo especial,
\texttt{docker}. Esto se puede hacer por medio del comando
\texttt{usermod -aG docker <usuario>}, donde \texttt{<usuario>} es el nombre del
usuario actual que queremos añadir al grupo. Este comando también se tiene que
ejecutar como superusuario (y por lo tanto debe de ser \texttt{root} o usar
\texttt{sudo}).

Si ejecutamos el comando \texttt{docker image ls} podemos ver qué imágenes
tenemos disponibles localmente en la máquina, que recién instalado no debería de
haber ninguna. También podemos usar \texttt{docker ps -a} para ver qué
contenedores tenemos corriendo. Esto nos servirá luego para gestionar los
contenedores y las imágenes locales.


\begin{figure}
	\centering
	\includegraphics[width=0.65\linewidth]{imgs/04-hello-world-docker.png}
	\caption{Ejecución del container \texttt{hello-world}.}
	\label{fig:hello-world-docker}
\end{figure}

Ahora, para descargar e inicializar un contenedor lo hacemos
directamente pidiendo que Docker corra la imagen que nos interesa. Para
empezar usaremos la imagen \texttt{hello-world}. Para hacer esto ejecutamos
el comando \texttt{docker run hello-world} y nos debe de salir un mensaje
indicando que se ha ejecutado correctamente (figura
\ref{fig:hello-world-docker}).

Ahora, si volvemos a ejecutar el comando \texttt{docker ps -a}, nos mostrará
que existe un nuevo contenedor en ejecución. Además, al ejecutar
\texttt{docker image ls} nos muestra que se ha descargado además la imagen
\texttt{hello-world}.

% TODO: mention changing bitnami/apache for httpd

\pagebreak

\section{Derechos de Autor y Licencia}
Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa <nicolas@ortegas.org>
\\
Este documento se distribuye bajo los términos y condiciones de la licencia
Creative Commons Attribution No Derivatives 4.0 International.

\end{document}
