Diferència entre revisions de la pàgina «Primers passos amb docker»

De wikijoan
Salta a la navegació Salta a la cerca
Línia 186: Línia 186:
  
 
A partir d'aquí es poden fer coses més complicades.
 
A partir d'aquí es poden fer coses més complicades.
 +
 +
=Docker sense sudo=
 +
*https://docs.docker.com/engine/install/ubuntu/
 +
 +
Use Docker as a non-privileged user, or install in rootless mode?
 +
 +
The installation script requires root or sudo privileges to install and use Docker. If you want to grant non-root users access to Docker, refer to the post-installation steps for Linux. Docker can also be installed without root privileges, or configured to run in rootless mode. For instructions on running Docker in rootless mode, refer to run the Docker daemon as a non-root user (rootless mode).
 +
<pre>
 +
$ sudo groupadd docker (ja existeix)
 +
$ sudo usermod -aG docker $USER
 +
</pre>
 +
Log out and log back in so that your group membership is re-evaluated (tancar la sessió X i tornar a entrar). Ara ja puc utilitzar docker sense ''sudo''.
  
 
{{Autor}}, juny 2021
 
{{Autor}}, juny 2021

Revisió del 08:16, 29 jul 2021

Introducció

(TBD, curs GDS)

Instal·lació de docker a Linux

(TBD)

Ús bàsic de docker

https://www.linux.com/training-tutorials/how-create-docker-image/

https://hub.docker.com/
ID: joanillo (fa el paper de username)
joanqc@gmail.com / S*******44

$ sudo docker login

You should just set your timezone BEFORE installing of tzdata:

$ sudo docker build -t apache .
triga molt de temps (es queda penjat) quan demana el timezone. Per saltar aquest pas:
*https://askubuntu.com/questions/909277/avoiding-user-interaction-with-tzdata-when-installing-certbot-in-a-docker-contai

# Set timezone:
RUN ln -snf /usr/share/zoneinfo/$CONTAINER_TIMEZONE /etc/localtime && echo $CONTAINER_TIMEZONE > /etc/timezone

...
 ---> Running in d6db9c2de751
Removing intermediate container d6db9c2de751
 ---> 551b4092b0be
Successfully built 551b4092b0be
Successfully tagged apache:latest

Now let’s run the server:

$ docker run -d apache
a1cc4cd11320075a7ba280170a57c19ce9014a46b7d8cff2bbdabb2bd837f607

però no va bé perquè fa un exit automàtic

$ sudo docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS     NAMES
953f000ee3b6   ea0cf22c184d   "/usr/sbin/apache2 -…"   3 minutes ago   Exited (1) 3 minutes ago             happy_blackburn
...

$ sudo docker image ls
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
apache         latest    551b4092b0be   3 minutes ago   186MB
...


per tal de què funcioni:
$ sudo docker run -t -i -d apache /bin/bash

$ sudo docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
90249591a657   apache    "/bin/bash"   22 seconds ago   Up 21 seconds   80/tcp    musing_mestorf

You can kill the container with the docker kill command:

$ docker kill 90249591a657

Ara ja sé fer un docker amb Apache, però això no em serveix per servir pàgines web...
*https://hub.docker.com/_/httpd

$ mkdir apache_meu
joan@HP:~/dockerprojects$ cd apache_meu/


$ sudo docker build -t apache_meu .
$ sudo docker run -dit --name el_meu_apache -p 8080:80 -d apache_meu /bin/bash
d8cf69bd6d17bb9cd87178724e323ebf01adc02a2aa02186848c5accb078b836

$ sudo docker ps
CONTAINER ID   IMAGE        COMMAND       CREATED          STATUS          PORTS                  NAMES
d8cf69bd6d17   apache_meu   "/bin/bash"   18 seconds ago   Up 17 seconds   0.0.0.0:8080->80/tcp   el_meu_apache


finalment el que sí ha funcionat és:
*https://hub.docker.com/_/httpd
(tot i que he hagut de comentar el COPY)

$ docker build -t my-apache2 .
$ docker run -dit --name my-running-app -p 8080:80 my-apache2

Pujar un docker a dockerhub

https://www.linuxnix.com/how-to-push-an-image-to-docker-hub/

$ sudo docker image ls
REPOSITORY     TAG       IMAGE ID       CREATED          SIZE
apache         latest    88cf71135dc2   30 minutes ago   186MB
apache_meu     latest    88cf71135dc2   30 minutes ago   186MB
httpd          2.4       30287d899656   6 days ago       138MB
my-apache2     latest    30287d899656   6 days ago       138MB
dockp          latest    9873176a8ff5   12 days ago      72.7MB
ubuntu         latest    9873176a8ff5   12 days ago      72.7MB
hello-world    latest    d1165f221234   3 months ago     13.3kB
darribas/gds   5.0       2d37947f8674   11 months ago    7.89GB

sudo docker tag 30287d899656 joanillo/apache-server:v1

$ sudo docker image ls
REPOSITORY               TAG       IMAGE ID       CREATED          SIZE
...
joanillo/apache-server   v1        30287d899656   6 days ago       138MB
...

