Skip to content

Commit 22a0941

Browse files
committed
revisado el contenido del modulo vi
1 parent 4b85d9f commit 22a0941

File tree

1 file changed

+58
-120
lines changed

1 file changed

+58
-120
lines changed

01-contenedores/contenedores-vi/contenedores-vi.sh

Lines changed: 58 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,28 @@ cd 01-contenedores/contenedores-vi
77

88
#1. Creo la red donde ambos contenedores van poder comunicarse
99
docker network create wordpress-network
10+
1011
#2. Creo la base de datos MySQL, conectada a la red anterior, con un volumen que guarde la información de /var/lib/mysql.
11-
docker run -it --name mysqldb --network wordpress-network --rm --mount source=mysql_data,target=/var/lib/mysql \
12-
-e MYSQL_ROOT_PASSWORD=somewordpress -e MYSQL_DATABASE=wpdb -e MYSQL_USER=wp_user -e MYSQL_PASSWORD=wp_pwd \
12+
#Nota: Si estás en Windows cambia las \ por ` en el comando. Solo es para colocar el comando en varias lineas :-)
13+
docker run -dit --name mysqldb \
14+
--network wordpress-network \
15+
--mount source=mysql_data,target=/var/lib/mysql \
16+
-e MYSQL_ROOT_PASSWORD=somewordpress \
17+
-e MYSQL_DATABASE=wpdb \
18+
-e MYSQL_USER=wp_user \
19+
-e MYSQL_PASSWORD=wp_pwd \
1320
mysql:5.7
1421

1522
#2.1 Esto habrá hecho que se genere un volumen nuevo llamado mysql_data
1623
docker volume ls
1724

1825
#3. Ahora que ya tenemos la base de datos, el siguiente paso sería generar el contenedor de Wordpress
1926
# dentro de la misma red y apuntando al contenedor de MySQL
20-
docker run -it --name wordpress --network wordpress-network --rm \
27+
docker run -dit --name wordpress \
28+
--network wordpress-network \
2129
-v wordpress_data:/var/www/html \
22-
-e WORDPRESS_DB_HOST=mysqldb:3306 -e WORDPRESS_DB_USER=wp_user -e WORDPRESS_DB_PASSWORD=wp_pwd -e WORDPRESS_DB_NAME=wpdb \
30+
-e WORDPRESS_DB_HOST=mysqldb:3306 \
31+
-e WORDPRESS_DB_USER=wp_user -e WORDPRESS_DB_PASSWORD=wp_pwd -e WORDPRESS_DB_NAME=wpdb \
2332
-p 8000:80 wordpress:latest
2433

2534
#Este es el contenido en el volumen wordpress_data
@@ -35,20 +44,27 @@ docker volume rm mysql_data wordpress_data
3544
#Lo mismo pero con Docker Compose
3645
cat docker-compose.yml
3746

38-
docker-compose up & #con el & al final te deja utilizar el terminal, además de ver la salida
47+
#Levantar la aplicación con docker-compose
48+
docker-compose up
3949

40-
#Parar y eliminar
41-
docker-compose down
50+
#Truco:
51+
docker-compose up & #con el & al final te deja utilizar el terminal, además de ver la salida
4252

4353
#Ejecutar en segundo plano tu aplicación con Docker Compose
4454
docker-compose up -d
4555

56+
#Parar la aplicación con docker-compose
57+
docker-compose stop
58+
59+
#Parar y eliminar
60+
docker-compose down
61+
4662
#Otro de los escenarios que te puedes encontrar es que quieras que cada vez que haces un compose up
4763
#se genere la imagen de tu app
4864
cd my-app
65+
66+
#Ejecutar y genera la imagen de tu aplicación
4967
docker-compose up --build &
50-
docker-compose ps
51-
# docker-compose stop
5268

