dijous, 18 de maig del 2017


Docker Remote

Docker Daemon allows to you to access remotelly via API, by default is not active and you have to do a samll configuration. The normal use case is using docker-machine in order to create docker machines, but in enterprise envirotmenst not allways is allowed to install software even less docker software. However the developers may still need to conect to docker daemon to have a test envirotment. Below the stesps to provide a docker daemon a http API conection, enoguth to work with Eclipse or Netbeans

Below is explained the stpes done in Unbutu

First stop the docker service. 

service docker stop

Later change the dockerd parameters. There is the option to create a etc/docker/daemon.json but you still are going to need to change the docker.servie since dockerd is started with fd option. And if you try creating daemon.json with "hosts" options it will give an error asking to you to decide either json or dockerd parameteres.


root@ubuntu:/# vi /lib/systemd/system/docker.service

#ExecStart=/usr/bin/dockerd -H fd://
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375  -H fd://

Flush the changes.
systemctl daemon-reload
service docker start

root@ubuntu:/etc/docker# service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-05-18 01:00:59 CEST; 8s ago
     Docs: https://docs.docker.com
 Main PID: 4117 (dockerd)
    Tasks: 16 (limit: 4915)
   Memory: 30.6M
      CPU: 2.003s
   CGroup: /system.slice/docker.service
           ├─4117 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd://
           └─4121 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/l

to verify that docker is running and giving info curl

-X GET http://127.0.0.1:2375/images/json

Only remain Eclipse, Netbeans is exacly de same. It consists only on connect to the daemon


To look up images and containers there is a nice wizard and list.






dilluns, 1 de maig del 2017

Primeros pasos con Docker.


 Buenisismo (corto, practico, con algo de teoria y poco ppt) curso de docker dado en la propia web de docker 
https://training.docker.com/introduction-to-docker
https://training.docker.com/docker-fundamentals
https://training.docker.com/docker-operations

Primeros pasos


Seguir las directrices https://docs.docker.com/engine/installation/linux/ubuntu.

Hemos instalado un unbutu 16 en virtual box con 16GB de disco y 4GB de memoria. Una vez levantada la maquina installar docker ocmo indica las directrizes que como es facil. Una opcion mejor es ir a docker store https://store.docker.com/editions/community/docker-ce-server-ubuntu?tab=description. estas instrucciones instalan una version mas actualizada

Agregar el usuario al grupo docker para evitar ir haciendo sudo

jordi@ubuntujordi:/$ sudo usermod -aG docker jordi. Despues salir para que pille los cambios logout


y ya se podra acceder sin ir poniendo sudo


jordi@ubuntujordi:~$ docker run hello-world.


para salir del container cntl +p +q

Otro ejemplo es

 docker run -it ubuntu:14.04 bash. Los parametros it significan terminal mas stout, y bash es el comando que ejecuta. Obervar que para salir exit, una vez hecho no se guarda nada, si se crea un usuario se "pierde" .

Ejemplo de ejecutar un contender y dejarlo corriendo.

# docker run -d -P tomcat:7 . La d es "detached mode" para no quedar atrapado.

docker ps saca las imagenes y su estado 

root@ubuntu:/home/jordi# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6bad8210e61 tomcat:7 "catalina.sh run" 2 minutes ago Up 2 minutes 0.0.0.0:32768->8080/tcp dreamy_volhard dca00ddfe6c8 ubuntu:14.04 "bash" 22 minutes ago Up 22 minutes hopeful_jang lo que significa que el redireccionamiento de puertos esta asi 0.0.0.0:32768->8080/tcp root@ubuntu:/home/jordi# curl http://127.0.0.1:32768 Sacara una cosa fea

Docker fundamentals 

 Construir imagenes, Un poco de teoria. Las imagenes se montan a base de capas, cada layer o capa es a su vez una imagen. La estrucutura de capas sirve para simplificar la instalacion y publicacion de imagenes y asi 'dividir' y acutalizar solo la capa nueva que forma una imagen.

Una vez lanzado un contaner en detach mode podremos volver lanzando comandos

jordi@ubuntu:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS              PORTS               NAMES
86d8efeabe8f        tomcat:7            "ping www.google.es"   About a minute ago   Up 2 seconds        8080/tcp            angry_torvalds
jordi@ubuntu:~$ docker exec -it 86d8efeabe8f bash
root@86d8efeabe8f:/usr/local/tomcat#


dokcer linking para comunicar contarines
docker volumetes.


Hay DOS maneras de crear imagenes
  • ejecutando un commit sobre la imagen por ejemplo  $ docker commit ec221eabd2e3 jordiesc/mitest:1.
  • La otra es con un fichero llamdos dockerfile. 
Las imagenes se guardan en Docker registros, los registry pueden ser publicos o privados . El publico mas famoso es DockerHub. solo considerar en que para produccion solo utilizar imagenes oficiales, que tienen el simbolito de la ballena.

Es posible crear un registro local via docker en si mismo

 jordi@ubuntu:~$ docker run -d -p 5000:5000 registry:2.0. Despues para pull o push imanges hay que hacer referencia al server docker push name.com:5000/repositoryname:tag. para poner regstry remote hay que configurar TLS si no da error otra opcion es establecer --insecure

sudo service docker stop.
/etc/defult/docker DOCKER_OPTS="--insucure-registry ipregistry:portregistry".
sudo service docker start y con eso se activa el insecure.

Docker orchestration

  •  DockerMachine es un tool para orquestrar docker machines en remoto desde un pc. Para instalar descargar los binarios desde aqui y situarlos en los binarios del $PATH usualmente en /usr/local/bin/docker-machine con permsios chmod+x para poder ejecutarlos
 wget
https://github.com/docker/machine/releases/

Con docker machine se puede installar docker en instancias virtuales de varios vendedores y levandar contenedores con la misma API e interfaz.  La verdad es que no acabo de verle la utilidad excepto para entornos multicloud.

  • Docker Swarn. Tool para clusterizar docker machines y tratarlos como una unidad. Parecido a Kubernettes. Cada nodoe thiene que tener swarn agent y hay un swarn Manager o master. el swarn manager o master es un docker container en si mismo asi como los agentes,

docker run -rm swarn create

  • Docker compose es una tool para mangegar multcontainer aplicaicones. Que es lo mas normal con compose se puede spinup todos los containers como una unidad. se crea un fichero yaml y se pone todos los contendedores con las referencias
Instalacion de docker compose basicamente es bajarse y ponerlo en usr/local/bin q es donde estan los ejecutables

curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
despues le damos permisos de ejecucion  sudo chmod +x /usr/local/bin/docker-compose

el funcionamiento basico es tener un fichero docker-stack.yml y con el compando docker-compose up








 




Apache Tomcat/7.0.77