Imagen de Docker (imagen) y contenedor (contenedor)

¿Qué es una imagen de Docker (imagen)?

  • La imagen de espejo se compone de varias capas, después de que cada capa se superpone, parece un objeto independiente desde el exterior;
  • Dentro de la imagen hay un sistema operativo (SO) optimizado, que también contiene los archivos y las dependencias necesarias para que se ejecute la aplicación;
  • La imagen puede ejecutar uno o más contenedores, y la imagen también puede detener el funcionamiento de un contenedor y crear una nueva imagen a partir de él;

[Clasificación de imágenes en espejo (iamge)]


[Comandos comunes de espejo (imagen)]

  • docker image pull = "descargar imagen (descargar desde el servicio de almacén de imágenes público remoto Docker Hub de forma predeterminada);
  • docker image pull alpine: latest = "Extraiga [etiqueta / versión] del almacén de línea de Docker Hub como la última imagen;
  • docker image pull nginx: latest = "Extraiga [etiqueta / versión] del almacén nginx de Docker Hub como la última imagen;
  • docker image pull -a nginx / xxx = "Extrae todas las imágenes del almacén, el parámetro -a es todo;
  • docker image ls -a o docker images -a = "Muestra las imágenes almacenadas en el host local de Docker (no se muestra), el parámetro -a es todo;
  • historial de imágenes de docker nginx = "Ver información de instalación del espejo nginx;
  • docker image inspect ubuntu: latest = "Ver información de la capa de imagen de ubuntu, mostrar todos los detalles de la imagen (incluidos los datos y metadatos de la capa de imagen);
  • docker image rm ubuntu: latest = "Elimina ubuntu: latest image;
  • docker image build = "crea una imagen nueva;

[Ver los parámetros de configuración del comando de administración de imágenes (comando)]

  • docker image [nombre de comando específico] --help = "muestra la imagen correspondiente a los parámetros de configuración del comando de administración

【Filtro de parámetros - filtro】

  • docker image ls --filter dangling = true =》 Volver a colgar ( colgar / espejo sin etiqueta se llama espejo colgante , se muestra en la lista como <ninguno>: <ninguno>) espejo;

  • docker image prune =》 Eliminar todas las imágenes virtuales suspendidas. Si se agrega el parámetro -a, Docker eliminará adicionalmente las imágenes no utilizadas (aquellas imágenes que no son utilizadas por ningún contenedor);

Docker actualmente admite los siguientes filtros:
    colgantes: puede especificar verdadero o falso, y solo devolver imágenes virtuales colgantes (verdadero) o imágenes virtuales no colgantes (falso).
    before: Requiere el nombre o ID de la imagen como parámetro y devuelve todas las imágenes creadas antes.
    desde: similar a antes, pero devuelve todos los espejos creados después del espejo especificado.
    etiqueta: filtra la imagen según el nombre o el valor de la etiqueta.

    docker image ls --filter = reference = "*: latest" =》 La referencia completa el filtrado y solo muestra el ejemplo
    cuya etiqueta es la más reciente; docker image ls --format "{ {.Size}}" =》 Parámetro - formato a través de Go La plantilla formatea el contenido de salida y solo devuelve el atributo de tamaño de la
    imagen en el host de Docker; docker image ls --format "{ {.Repository}}: { {.Tag}}: { {.Size}} "=" Devuelve todo Mirror, pero solo muestra información de almacén, etiqueta y tamaño;

[CLI search Docker Hub] = "Volver al espejo oficial [oficial] o no oficial [automatizado]

  • docker search nginx = "modo simple, busca todos los almacenes que contienen una cadena específica en el campo" NAME = nginx ";
  • docker search nginx --filters "is-official = true" = "devuelve el contenido de nginx y solo muestra la imagen oficial;
  • docker search nginx --filters "is-automatic = true" = "devuelve el contenido de nginx y solo muestra imágenes no oficiales;

Nota: [búsqueda de Docker] De forma predeterminada, Docker solo devuelve 25 filas de resultados. Puede aumentar el número de filas devueltas por el parámetro --limit, hasta 100 filas;

Por ejemplo: docker search nginx --limit 60

[Operación del archivo Docker]

  • vi / vim index.html = "Edite la información del archivo index.html, es posible que sea necesario instalar vim, el valor predeterminado de Linux es vi;
  • docker cp index.html 41c15dlacff0: // usr / share / nginx / html =》 Copie el archivo index.html en el contenedor de la ventana acoplable, seguido del ID del contenedor: ruta de almacenamiento;
  • docker rm nginx =》 Elimina el archivo de imagen, que puede ir seguido del nombre o ID de la imagen;
  • docker rm -f xxx =》 El parámetro -f se borra a la fuerza sin preguntar;
  • docker rm -rf xxx =》 Eliminar todos los archivos de la carpeta y sus subcarpetas, el parámetro -r elimina recursivamente hacia abajo;
  • docker mv = "mover o renombrar;
  • docker mv Dockerfile ../chait/ =》 Mueva el Dockerfile a ../chait/;
  • docker mv Dockerfile docfile = "Cambiar el nombre a docfile;
  • docker commit -m'xxx '41c15dlacff0 newimagename = "Envíe el archivo, el parámetro -m nombre del archivo, seguido del ID de la imagen original, el nuevo nombre de la imagen;

[Operación de archivos de Linux]

  • ls =》 Ver todos los archivos bajo esta ruta;
  • mkdir xxx =》 Agregar nueva carpeta;
  • vi / vim xxx = "Edite el archivo;
  • rm -f xxx =》 Eliminar archivos, el parámetro -f se ve obligado a eliminar;
  • rm -rf xxx = "eliminar el directorio y todos los subdirectorios y archivos, el parámetro -r recursivamente hacia abajo, -f forzar eliminaciones;
  • cat xxx =》 Ver el contenido del archivo;
  • : wq =》 Salir y guardar el contenido editado;
  • sudo apt install lrzsz = "instala la herramienta de carga de archivos lrzsz;
  • rz = "Carga de archivos, basada en lrzsz;

【Ver número de puerto】

  • su root = "Cambiar de usuario root;
  • lsof -i: port = "información del puerto de salida;
  • netstat -aptn = "Ver todos los números de puerto abiertos;
  • netstat -nupl = "Ver todos los números de puerto usando el protocolo udp;
  • netstat -ntpl = "Ver todos los números de puerto usando el protocolo tcp;

[Comando de reinicio de Linux]
    1. reiniciar 
    2. apagar -r ahora reiniciar inmediatamente
    3. apagar -r 10 reiniciar automáticamente después de 10 minutos
    4. apagar -r 20:35 reiniciar a las 20:35

    Si el reinicio se establece mediante el comando shutdown, puede utilizar el comando shutdown -c para cancelar el reinicio;

[Comando de apagado de Linux]
    1. halt se apaga inmediatamente (generalmente agregue -p para apagar la energía)
    2. poweroff se apaga inmediatamente 
    3. shutdown -h ahora se apaga inmediatamente
    4. shutdown -h 10 se apaga automáticamente después de 10 minutos 

    Si el apagado se establece mediante el comando shutdown, puede utilizar el comando shutdown -c para cancelar el apagado;

[Limpieza rápida (violencia)]

  • rm $ (docker image ls -a) -f = "Elimina todas las imágenes de imagen en el host de la ventana acoplable, el parámetro -f se ve obligado a eliminar
  • docker container rm $ (docker container ls -aq) =》 Eliminar todos los contenedores en el host de la ventana acoplable (eliminar la identificación del contenedor)

Manera elegante: detener y luego rm =》 pausar primero, eliminar;

[Reiniciar el servicio de doker]

  • systemctl start docker = "Iniciar el servicio docker;
  • sudo systemctl daemon-reload = "Reinicie el demonio;
  • systemctl restart docker = "Reinicia el servicio de la ventana acoplable;
  • sudo service docker restart = "Reinicia el servicio de la ventana acoplable;
  • service docker stop = "Cerrar el servicio docker;
  • systemctl stop docker = "Cierre el servicio de la ventana acoplable;

[Conjunto de comandos de espejo]

  • docker image --help =》 Ver todos los comandos de administración de la imagen


¿Qué es un contenedor Docker (contenedor)?

  • Un contenedor es una instancia en ejecución de una imagen y una imagen puede crear varios contenedores;
  • La diferencia entre un contenedor y una máquina virtual: el contenedor se inicia más rápido y es más ligero. En comparación con una máquina virtual que se ejecuta en un sistema operativo completo, el contenedor comparte el sistema operativo / kernel del host donde se encuentra.

[La diferencia entre duplicación y contenedor]

  • El estado es diferente, la imagen es una estructura en tiempo de construcción y el contenedor es una estructura en tiempo de ejecución;
  • La imagen es de solo lectura y no se puede escribir, y el contenedor se puede leer y escribir;

[Relación entre espejo y contenedor]

  • Una imagen puede construir varios contenedores, relación 1: n uno a muchos;
  • La intención original del contenedor es ser rápido y pequeño, por lo que la imagen suele ser relativamente pequeña. Los comandos [docker container run] y [docker service create] = "inician uno o más contenedores desde una determinada imagen. Una vez que el contenedor se inicia desde el espejo, la relación entre los dos se vuelve mutuamente dependiente y el espejo no se puede eliminar hasta que se detengan todos los contenedores que comenzaron en el espejo. Intentar eliminar una imagen sin detener o destruir el contenedor que la usa provocará un error;

La imagen especular suele ser pequeña.

El propósito del contenedor es ejecutar una aplicación o servicio, lo que significa que la imagen del contenedor debe contener el sistema operativo y los archivos de la aplicación necesarios para que la aplicación / servicio se ejecute.

Sin embargo, el contenedor persigue la velocidad y la compacidad, lo que significa que a la hora de construir una imagen, suele ser necesario recortar partes innecesarias y mantener el volumen reducido.

Por ejemplo, una imagen de Docker generalmente no contiene 6 shells diferentes para que los lectores elijan; por lo general, solo hay un shell optimizado en una imagen de Docker, o incluso no hay shell.

 

La imagen aún no contiene el kernel; los contenedores son el kernel del host Docker compartido. Por lo tanto, a veces se dice que el contenedor solo contiene el sistema operativo necesario (generalmente solo archivos del sistema operativo y objetos del sistema de archivos). Consejo: El contenedor Hyper-V se ejecuta en una máquina virtual ligera dedicada mientras se usa el kernel del sistema operativo dentro de la máquina virtual.

 

La imagen oficial de Docker, Alpine Linux, tiene solo unos 4 MB, lo que se puede decir que es un ejemplo típico de la compacidad de la imagen de Docker.

Sin embargo, el estado más común de la imagen es como la imagen oficial de Ubuntu Docker, que tiene aproximadamente 110 MB. La mayor parte del contenido inútil se ha cortado en estas imágenes de espejo.

La imagen de Windows es más grande que la imagen de Linux, que está relacionada con el principio de funcionamiento del sistema operativo Windows. Por ejemplo, la última imagen de Microsoft .NET sin comprimir (microsoft / dotnet: latest) supera los 1,7 GB.

Después de extraer y descomprimir la imagen de Windows Server 2016 Nano Server (microsoft / nanoserver: último), su volumen es un poco más grande que 1 GB.

 

[Comandos de contenedor (contenedor) de uso común]

  • docker container run <image> <app> = "Especifica la imagen requerida para el inicio y la aplicación que se ejecutará;
  • docker container run -it ubuntu / bin / bash = "Inicie el contenedor ubuntu y ejecute Bash Shell como su aplicación;
  • Docker container run -it microsoft- / powershell: nanoserver pwsh.exe = "Inicie el contenedor nanoserver y ejecute PowerShell como su aplicación;
  • El comando docker container run -it ubuntu / bin / bash = "iniciará un contenedor Ubuntu en primer plano y ejecutará Bash Shell;

[Ctrl + PQ] romperá el vínculo entre el Shell y la terminal de contenedores, y mantendrá el contenedor en ejecución (ARRIBA) en segundo plano después de salir.

El parámetro -it puede conectar el terminal actual al terminal shell del contenedor. El contenedor termina con la salida de la aplicación que se ejecuta en él. El contenedor de Linux terminará después de que salga Bash Shell, y el contenedor de Windows se cerrará después de que termine el proceso de PowerShell. El método de verificación es iniciar un nuevo contenedor y ejecutar el comando sleep para dormir durante 10 s, el contenedor se iniciará, luego ejecutará el comando sleep y saldrá después de 10 s =》 docker container run alpine: latest sleep 10

  • docker container ls = "Lista todos los contenedores en el estado de ejecución (ARRIBA). Si usa la bandera -a, también puede ver el contenedor en el estado Salido.
  • El comando docker container exec -it <container-name o container-id> bash = "iniciará un proceso de Bash Shell dentro del contenedor y se conectará al Shell (la imagen utilizada para crear el contenedor debe incluir el Bash Shell. El shell del host es muy útil cuando se conecta a una terminal de contenedores en ejecución);
  • docker container stop <container-name o container-id> = "Detenga el contenedor en ejecución y establezca el estado en Salido (parada de 10 s);
  • docker container start <container-name or container-id> = "Reinicia el contenedor en el estado Salido;
  • docker container stop <container-name o container-id> = "Elimina el contenedor detenido;
  • docker container inspect <container-name o container-id> = "Muestra los detalles de configuración jerárquica y la información de tiempo de ejecución del contenedor; 

[Conjunto de comandos de contenedor]

  • docker container --help =》 Ver todos los comandos de administración del contenedor

[Comprobar demonio de Docker (demonio)]

Si se incluye un código de error en la parte del servidor, significa que el demonio de Docker probablemente no se está ejecutando o que el usuario actual no tiene permiso para acceder;

[Resuelva el problema del acceso no autorizado en Linux]

  1. Confirme si el usuario actual pertenece al grupo local de Docker UNIX; de lo contrario, agréguelo a través de [usermod -aG docker <usuario>], cierre la sesión e inicie sesión en Shell nuevamente, y la modificación tendrá efecto;
  2. El usuario pertenece al grupo de usuarios de Docker, lo que puede deberse a que el demonio de Docker no se está ejecutando. Según el sistema operativo del host de Docker, seleccione el siguiente comando correspondiente para verificar el estado del demonio;
//使用 Systemd 在 Linux 系统中执行该命令
$ service docker status
docker start/running, process 29393

//使用 Systemd 在Linux 系统中执行该命令
$ systemctl is-active docker
active

//在Windows Server 2016的 PowerShell 窗口中运行该命令
> Get-Service docker

Status Name DisplayName
------ ---- -----------
Running Docker docker

[Libro de instrucciones de Docker]

  • docker --help = "Ver todos los comandos de administración en la ventana acoplable;
  • docker --info = "Ver información de la ventana acoplable;

  •  Comandos de administración Comandos de administración:

Supongo que te gusta

Origin blog.csdn.net/ChaITSimpleLove/article/details/105211146
Recomendado
Clasificación