5369
#Con docker compose puedes ver todas las aplicaciones que se están ejecutando
5470
docker-compose ps #Pero sólo se ven los contenedores del proyecto que está en la carpeta actual con el nombre actual.
@@ -59,24 +75,12 @@ docker ps -a
5975
#Listar todos los proyectos que se están ejecutando
6076
docker ps -a --filter "label=com.docker.compose.project" -q | xargs docker inspect --format='{{index .Config.Labels "com.docker.compose.project"}}'| sort | uniq
6177

62-
6378
#Añadir un nombre a la aplicación
6479
docker-compose --project-name my_wordpress up -d
6580

6681
#Si quisieramos reiniciar la aplicación
6782
docker-compose -p my_wordpress restart
6883

69-
#Parar las aplicaciones sin eliminar los contenedores
70-
docker-compose -p my_wordpress stop
71-
docker-compose -p my_wordpress ps
72-
73-
#Si quisiera parar y eliminar, todo a la vez
74-
docker-compose -p my_wordpress down
75-
docker-compose -p my_wordpress ps
76-
77-
#Si solo quisiera eliminar una vez parada
78-
docker-compose -p my_wordpress rm
79-
8084
# Docker Swarm #
8185

8286
#Antes de trabajar con el orquestador Docker Swarm es necesario crear el cluster a través del siguiente comando:
@@ -91,131 +95,66 @@ https://docs.docker.com/machine/overview/
9195
#Se trata de una herramienta que te permite instalar Docker Engine en host virtuales y administrarlos
9296
#con el comando docker-machine.
9397
#Puedes usarlo con Mac, Windows, en la red de tu empresa, con proveedores cloud, etc.
94-
#Cómo instalarlo en Mac
95-
base=https://github.com/docker/machine/releases/download/v0.16.0 && \
96-
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine && \
97-
chmod +x /usr/local/bin/docker-machine
98-
99-
#Windows (Git bash)
100-
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
101-
mkdir -p "$HOME/bin" &&
102-
curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" &&
103-
chmod +x "$HOME/bin/docker-machine.exe"
104-
105-
#Linux
106-
ssh gis@137.135.216.143
107-
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
108-
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
109-
sudo apt-get update
110-
sudo apt-get install virtualbox -y
111-
112-
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
113-
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
114-
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
115-
chmod +x /usr/local/bin/docker-machine
116-
98+
#Cómo instalarlo: https://docs.docker.com/machine/install-machine/
11799

118100
#Comprueba que la instalación se ha hecho correctamente
119101
docker-machine version
120102

121103
#Cómo crear una máquina con Docker Engine con docker-machine
122-
#Linux
123-
sudo docker-machine create master-0
124-
sudo docker-machine create master-0 --virtualbox-no-vtx-check
125-
vboxmanage list vms
126-
#Virtual Box
127-
docker-machine create --driver virtualbox master-0
128-
#Hyper-V
129-
docker-machine create --driver hyperv master-0
130-
131-
#Crear un cluster con Docker Swarm y Docker Machine
132-
docker-machine create --driver virtualbox master-1
133-
docker-machine create --driver virtualbox master-2
134-
docker-machine create --driver virtualbox worker-0
135-
docker-machine create --driver virtualbox worker-1
104+
docker-machine create master-0
105+
docker-machine create master-1
106+
docker-machine create master-2
107+
docker-machine create worker-0
108+
docker-machine create worker-1
136109

137110
#Ver el resumen de todas las máquinas creadas
138111
docker-machine ls
139112

140113
#Si abres Virtual Box verás que efectivamente tienes creadas todas esas máquinas.
141114

142-
#Listar las máquinas que están ejecutándose
143-
docker-machine ls
144-
145115
#Para conocer el estado de una máquina
146116
docker-machine status master-0
147117

148-
#Conectar tu Docker Client a master-0
118+
#Para saber cómo conectar tu Docker Client a master-0
149119
docker-machine env master-0 #Mac
150120
docker-machine env --shell powershell master-0 #Windows
121+
151122
eval $(docker-machine env master-0) #Mac
123+
152124
# docker-machine url master-0
153125
docker info #Comprueba que el nombre de la máquina sea el mismo que elegiste en la creación con docker-machine
154-
docker ps
155-
#Comprueba que las variables de entorno apuntan a la máquina creada
156-
env | grep DOCKER #Mac
157-
Get-ChildItem Env: | Where-Object { $_.Name -Match "DOCKER"} #PowerShell
158-
159-
#Ejecuta un contenedor en la máquina que tienes como contexto
160-
docker run busybox echo hello world
161-
docker ps -a
162-
163-
#Ejecutar un Nginx
164-
docker run -d -p 8000:80 nginx
165-
166-
#Recuperar la IP de uno de los nodos
167-
docker-machine ip master-0
168-
169-
#Hacer una petición al servidor web
170-
curl $(docker-machine ip master-0):8000
171-
172-
#Parar una máquina
173-
docker-machine stop master-0
174-
175-
#Iniciar una máquina
176-
docker-machine start master-0
177-
178-
#Para hacer que el terminal vuelva a apuntar a Docker Desktop
179-
docker-machine env -u --shell poweshell #Windows
180-
docker-machine env -u #Mac
181-
eval $(docker-machine env -u)
182-
env | grep DOCKER #Mac
183-
Get-ChildItem Env: | Where-Object { $_.Name -Match "DOCKER"} #PowerShell
184-
185-
docker info #volverás a apuntar a Docker Desktop
186126

187127
#Ahora en el master-0 iniciamos el cluster con Docker Swarm
188128
eval $(docker-machine env master-0)
189-
docker swarm init --advertise-addr 192.168.99.118
129+
docker swarm init --advertise-addr $(docker-machine ip master-0)
130+
#Ver los nodos de nuestro clúster
131+
docker node ls
132+
#Ver el comando para que otros masters se puedan unir
133+
docker swarm join-token manager
134+
190135

191136
#En master-1 y master-2 los unimos como master
192-
docker swarm join-token manager
193137
eval $(docker-machine env master-1)
194-
docker swarm join --token SWMTKN-1-2fzf6vaz6lndlp99njo38dccdxzvnknj8o0p2472g82lc8q83m-cb4kkn43ogrxse9suup2c9b5k 192.168.99.118:2377
138+
docker swarm join --token SWMTKN-1-4y3gnmqsen5m00ot2csqh1tcqyiuuwhmkqhp44t3jnqyuihdd3-21msmt276l7gcdmapbc6lpq26 192.168.99.101:2377
195139
eval $(docker-machine env master-2)
196-
docker swarm join --token SWMTKN-1-2fzf6vaz6lndlp99njo38dccdxzvnknj8o0p2472g82lc8q83m-cb4kkn43ogrxse9suup2c9b5k 192.168.99.118:2377
140+
docker swarm join --token SWMTKN-1-4y3gnmqsen5m00ot2csqh1tcqyiuuwhmkqhp44t3jnqyuihdd3-21msmt276l7gcdmapbc6lpq26 192.168.99.101:2377
141+
197142
#Chequeamos el estado actual del cluster
198143
docker node ls
199144

200145
#Por ahora solo tenemos masters pero no curris, nos faltan los workers.
201146

202147
#En worker-0 y worker-1 los unimos como workers
203148
eval $(docker-machine env worker-0)
204-
docker swarm join --token SWMTKN-1-2fzf6vaz6lndlp99njo38dccdxzvnknj8o0p2472g82lc8q83m-3zznmj72ed3yb84klclnid9qs 192.168.99.118:2377
149+
docker swarm join --token SWMTKN-1-4y3gnmqsen5m00ot2csqh1tcqyiuuwhmkqhp44t3jnqyuihdd3-d548jak66563ovgeg5wlg9czu 192.168.99.101:2377
205150
eval $(docker-machine env worker-1)
206-
docker swarm join --token SWMTKN-1-2fzf6vaz6lndlp99njo38dccdxzvnknj8o0p2472g82lc8q83m-3zznmj72ed3yb84klclnid9qs 192.168.99.118:2377
151+
docker swarm join --token SWMTKN-1-4y3gnmqsen5m00ot2csqh1tcqyiuuwhmkqhp44t3jnqyuihdd3-d548jak66563ovgeg5wlg9czu 192.168.99.101:2377
207152

