GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Guía rápida sobre Docker Utilities, Daemon y sus otras capacidades

Introducción

Docker está desempeñando un papel muy importante como formato de empaquetado para las aplicaciones y como interfaz unificadora y metodología que permite que los equipos de la aplicación sean propietarios de las imágenes de contenedor con formato de Docker (Nota:se supone que incluye todas las dependencias). Esto ha convertido a Docker en uno de los líderes líderes en microservicios. y adaptación y uso basados ​​en microservicios.

Muchas de las utilidades basadas en Docker y Docker nos ayudan a brindar mayores eficiencias de escalabilidad y rendimiento al reducir el espacio de las aplicaciones a través de Dockerized. contenedores En muchos casos, las dependencias a nivel del sistema se reducen al mínimo, lo que ayuda a reducir el uso de la memoria en términos de MB (megabytes).

Todos estos aspectos ayudaron a hacer de Docker una de las principales utilidades basadas en contenedores. Docker tiene muchas utilidades y capacidades de línea de comandos. Docker Daemon puede proporcionar muchas de estas funciones adicionales y facilita la configuración de Docker.

Lea también:Cómo instalar Docker (Community Edition) en Ubuntu 16.04/18.04 LTS

Espero que el lector/usuario de este artículo sepa cómo hacer spin-off de docker-container en cualquier entorno Linux dado. Asumiendo esto, se describen algunas de las siguientes instalaciones,

Algunas de estas instalaciones se pueden utilizar para las siguientes funciones,

  • Consultar la información del servidor Docker
  • Descargar imágenes y actualizaciones de Docker
  • Inspeccionar contenedores
  • Ver y monitorear registros
  • Supervise varias estadísticas y detalles

1) Cómo verificar la versión actual de docker

Conocer la versión de Docker es uno de los aspectos más importantes, ya que dependiendo de esto, se toman muchas de las decisiones basadas en la versión.

[email protected]:~$ sudo docker version
Client:
 Version:           18.09.5
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        e8ff056
 Built:             Thu Apr 11 04:43:57 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.5
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       e8ff056
  Built:            Thu Apr 11 04:10:53 2019
  OS/Arch:          linux/amd64
  Experimental:     false
[email protected]:~$

Esta salida anterior proporciona las mismas versiones de la API del servidor y del cliente, y la versión del sistema operativo y la arquitectura también deberían ser las mismas. Si hay alguna discrepancia en las versiones basadas en el cliente y el servidor, la comunicación entre el cliente y el servidor fallará. Uno tiene que asegurarse de cuáles son las versiones compatibles y tomar decisiones en consecuencia.

2) Capturar y analizar información del servidor

Usando docker info también podemos encontrar la siguiente información. Parte de la información útil que podemos recopilar es algo como qué servidor se está ejecutando como backend, qué versión de kernel es, qué sistema operativo y directorio raíz de Docker, etc.

[email protected]:~$ sudo docker info
Containers: 2
 Running: 1
 Paused: 0
 Stopped: 1
Images: 4
Server Version: 18.09.5
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: bb71b10fd8f58240ca47fbb579b9d1028eea7c84
runc version: 2b18fe1d885ee5083ef9f0838fee39b62d653e30
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.15.0-20-generic
Operating System: Ubuntu 18.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.947GiB
Name: linuxtechi
ID: VRUY:AWXX:7JWE:YWU7:X4QW:TNKE:6H26:PNRR:QFGI:XYRQ:QUXF:MTXC
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
WARNING: No swap limit support
[email protected]:~$

Toda la información anterior se basa en cómo está configurado Docker Daemon, la versión del sistema operativo subyacente y el tipo de sistema de archivos. Todo esto se puede capturar usando el siguiente conjunto de comandos,

Ejecute el siguiente comando para obtener el nombre del sistema operativo, su versión y el nombre del código

[email protected]:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"
[email protected]:~$

o

[email protected]:~$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"
NAME="Ubuntu"
VERSION="18.04 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
[email protected]:~$

Ejecute el siguiente comando para obtener los detalles del sistema de archivos:

[email protected]:~$ mount | grep "^/dev"
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
[email protected]:~$

3) Demonio acoplable

El demonio de la ventana acoplable juega un papel muy importante en el entorno de la ventana acoplable en su conjunto.

Sin un demonio adecuado, el sistema docker completo será inútil. Uno puede verificar el estado del demonio usando el siguiente comando,

Nota :- Suponiendo que se haya realizado la instalación adecuada de la ventana acoplable

[email protected]:~$ sudo service docker status

Si el servicio docker se está ejecutando, la salida del comando anterior debería ser similar a la siguiente:

En caso de que el servicio docker no se esté ejecutando, use el siguiente comando para iniciarlo

[email protected]:~$ sudo systemctl start docker
or
[email protected]:~$ sudo service docker start
[email protected]:~$

Use a continuación "docker ps Comando para enumerar los contenedores en ejecución

[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[email protected]:~$

Para enumerar todos los contenedores en ejecución y detenidos, use "docker ps -a

[email protected]:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
497e6733d760        ubuntu              "bash"              19 minutes ago      Exited (0) 2 minutes ago                        goofy_morse
0862fe109f96        hello-world         "/hello"            19 minutes ago      Exited (0) 19 minutes ago                       vibrant_shannon
[email protected]:~$

El directorio raíz predeterminado de Docker es "/var/lib/docker"

[email protected]:~$ sudo ls -l /var/lib/docker
total 48
drwx------  2 root root 4096 Apr 14 07:00 builder
drwx------  4 root root 4096 Apr 14 07:00 buildkit
drwx------  4 root root 4096 Apr 14 07:09 containers
drwx------  3 root root 4096 Apr 14 07:00 image
drwxr-x---  3 root root 4096 Apr 14 07:00 network
drwx------ 16 root root 4096 Apr 14 07:27 overlay2
drwx------  4 root root 4096 Apr 14 07:00 plugins
drwx------  2 root root 4096 Apr 14 07:27 runtimes
drwx------  2 root root 4096 Apr 14 07:00 swarm
drwx------  2 root root 4096 Apr 14 07:27 tmp
drwx------  2 root root 4096 Apr 14 07:00 trust
drwx------  2 root root 4096 Apr 14 07:00 volumes
[email protected]:~$

El demonio docker, si no se inicia, se puede invocar con el siguiente comando,

[email protected]:~$ sudo dockerd

Salida de arriba dockerd el comando será algo como lo siguiente:

Lea también:Cómo instalar Docker en CentOS 7

4) Descargando la imagen del contenedor docker e inspeccionando el contenedor

[email protected]:~$ sudo docker pull ubuntu:latest
Using default tag: latest
latest: Pulling from library/ubuntu
898c46f3b1a1: Pull complete
63366dfa0a50: Pull complete
041d4cd74a92: Pull complete
6e1bee0f8701: Pull complete
Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Status: Downloaded newer image for ubuntu:latest
[email protected]:~$
latest: Pulling from library/ubuntu898c46f3b1a1: Pull complete
63366dfa0a50: Pull complete
041d4cd74a92: Pull complete6e1bee0f8701: Pull complete
Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8Status: Downloaded newer image for ubuntu:latest

Lanzando un contenedor, el ejemplo se muestra a continuación

[email protected]:~$ sudo docker run -d -t ubuntu /bin/bash
58c023f0f5689ff08b858221ca10c985936a8c9dd91d08e84213009facb64724
[email protected]:~$
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
58c023f0f568        ubuntu              "/bin/bash"         27 seconds ago      Up 26 seconds                           boring_dijkstra
[email protected]:~$

Inspeccionemos este contenedor usando el siguiente comando,

[email protected]:~$ sudo docker inspect 58c023f0f568
[
    {
        "Id": "58c023f0f5689ff08b858221ca10c985936a8c9dd91d08e84213009facb64724",
        "Created": "2019-04-14T06:55:26.289022884Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 15538,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-04-14T06:55:27.142274111Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:94e814e2efa8845d95b2112d54497fbad173e45121ce9255b93401392f538499",
        "ResolvConfPath": "/var/lib/docker/containers/58c023f0f5689ff08b858221ca10c985936a8c9dd91d08e84213009facb64724/resolv.conf",
………………………………………………

Nota:- La salida completa de este comando no se muestra aquí, porque su salida es demasiado grande

5) Ir dentro de la imagen del contenedor en ejecución

Como uno sabe, Docker usó originalmente todo lo basado en el backend LXC, el comando lxc-attach de Linux se usó durante bastante tiempo. Pero una vez que Docker se creó como un paquete independiente y comenzó a usar "libcontainer ” como backend predeterminado, el uso del comando “docker exec” se hizo popular

A continuación, el conjunto de comandos explica cómo iniciar sesión en el contenedor mediante la línea de comandos,

:~$ sudo docker  exec -t  

[email protected]:~$ sudo docker  exec -t 58c023f0f568 ls -a
.   .dockerenv  boot  etc   lib    media  opt   root  sbin  sys  usr
..  bin         dev   home  lib64  mnt    proc  run   srv   tmp  var
[email protected]:~$ sudo docker  exec -t 58c023f0f568 ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 06:55 pts/0    00:00:00 /bin/bash
root        20     0  0 07:17 pts/1    00:00:00 ps -ef
[email protected]:~$

La forma alternativa de ejecutar comandos dentro del contenedor es, primero inicie sesión en el contenedor usando "docker adjuntar ” y luego ejecutar comandos

:~$ sudo docker adjuntar

[email protected]:~$ sudo docker attach 58c023f0f568
[email protected]:/#

Hay algunas situaciones en las que desea iniciar un contenedor, adjuntarle un volumen y cuando salimos del contenedor, debería eliminarse automáticamente, el ejemplo se muestra a continuación

[email protected]:~$ sudo docker run -it --rm -v /usr/local/bin:/target jpetazzo/nsenter bash
[email protected]:/src# df -h /target/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        18G  5.6G   12G  34% /target
[email protected]:/src# exit
exit
[email protected]:~$

Ahora verifique si docker se elimina o no automáticamente cuando salimos del contenedor, ejecute "docker ps"

[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
58c023f0f568        ubuntu              "/bin/bash"         About an hour ago   Up About an hour                        boring_dijkstra
[email protected]:~$

6) Ventana acoplable de supervisión

Use "estadísticas de Docker ” comando para mostrar la utilización de recursos de todos los contenedores,

[email protected]:~$ sudo docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
58c023f0f568        boring_dijkstra     0.00%               1.059MiB / 1.947GiB   0.05%               4.75kB / 0B         4.74MB / 0B         1
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
58c023f0f568        boring_dijkstra     0.00%               1.059MiB / 1.947GiB   0.05%               4.75kB / 0B         4.74MB / 0B         1
[email protected]:~$

7) Eventos acoplables

