practika-code

learning for coding and coding for learning

View on GitHub

Getting starter 2:25m


1

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:

1

Consistently build run and ship applications

1

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

1

1

1

Diferencias con los contenedores

1

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

1

Un contenedor es practicamente un proceso
Todos los contenedores comparten el Kernel del Host

1

Cada OS tiene su propio kernel/engine
Windows 10= capaz de correr win & linux
Linux = solo linux
Mac = kernel linux

1

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

1

Que contiene una imagen?

1

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

1

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

1

Docker in Action 17.44


Dockerfile // asi con mayuscula inicial y lo demas minuscula

1

Docker build -t <tag-image-name> ./<path-to-dockerfile>
Docker run codewithmosh/hello-docker

1 1

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"    

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

1

/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

1

usermod -s /bin/bash john
cat /etc/passwd

1

cat /etc/shadow   //aqui estan los paswords

1

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:

1

cd ~
userdel john

adduser es mas interactivo

adduser // usa useradd under the hook
adduser BOB

1

Managing groups


groupadd
groupmod
groupdown
groupadd developers // all users in same group have same permissions

1

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

1