208153
#Necesitas estar en un master para lanzar el siguiente comando
209154
eval $(docker-machine env master-1)
210155
docker node ls
211156
#El asterisco te dice desde dónde estás lanzando el comando.
212157

213-
#En el master podemos lanzar este comando para inspeccionarse a si mismo
214-
docker node inspect self --pretty
215-
216-
#o bien a otro nodo
217-
docker node inspect worker-0 --pretty
218-
219158
#Lo siguiente es desplegar una aplicación en este cluster
220159
docker service create --name web-nginx \
221160
-p 8080:8080 \
@@ -254,14 +193,14 @@ https://github.com/dockersamples/docker-swarm-visualizer
254193
eval $(docker-machine env master-2)
255194

256195
docker service create \
257-
--name=viz \
258-
--publish=9090:8080/tcp \
196+
--name=docker-swarm-visualizer \
197+
--publish=9090:8080 \
259198
--constraint=node.role==manager \
260199
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
261200
dockersamples/visualizer
262201

263202
docker service ls
264-
docker service ps viz
203+
docker service ps docker-swarm-visualizer
265204

266205
#En mi ejemplo se ha desplegado en el master-0 pero puedo acceder desde cualquier nodo
267206
docker-machine ip master-1 #(192.168.99.109:9090) #Esto es así porque a nivel de networking se configura por defecto el modo Ingress
@@ -286,25 +225,24 @@ curl $(docker-machine ip worker-1):8070 #no funciona
286225
#probamos lo mismo con una de las máquinas que si que tiene una réplica
287226
curl $(docker-machine ip worker-0):8070 #funciona
288227

289-
# Docker Machine loves Azure
290-
#https://docs.docker.com/machine/drivers/azure/
291-
export AZURE_SUBSCRIPTION_ID=e39a6423-dbba-44c8-aff0-3308926843fc
292-
export AZURE_LOCATION="northeurope"
293-
export AZURE_RESOURCE_GROUP="north-docker"
294-
295-
docker-machine create --driver azure docker-on-azure
296-
297228
# Docker Stacks #
298229
#Con Docker Stacks podemos utilizar archivos de la misma forma que hacíamos con Docker Compose pero en clústers.
299230
cd 01-contenedores/contenedores-vi/stacks/stackdemo
300231
eval $(docker-machine env master-2)
301-
docker-compose up -d #si utilizamos docker-compose no lo va a poner en modo clúster sino que va a poner todos los contendores en el nodo actual
302-
docker-compose ps
303-
curl $(docker-machine ip master-2):8000
232+
docker-compose up & #si utilizamos docker-compose no lo va a poner en modo clúster sino que va a poner todos los contendores en el nodo actual
233+
docker-compose ps #vemos que está aquí
234+
docker service ls #pero aquí no
235+
curl $(docker-machine ip master-2):32771
236+
304237
#Para que lo despliegue en formato cluster debemos utilizar el siguiente comando:
305238
docker stack deploy -c docker-compose.yml stackdemo
306239
#Para ver todos los servicios desplegados con Docker stack
307240
docker stack ls
308241
docker stack ps stackdemo
309242
#Ahora si que podremos verlo como un servicio
310243
docker stack services stackdemo
244+
245+
docker service ls
246+
247+
#Intentar acceder a la web
248+
curl $(docker-machine ip master-2):30001

0 commit comments

Comments
 (0)