achicaiza
7/16/2019 - 3:30 AM

Comandos

//para levantar el contendor y entrar en modo interactivo
docker ps -i ContainerID

//crear contenedor en modo interactivo
docker run -it nginx

//crear contenedor en modo background es decir ya le leventa el docker
docker run -d nginx

//docker exec -it nombre_contenedor tipoImagen bash
eje: docker exec -it mi_ubuntu ubuntu bash

//docker run -it --name mi_imagen tipo_imagen(eje:ubuntu)

//crear contenedores sobre una red en especifico
docker run -d --name nginx3 --network red1 nginx

//para pasar un contenedor a una red en especifico en caliente 
//donde: red2 es el nombre de la red y ubuntua es el contenedor
docker network connect red2 ubuntua

//quitar de una red
docker network disconnect red2 ubuntua

//para revisar donde se encuentran los volumnes de docker en linux y todos los directorios, nose debe tocar
cd /var/lib/docker
luego ls -l

//para crear un contenedor con volumenes de datos
docker run -it -v /datos --name ubuntuVol ubuntu bash

donde -v para crear un volumen y el /datos directorio en el contenedor ubutnu

//crear un directorio compartido con el host
docker run -it -v /root/dir1:/dir1 --name ubuntu3 ubuntu

donde /root/dir1: es la ruta del host y /root/dir1:/<dir1> dir1 directorio de la maquina

//para compartir volumenes entre contenedores
docker run -it  --name ubuntu6  --volumes-from  ubuntu5 ubuntu bash

donde --volumes-from  ubuntu5 (nombre del contenedor que quiero compartir el volumen)  

//para crear un contendor con un volumen creado anteriormente
docker run -it  --name ubuntu7 -v vol1:/dir1 ubuntu bash

donde docker volume create vol1 para crear volumen
-v vol1:/dir1   vol1 el volumen creado y dir1 el directorio asociado del contenedor

docker run -it  --name ubuntu7 -v vol1:/dir1:ro ubuntu bash el ro es solo para modo lectura

// crear imagenes de un contenedor

docker commit ubuntu1 mi_ubuntu:latest

donde  ubuntu1: nombre del contenedor
       mi_ubuntu:latest nombre de la imagen por defecto latest
       
// para crear un dockerFile
docker build -t nombre_imagen .
donde el punto es la referencia de donde se encuentra el archivo del dockerFile
1. docker image tag nombre_image:v8 achicaza/image:v8
donde: 'usuarioDokcerHub/nombre_image:v8' 
2. docker push achicaza/nombre-image:v8
para entrar a un contenedor

docker-compose exec web sh
donde web es el nombre del servico de la orquestaci'on
y sh la shell porque no tiene bash


docker-commpose down para borrar todos los contendores, servicios u volumenes

//Si cambio un archivo y se necesita reconstruir una imagen es con el comando --build
docker-compose up --build

//Para levantar varias instancias de un servicio
docker-compose up --scale web=5

donde:
    web es el nombre del servicio y 5 el nùmero de instancias
Cuando no se puede conectar a los cluster se debe habilitar los puertos en el master y los worker 

sudo firewall-cmd --add-port=2376/tcp --permanent  
sudo firewall-cmd --add-port=2377/tcp --permanent  
sudo firewall-cmd --add-port=7946/tcp --permanent  
sudo firewall-cmd --add-port=7946/udp --permanent  
sudo firewall-cmd --add-port=4789/udp --permanent
sudo systemctl restart firewalld


--- Para ver los nodos al cluster pero solo ejecutar desde el manager

docker node ls


--- Servicios con docker swarm

ejemplo:

docker service create --replicas 1 --name servicio 1 alpine ping docker.com
crear un servicios con una replica con el nombre de "servicios" de un contenedor basado en la imagen "alpine" que realiza un ping a la pagina docker.com

--- Para ver los servicios creados

docker service ls

--- Para escalar un servico
docker service scale servicio1=2 (nombre de servicio con el número de replicas)

Luego para ver las replicas del servicio(servicio1 en este caso) ejecutar

docker service ps servicio1 

luego desde el node replicado el servicio realizar 
docker ps




Ejecutar este comando

sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock