Instal·leu Docker i apreneu la manipulació bàsica de contenidors a CentOS i RHEL 8/7 - Part 1


En aquesta sèrie de 4 articles, parlarem de Docker, que és una eina de virtualització lleugera de codi obert que s'executa a la part superior del nivell del sistema operatiu, que permet als usuaris crear, executar i desplegar aplicacions, encapsulades en contenidors petits.

S'ha demostrat que aquest tipus de contenidors Linux són ràpids, portàtils i segurs. Els processos que s'executen en un contenidor Docker sempre estan aïllats de l'amfitrió principal, evitant la manipulació externa.

Aquest tutorial proporciona un punt de partida sobre com instal·lar Docker, crear i executar contenidors Docker a CentOS/RHEL 8/7, però amb prou feines rasca la superfície de Docker.

Pas 1: instal·leu i configureu Docker

1. Les versions anteriors de Docker es deien docker o docker-engine, si les teniu instal·lades, heu de desinstal·lar-les abans d'instal·lar una versió més nova de docker-ce.

# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. Per instal·lar la darrera versió del motor Docker, heu de configurar el dipòsit Docker i instal·lar el paquet yum-utils per habilitar el dipòsit estable de Docker al sistema.

# yum install -y yum-utils
# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3. Ara instal·leu la versió més nova de docker-ce des del dipòsit de Docker i del containerd manualment, perquè a causa d'alguns problemes, Red Hat va bloquejar la instal·lació de containerd.io > 1.2.0-3.el7, que és una dependència de docker-ce.

# yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
# yum install docker-ce docker-ce-cli

4. Un cop instal·lat el paquet Docker, inicieu el dimoni, comproveu-ne l'estat i activeu-lo a tot el sistema mitjançant les ordres següents:

# systemctl start docker 
# systemctl status docker
# systemctl enable docker

5. Finalment, executeu una imatge de prova del contenidor per verificar si Docker funciona correctament, emetent l'ordre següent:

# docker run hello-world

Si podeu veure el missatge següent, aleshores tot està al lloc correcte.

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

6. Ara, podeu executar algunes ordres bàsiques de Docker per obtenir informació sobre Docker:

# docker info
# docker version

7. Per obtenir una llista de totes les ordres de Docker disponibles, escriviu docker a la vostra consola.

# docker

Pas 2: Baixeu una imatge de Docker

8. Per iniciar i executar un contenidor de Docker, primer, s'ha de baixar una imatge des de Docker Hub al vostre amfitrió. Docker Hub ofereix moltes imatges gratuïtes dels seus dipòsits.

Per cercar una imatge de Docker, Ubuntu, per exemple, emet l'ordre següent:

# docker search ubuntu

9. Després de decidir quina imatge voleu executar segons les vostres necessitats, descarregueu-la localment executant l'ordre següent (en aquest cas es baixa i s'utilitza una imatge d'Ubuntu):

# docker pull ubuntu

10. Per llistar totes les imatges de Docker disponibles al vostre amfitrió, feu l'ordre següent:

# docker images

11. Si ja no necessiteu una imatge de Docker i voleu eliminar-la de l'amfitrió, feu l'ordre següent:

# docker rmi ubuntu

Pas 3: executeu un contenidor Docker

Quan executeu una ordre contra una imatge, bàsicament obteniu un contenidor. Un cop finalitza l'ordre que s'està executant al contenidor, el contenidor s'atura (obté un contenidor que no s'executa o s'ha sortit). Si torneu a executar una altra ordre a la mateixa imatge, es crea un contenidor nou i així successivament.

Tots els contenidors creats romandran al sistema de fitxers amfitrió fins que trieu eliminar-los mitjançant l'ordre docker rm.

12. Per crear i executar un contenidor, heu d'executar l'ordre en una imatge baixada, en aquest cas, Ubuntu, de manera que una ordre bàsica seria mostrar el fitxer de versió de distribució dins del contenidor mitjançant l'ordre cat, com a continuació exemple:

# docker run ubuntu cat /etc/issue

L'ordre anterior es divideix de la següent manera:

# docker run [local image] [command to run into container]

13. Per tornar a executar un dels contenidors amb l'ordre que s'ha executat per crear-lo, primer, heu d'obtenir l'identificador del contenidor (o el nom generat automàticament per Docker) emetent l'ordre següent, que mostra una llista dels continguts en execució i contenidors aturats (que no funcionen):

# docker ps -l 

14. Un cop obtingut l'ID del contenidor, podeu tornar a iniciar el contenidor amb l'ordre que s'ha utilitzat per crear-lo, emetent l'ordre següent:

# docker start 923a720da57f

Aquí, la cadena 923a720da57f representa l'ID del contenidor.

15. En cas que el contenidor estigui en estat d'execució, podeu obtenir el seu ID emetent l'ordre docker ps. Per aturar l'execució del contenidor, emet l'ordre docker stop especificant l'ID del contenidor o el nom generat automàticament.

# docker stop 923a720da57f
OR
# docker stop cool_lalande
# docker ps

16. Una alternativa més elegant perquè no hàgiu de recordar l'ID del contenidor seria assignar un nom únic per a cada contenidor que creeu utilitzant l'opció --name a la línia d'ordres, com en el següent exemple:

# docker run --name ubuntu20.04 ubuntu cat /etc/issue

17. Aleshores, utilitzant el nom que heu assignat al contenidor, podeu manipular el contenidor (iniciar, aturar, eliminar, amunt, estadístiques) només dirigint-ne el nom, com en els exemples següents:

# docker start ubuntu20.04
# docker stats ubuntu20.04
# docker top ubuntu20.04 

Tingueu en compte que algunes de les ordres anteriors poden no mostrar cap sortida si el procés d'ordre que s'ha utilitzat per crear el contenidor acaba. Quan acaba el procés que s'executa dins del contenidor, el contenidor s'atura.

Pas 4: executeu una sessió interactiva en un contenidor

18. Per connectar-vos de manera interactiva a una sessió d'intèrpret d'ordres de contenidor i executar ordres com ho feu a qualsevol altra sessió de Linux, emeteu l'ordre següent:

# docker run -it ubuntu bash

L'ordre anterior es divideix de la següent manera:

  1. -i s'utilitza per iniciar una sessió interactiva.
  2. -t assigna un TTY i adjunta stdin i stdout.
  3. ubuntu és la imatge que hem utilitzat per crear el contenidor.
  4. bash (o /bin/bash) és l'ordre que estem executant dins del contenidor Ubuntu.

19. Per sortir i tornar a l'amfitrió des de la sessió del contenidor en execució, heu d'escriure l'ordre exit. L'ordre de sortida finalitza tots els processos del contenidor i l'atura.

# exit

20. Si heu iniciat sessió interactivament a l'indicador del terminal del contenidor i necessiteu mantenir el contenidor en estat d'execució però sortiu de la sessió interactiva, podeu sortir de la consola i tornar al terminal amfitrió prement Ctrl+p i Ctrl+q.

21. Per tornar a connectar-se al contenidor en execució, necessiteu l'ID o el nom del contenidor. Emet l'ordre docker ps per obtenir l'ID o el nom i, a continuació, executeu l'ordre docker attach especificant l'ID o el nom del contenidor, tal com es mostra a la imatge de dalt:

# docker attach <container id>

22. Per aturar un contenidor en execució des de la sessió de l'amfitrió, emeteu l'ordre següent:

# docker kill <container id>

Això és tot per a la manipulació bàsica dels contenidors. Al següent tutorial, parlarem de com desar, suprimir i executar un servidor web en un contenidor Docker.