$ sudo docker push joanillo/apache-server:v1

The push refers to repository [docker.io/joanillo/apache-server]
dfd488a286c9: Mounted from library/httpd 
15176fdb9a61: Mounted from library/httpd 
61172cb5065c: Mounted from library/httpd 
9fbbeddcc4e4: Mounted from library/httpd 
764055ebc9a7: Mounted from library/httpd 
v1: digest: sha256:9d1304c0f9d348940fbc9f554e0b58ad6ef90ab6db474bb6ea1fe6991b354243 size: 1366

Ara que ja hem fet el push volem verificar si la imatge que tenim penjada la podem fer servir.


primer de tot l'esborrem en local
$ sudo docker image rm 30287d899656

$ sudo docker image ls
ja no hi és

$ sudo docker pull joanillo/apache-server:v1

v1: Pulling from joanillo/apache-server
b4d181a07f80: Already exists 
4b72f5187e6e: Already exists 
12b2c44d04b2: Already exists 
ef481fc2a03a: Already exists 
d483d945fcab: Already exists 
Digest: sha256:9d1304c0f9d348940fbc9f554e0b58ad6ef90ab6db474bb6ea1fe6991b354243
Status: Downloaded newer image for joanillo/apache-server:v1
docker.io/joanillo/apache-server:v1

$ sudo docker image ls
REPOSITORY               TAG       IMAGE ID       CREATED          SIZE
...
joanillo/apache-server   v1        30287d899656   6 days ago       138MB
...

i ara que ja me l'he descarregat, el puc arrecncar per fer-lo servir

$ sudo docker run -dit --name my-running-app2 -p 8080:80 joanillo/apache-server:v1
a5b8a2cbc8fce8d053c4b88ad48ccea22e1df536afbe3110f3691046817b67cf

$ sudo docker ps
CONTAINER ID   IMAGE                       COMMAND              CREATED          STATUS          PORTS                  NAMES
a5b8a2cbc8fc   joanillo/apache-server:v1   "httpd-foreground"   29 seconds ago   Up 27 seconds   0.0.0.0:8080->80/tcp   my-running-app2

i ho provo en el navegador:
localhost:8080

si entro a https://hub.docker.com/ puc veure el meu docker:
*https://hub.docker.com/r/joanillo/apache-server

Utilitzar el docker creat a Windows 10

Doker windows.png

Hem creat un docker molt simple (un servidor Apache pel port 8080 que només mostra It Works). L'hem creat des d'una màquina Linux, i hem penjat la imatge al núvol, al Hub. Ara volem utilitzar aquest docker des d'una màquina Windows.

Instal·lo el Docker Descktop 3.5.2

Hem de reiniciar l'ordinador. Arrenco el Docker Desktop, i protesta perquè la instal·lació de WSL2 és incompleta. Seguir les instruccions. Senzillament es tracta d'instal·lar el paquet d'actualització wsl_update_x64.msi

The Windows Subsystem for Linux (WSL) is a way to run a full Linux environment on your Windows machine, without having to install a "heavier" virtual machine, such as Virtual Box, VM Ware, or Hyper-V. WSL 2 also provides a mechanism for running Docker (with Linux containers) on your Windows machine. We'll install it as a prerequisite for Docker Desktop for Windows

A Windows obrim un terminal (és el cmd), i descarreguem el nostre docker que vam penjar:

C:\Users\rviap>docker pull joanillo/apache-server:v1
v1: Pulling from joanillo/apache-server
b4d181a07f80: Pull complete
4b72f5187e6e: Pull complete
12b2c44d04b2: Pull complete
ef481fc2a03a: Pull complete
d483d945fcab: Pull complete
Digest: sha256:9d1304c0f9d348940fbc9f554e0b58ad6ef90ab6db474bb6ea1fe6991b354243
Status: Downloaded newer image for joanillo/apache-server:v1
docker.io/joanillo/apache-server:v1

Si ara obrim el Docker Desktop ja el veuré, que està funcionant. Aquest docker el puc apagar, reiniciar, fins i tot esborrar. Aquestes accions les podré fer des de la línia de comandes, o des de la interfícies gràfica del Desktop.

Obrim un navegador web i http://localhost:8080 puc veure el meu Apache Server funcionant.

A partir d'aquí es poden fer coses més complicades.

Docker sense sudo

Use Docker as a non-privileged user, or install in rootless mode?

The installation script requires root or sudo privileges to install and use Docker. If you want to grant non-root users access to Docker, refer to the post-installation steps for Linux. Docker can also be installed without root privileges, or configured to run in rootless mode. For instructions on running Docker in rootless mode, refer to run the Docker daemon as a non-root user (rootless mode).

$ sudo groupadd docker (ja existeix)
$ sudo usermod -aG docker $USER

Log out and log back in so that your group membership is re-evaluated (tancar la sessió X i tornar a entrar). Ara ja puc utilitzar docker sense sudo.


creat per Joan Quintana Compte, juny 2021