Inicio
Artículos
Categorias
Etiquetas
Comandos Elementales en Docker
publicado el: 2020-6-18   actualizado el: 2020-6-18   incluido en: Servicios web , Desarrollo web
palabras totales: 527   tiempo de lectura: 3 mins  

Recojo en este breve post un pequeño listado de comandos docker para trabajar con imágenes y contenedores.

Habilitar Docker Repo, instalar e iniciar Docker

1
2
sudo systemctl start docker
sudo systemctl enable docker

Otorgar al usuario normal que ejecute comandos de ventana acoplable

1
sudo usermod -aG docker babinlonston

Verificando la versión de Docker

1
2
3
docker -v
docker info
docker system info

Búsqueda, extracción, listado y eliminación de imágenes de Docker.

1
2
3
4
5
6
docker search nginx
docker pull nginx
docker pull nginx:1.14
docker images
docker rmi nginx
docker rmi nginx:1.14

Comenzando un contenedor, con etiqueta

1
2
3
4
docker run nginx
docker run -d nginx:1.14
docker run -d --name web_server nginx
docker run -d --name web_server1 nginx:1.14

Lanzar un contenedor e iniciar sesión en él.

1
docker run --name web_server2 -it nginx /bin/bash

Listado de todos los contenedores en ejecución y detenidos

1
2
docker ps
docker ps -a

Acceso al shell de un contenedor en ejecución después del lanzamiento

1
docker exec -it web_server /bin/bash

Ejecutando comando en un contenedor en ejecución

1
2
docker exec web_server cat /etc/hosts
docker exec web_server env

Reiniciar, detener y borrar

1
2
3
4
5
docker restart web_server
docker stop web_server1 nginx
docker stop $(docker ps -aq)
docker rm web_server1
docker rm $(docker ps -aq)

Referencia: Cómo gestionar contenedores Docker Detener o “matar” enviando SIGKILL

1
2
docker kill exec web_server2
docker kill -s SIGKILL exec web_server2

Lanzar y exponer la red.

1
2
docker run --name web_server3 -p 8080:80 -d -it nginx
docker run -d --name web_server4 -p 192.168.107.105:8080:80 nginx

Referencia: Cómo conectar los contenedores Docker y exponer la red. Correr Inspeccionar para saber la IP de un contenedor

1
2
3
4
docker inspect web_server
docker inspect web_server | grep -i -A 1 'IPAddress|ExposedPorts'
docker inspect -f '{{ .NetworkSettings.IPAddress }}' web_server
docker inspect -f '{{ .Config.ExposedPorts }}' web_server

Adjuntar un volumen

1
2
3
4
5
6
7
mkdir /mysql_container 
chown -R 27:27 /mysql_container 
chcon -t svirt_sandbox_file_t /mysql_container  #temp
                      or
semanage fcontext -a -t svirt_sandbox_file_t '/mysql_container(/.*)?'  #Persistent

docker run --name mysql-pro-dbsrv -d -v /mysql_container:/var/lib/mysql/ -e MYSQL_ROOT_USER=root -e MYSQL_ROOT_PASSWORD=password123 mysql

Referencia: administrar los datos de Docker de forma persistente adjuntando un volumen Docker exportar, importar, cargar y guardar

1
2
3
4
docker export apache > linuxsysadins.local.tar
docker import - website < linuxsysadins.local.tar 
docker save -o website_backup.local.tar website
docker load < website_backup.local.tar

Creando archivo Docker y construyendo imagen

1
2
mkdir /root/linuxsysadmins
nano /root/linuxsysadmins/Dockerfile

Reemplace con sus valores requeridos.

1
2
3
4
5
6
7
 FROM centos
 MAINTAINER Babin Lonston
 RUN yum update -y && yum install httpd mod_ssl -y
 ADD linuxsysadmins.local.conf /etc/httpd/conf.d/linuxsysadmins.local.conf
 ADD index.html /var/www/html/index.html
 CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
 EXPOSE 80/tcp

Crea el archivo index.html para Apache

1
nano /root/linuxsysadmins/index.html

Anexa con tu contenido.

1
2
3
4
5
6
7
<code>
    <html>
    <body>
        <h1>This is Test page for linuxsysadmins.local</h1>
    </body>
    </html>
</code>

Construye una imagen usando un archivo docker. Asegúrese de usar “.” Como se muestra a continuación.

1
2
docker build  -t linuxsysadmins.local .
docker images

Empujando imágenes a Docker Hub

1
2
3
4
docker login
docker tag linuxsysadmins.local babinlonston/linuxsysadmins.local:0.1
docker images
docker push babinlonston/linuxsysadmins.local:0.1
ESC
«No se puede enseñar nada a un hombre; sólo se le puede ayudar a encontrar la respuesta dentro de sí mismo». Galileo Galilei (1564 - 1642)
Tabla de contenidos
Artículos relacionados
WordPress y linuxserver-letsencrypt

Después de instalar mi servidor web y el proxy inverso voy a crear un Server Blocks (virtualhost en Apache) en el servidor web Ngnix. En el alojaré un sitio web creado con WordPress al que accederé desde internet con el subominio de pruebas pruebas.misubdominio.duckdns.org que he creado.

2020-6-25
Docker en un servidor casero

Tengo un pequeño ordenador con varios servidores (Web, SQL, VPN, Nextcloud) al que voy a cambiar el disco duro. Después de barajar las distintas opciones disponibles, he decidido instalar Debian 10 server en el que por facilidad de mantenimiento quiero virtualizar todos estos servicios.

2020-6-17
Red privada virtual con OPENVPN y Docker

Otra utilidad que quería darle a mi servidor casero era la de poder acceder a Internet de manera segura desde mi teléfono o desde mi portátil cuando estoy conectado a una red de la que no me fío, como la red wifi de un hotel o una cafetería. Por ello voy a crear una red privada virtual (VPN) que me permita navegar por redes no confiables de manera privada y segura, como si estuviera en mi red privada.

2020-6-29
Instalando GitKraken en Debian Buster

Instalo GitKraken siguiendo los pasos de la página de soporte del sitio web de Gitkraken. Entre otras razones para su instalación esta que no se requieren herramientas Git para GitKraken, por lo que una vez instalado, se puede abrir la aplicación y comenzar a trabajar con el.

2020-6-10
Crear un proyecto laravel desde un repositorio en Github

Voy a crear un proyecto con laravel a partir de otro alojado en un repositorio de Github.

2020-12-30