-
Notifications
You must be signed in to change notification settings - Fork 188
1.2.Instalación de herramientas útiles en AWS
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html
#!/bin/bash
sudo yum update -y
sudo amazon-linux-extras install -y docker
sudo service docker start
sudo usermod -a -G docker ec2-user
https://docs.docker.com/engine/install/ubuntu/
#!/bin/bash
region=<aquí colocar región en la que se lanzarán las instancias>
name_instance=mi-nodo
apt-get update
apt-get install -y git curl python3-pip && pip3 install --upgrade pip&& pip3 install awscli --upgrade
##etiquetar instancia
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
PUBLIC_IP=$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4)
aws ec2 create-tags --resources $INSTANCE_ID --tag Key=Name,Value=$name_instance-$PUBLIC_IP --region=$region
##install docker for ubuntu:
apt-get install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
service docker start
groupadd docker
usermod -aG docker ubuntu && newgrp docker
#!/bin/bash
region=<aquí colocar región en la que se lanzarán las instancias>
name_instance=mi_instancia
apt-get update
apt-get install -y curl python3-pip && pip3 install --upgrade pip && pip3 install awscli --upgrade
##etiquetar instancia
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
PUBLIC_IP=$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4)
aws ec2 create-tags --resources $INSTANCE_ID --tag Key=Name,Value=$name_instance-$PUBLIC_IP --region=$region
##install docker for ubuntu:
apt-get install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
service docker start
groupadd docker
usermod -aG docker ubuntu && newgrp docker
#rstudio:
mkdir -p /home/ubuntu/rstudio_files
Una vez dentro de la instancia:
password_rocker=<elegir password>
nombre_contenedor=rstudio_contenedor
docker run -d -p 8787:8787 -e PASSWORD=$password_rocker \
-v /home/ubuntu/rstudio_files:/home/rstudio/ --name $nombre_contenedor rocker/rstudio:4.0.0-ubuntu18.04
Ver https://hub.docker.com/r/rocker/rstudio/tags para los tags que existen (en el caso anterior se usa 4.0.0-ubuntu18.04
)
Ir a su browser a la página:
<dns ipv4 instancia>:8787
(no olvidar habilitar este puerto para la ip de su máquina en los security groups).
user: rstudio
para detener contenedor:
docker stop $nombre_contenedor
para remover contenedor:
docker rm $nombre_contenedor
En la instancia:
mkdir /home/ubuntu/jupyter
cd /home/ubuntu/jupyter
nano Dockerfile
Copiar y pegar lo siguiente:
FROM ubuntu:bionic
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && echo "America/Mexico_City" > /etc/timezone && apt-get install -y tzdata
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN apt-get update && apt-get install -y \
sudo \
nano \
git \
python3-dev \
python3-pip \
python3-setuptools \
nodejs && pip3 install --upgrade pip && pip3 install awscli --upgrade
RUN groupadd miuser
RUN useradd miuser -g miuser -m -s /bin/bash
RUN echo 'miuser ALL=(ALL:ALL) NOPASSWD:ALL' | (EDITOR='tee -a' visudo)
RUN echo 'miuser:miuser' | chpasswd
RUN pip3 install jupyter jupyterlab --upgrade
USER miuser
RUN jupyter notebook --generate-config && sed -i 's/#c.NotebookApp.port = .*/c.NotebookApp.port = 9999/' /home/miuser/.jupyter/jupyter_notebook_config.py && \
sed -i "s/#c.NotebookApp.password = .*/c.NotebookApp.password = u'sha1:adedf57e8cdb:85aea79ca13b11865d8e2dba56dbb312d7ab50d5'/" ~/.jupyter/jupyter_notebook_config.py
En la instancia:
nombre_imagen=jupyter_image
nombre_contenedor=jupyter_contenedor
Construir la imagen:
docker build . -t $nombre_imagen
Una vez finalizada la construcción ejecutar:
docker run -w=/home/miuser/ -p 9999:9999 -v /home/ubuntu/jupyter:/home/miuser/jupyter --name $nombre_contenedor -dit $nombre_imagen jupyter lab --ip=0.0.0.0 --no-browser
Para acceder ir a su browser a la página:
<dns ipv4 instancia>:9999/
El password es qwerty
, no olvidar habilitar este puerto para la ip de su máquina en los security groups.
Crear Dockerfile en directorio:
mkdir ~/docker_postgresql
cd ~/docker_postgresql
nano Dockerfile
FROM ubuntu:bionic
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && echo "America/Mexico_City" > /etc/timezone && apt-get install -y tzdata
RUN apt-get update && apt-get install -y \
sudo \
nano \
openssh-server \
openssl
RUN groupadd postgres
RUN useradd postgres -g postgres -m -s /bin/bash
RUN echo 'postgres ALL=(ALL:ALL) NOPASSWD:ALL' | (EDITOR='tee -a' visudo)
RUN echo 'postgres:postgres' | chpasswd
Crear variables de ambiente:
nombre_imagen=postgresql_image
nombre_contenedor=postgresql_contenedor
Construir imagen de docker:
docker build . -t $nombre_imagen
Crear setup.sh
(lo siguiente instalará postgresql v.10)
cd
nano setup.sh
#!/bin/bash
nombre_base_de_datos=mi_db
sudo service ssh restart
sudo apt-get install -y \
postgresql \
postgresql-client
sudo /etc/init.d/postgresql start
sudo echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/10/main/pg_hba.conf
sudo echo "local all all md5" >> /etc/postgresql/10/main/pg_hba.conf
sudo echo "listen_addresses='*'" >> /etc/postgresql/10/main/postgresql.conf
psql --command "ALTER USER postgres WITH PASSWORD 'qwerty';"
sudo /etc/init.d/postgresql restart
createdb $nombre_base_de_datos
Dar permisos de ejecución al setup.sh
sudo chmod gou+x setup.sh
Crear directorios que persisten los datos de la base de datos:
mkdir -p db_data/etc/postgresql
mkdir -p db_data/var/log/postgresql
mkdir -p db_data/var/lib/postgresql
Crear variable de ambiente:
home_directory=/home/ubuntu
Crear contenedor:
docker run -v $home_directory:$home_directory -v $home_directory/db_data/etc/postgresql:/etc/postgresql -v $home_directory/db_data/var/log/postgresql:/var/log/postgresql -v $home_directory/db_data/var/lib/postgresql:/var/lib/postgresql -p 2222:22 -p 5432:5432 -w=/home/postgresql/ --name $nombre_contenedor -dit $nombre_imagen
Instalar postgresql con el setup.sh y configuraciones adicionales:
docker exec -u=postgres -it $nombre_contenedor /home/ubuntu/setup.sh
Entrar a la base de datos creada:
psql -h localhost -U postgres -d mi_db
Crear tabla ejemplo:
CREATE TABLE films (
code char(5) CONSTRAINT firstkey PRIMARY KEY,
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10),
len interval hour to minute
);
Enlistar relaciones en la base de datos:
\dt;
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | films | table | postgres
(1 row)