Getting starter 2:25m
What is docker 3.09
Platform para construir, correr y transportar, en manera concisa las aplicaciones
Build, run, shipping apps
problemas con aplicaciones sin docker:
Consistently build run and ship applications
Virtual machines VS containers 6.24
Contenedor: ambiente aislado para correr una app
VM: abstracion de una maquina con physical hardware
VM: tambien puede aislar aplicaciones atravez de un Hypervisor
Diferencias con los contenedores
Docker Architecture 09.39
Es como la arq Cliente / servidor, donde el Server es Docker Engine
El server construye y corre (build , run) los contenedores
Un contenedor es practicamente un proceso
Todos los contenedores comparten el Kernel del Host
Cada OS tiene su propio kernel/engine
Windows 10= capaz de correr win & linux
Linux = solo linux
Mac = kernel linux
Installing Docker 11.52
Docker hub es lo que se instala:
Ir a docs.docker.com/docker-for-mac/install
Development workflow 15.28
Una aplicacion mas el dockerfile, hacen una imagen
Dockerfile contiene lo que ocupa la app
Que contiene una imagen?
Le decimos al container que use la imagen y la corra
el container es un Proceso
Pero es un proceso especial por que tiene su propio file-system que proviene de la imagen
Entonces, nuestra aplicacion la corre en un contenedor o proceso
Y el contenedor la corre de manera AISLADA
So this is the beauty of docker: una vez que tenemos una imagen la podemos mandar a DOCKER-HUB
Then we can put the image ON any machines running docker
Docker-hub es a docker como github es a git.
Asi la misma app que corre en una pc corre en cualquier otro systema
gracias a q docker sabe todas las instrucciones en el docker file
Docker in Action 17.44
Dockerfile // asi con mayuscula inicial y lo demas minuscula
Docker build -t <tag-image-name> ./<path-to-dockerfile>
Docker run codewithmosh/hello-docker
Linux Distributions 28.07
Ubunto, debian, alpine, fedora, centos,
Docker run ubuntu // baja automaticamente imagen ubuntu por que no existe en local pero no hace nada
Docker run -it ubuntu // corre la imagen ubuntu y te da la pantalla de comandos // corre el contenedor
Docker ps -a // muestra los contenedores "stopped"
- Root@234h34khj23:/#
- Por default root user
- 234h34khj23 es el nombre de la maquina
- / is where we are
-
highest privilegies (vs $ for normal user)
Echo hello
Whoiam // que usuario eres
Echo $0 // que shell tienes?
Linux es sensitivo
Managing packages 34.22
Advance package tool APT
Apt
Apt-get
Apt install nano // no esta instalado por default
Apt list // paquetes que si estan
Apt update // actualizar DB de paquetes
Apt list // lista todo lo nuevo
Apt install nano // la descripcion del paquete ya va a estar disponible
Apt remove nano
Linux file system 37.56
Everything is a file
/dev devices
/etc editable text configuration
Ls
Ls -1
Ls -l
pwd (donde estas)
cd etc/apt/ (solo ejemplo)
ls /bin (listar lo del folder bin)
Manipular Files and Directorios 44.14
cd ~
mkdir test (create dir)
mv test docker (renombrar)
touch hello (create file)
touch file.txt file2.txt file3.txt (create varios al mismo tiempo)
mv hello.txt hello-other.txt (renanme)
rm file1.txt file2.txt (remover varios)
rm file* (usar patrones)
rm -r dockerdir (remover dir)
Editing and Viewing files 47.39
Cat /etc/conf.txt
More /etc/conf.txt
Apt install less
Less /etc/adduser.conf
Head -n 5 /etc/conf.txt (primeras 5 lineas)
Tail -n 5 /etc/conf.txt (las ultimas 5)
Redirection 51.34
Redirect standar output
Cat file1.txt > file2.txt
Cat file1 file2 > combined.txt
Echo this is a text > file1.txt
< redirect standar input
Searching for text 54.40
Grep -i. hello file.txt (buscar HELLO case insensitive)
Grep -i. root /etc/passwd
Grep -I -r hello file* (Buscar en todos los archivos que comiencen con "file" word)
Grep -i. -r. hello . (buscar hello en todos los archivos del dir actual)
Finding files and directories 56.58
Find // current directory
Find /etc (buscar todos los archivos en el directorio etc)
Find -type d (buscar solo directorios)
Find -type f (buscar archivos)
Find -type f -name "f*" (todos los archivos que comiencen con f, sensitivo por default)
Find -type f -iname "f*" (case insensitive)
Find /carpeta -type f -name "*.py" > pythonfileslist.txt (todo los archivos del directorio carpeta)
Mkdir test; cd test; echo done
Mkdir test && cd test && echo done (si el primer falla, los demas no se executan)
Mkdir test || echo "directory exists" (si el primero asierta, los demas no se executan)
Ls /bin | less (la salida del primero se va al segundo)
Ls /bin | head -n 5
Mkdir test;\
cd test;\
echo done\
Environment variables
printenv //todas las vars
printenv PATH //una variable
echo $PATH
export DB_USER=mosh //definicion
echo $DB_USER // imprimir
printenv DB_USER //imprimir
exit // esto borra la variable declarada db_user
1.08.28
Docker ps -a // a para mostrar tambien los stoped
Ejecutar contenedor
Docker start -i. 2f7
la -i. es para interactuar
el 2f7 es el ID del contenedor
echo $DB_USER // en este punto no existe
Agregar la variable al inicio de la sesion
echo DB_USER=mosh >> .bashrc (>> agregar en lugar de sobrescribir el archivo)
Agregamos otra variable pero solo se carga al inicio de sesion
echo COLOR=blue >> .bashrc
source ~/.bashrc // este es el truco
Managing processes
ps
sleep 3 & //process was executed at background
kill <ID-process>
Managing users
useradd
usermod
userdel
useradd -m john /// m crea directory home
cat /etc/passwd // listar user
usermod -s /bin/bash john
cat /etc/passwd
cat /etc/shadow //aqui estan los paswords
abrimos otra sesion
docker ps
docker exec -it 2f759e bash // loguea como root user
docker exec -it -u john 2f759e bash //loged as john NORMAL USER
ejemplo:
cd ~
userdel john
adduser es mas interactivo
adduser // usa useradd under the hook
adduser BOB
Managing groups
groupadd
groupmod
groupdown
groupadd developers // all users in same group have same permissions
usermod -G developers jhon
cat /etc/passwd | grep john // buscamos al user john
grep john /etc/passwd // buscamos al user john
groups john // buscamos si john pertenece a developers