Muchas veces, la captura de eventos de la ventana acoplable será crucial, ya que esto proporcionará información sobre varias operaciones y eventos de la ventana acoplable que tienen lugar. A continuación se muestra la instantánea de la misma.

[email protected]:~$ sudo docker events
2019-04-14T09:29:07.636990738+01:00 image pull wordpress:latest (name=wordpress)
2019-04-14T09:29:46.936676431+01:00 volume create 36187e0a44d277439fea0df2446fc44987fa814c52744091929e5c81bd8134e5 (driver=local)
2019-04-14T09:29:46.998798935+01:00 container create b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (image=wordpress, name=friendly_heisenberg)
2019-04-14T09:29:47.000202026+01:00 container attach b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (image=wordpress, name=friendly_heisenberg)
2019-04-14T09:29:47.209257002+01:00 network connect 18dd93c3c6fc9ce51a98f7d2359b319db251efcae6b991157965ef727a580702 (container=b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058, name=bridge, type=bridge)
2019-04-14T09:29:47.239846902+01:00 volume mount 36187e0a44d277439fea0df2446fc44987fa814c52744091929e5c81bd8134e5 (container=b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058, destination=/var/www/html, driver=local, propagation=, read/write=true)
2019-04-14T09:29:47.942997316+01:00 container start b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (image=wordpress, name=friendly_heisenberg)
2019-04-14T09:29:47.944521098+01:00 container resize b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (height=39, image=wordpress, name=friendly_heisenberg, width=130)
2019-04-14T09:29:59.829378089+01:00 container die b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (exitCode=0, image=wordpress, name=friendly_heisenberg)
2019-04-14T09:30:00.147435896+01:00 network disconnect 18dd93c3c6fc9ce51a98f7d2359b319db251efcae6b991157965ef727a580702 (container=b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058, name=bridge, type=bridge)
2019-04-14T09:30:00.845336887+01:00 volume unmount 36187e0a44d277439fea0df2446fc44987fa814c52744091929e5c81bd8134e5 (container=b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058, driver=local)
………………
Conclusión

La combinación de todos estos comandos y utilidades es muy importante para hacer de docker y container un entorno exitoso basado en microservicios. Como muchas de las arquitecturas de microservicios necesitan este tipo de utilidades para depurar, comprender y aprender más sobre ellas para el uso diario, espero que este artículo desempeñe un papel para ayudar en estos casos.

Lea también:Cómo instalar y usar docker-compose para implementar contenedores en CentOS 7


Docker
  1. Cómo instalar Docker y Docker Compose en Debian 11

  2. Ejecución de PostgreSQL en Docker, una guía rápida y práctica

  3. Qué es Docker, diferencia entre Docker y VM, instalación de Docker y su uso

  4. Linux - "init:versión 2.86 recargando" - ¿Causa y solución?

  5. Una guía rápida para usar Docker Compose

Guía de revisión y actualización de Linux Mint 20.1 “Ulyssa”

Cómo verificar los detalles de la versión de Ubuntu y otra información del sistema

Aprovisione NGINX en Docker y aumente las capacidades del servidor

Cómo verificar la versión de Ubuntu:métodos rápidos y fáciles

.NET Core y Docker

.NET y Docker