Configuración de la imagen de Docker

Imagen: es una plantilla de contenedor de Docker de solo lectura que contiene toda la estructura y el contenido del sistema de archivos necesarios para iniciar el contenedor.

En pocas palabras, la duplicación es un sistema de archivos especial que proporciona datos estáticos, como programas, bibliotecas de software, recursos, configuración, etc., que el contenedor necesita para ejecutarse. La duplicación no contiene ningún dato dinámico y el contenido de la duplicación no se cambiará después de su construcción.

Las operaciones de duplicación más utilizadas se muestran en la figura: 

imagen

Tire del espejo

Formato de comando: docker pull [Registro] / [Repositorio] / [Imagen]: [Etiqueta]

Registro: servidor de registro. Docker extraerá la imagen espejo de docker.io de forma predeterminada. Si tiene su propio almacén espejo, puede reemplazar el registro con su propio servidor de registro.

Repositorio: repositorio de réplicas, normalmente un grupo de réplicas relacionadas se clasifican como un repositorio de réplicas, y la biblioteca es el repositorio de réplicas predeterminado de Docker.

Imagen: el nombre de la imagen.
Etiqueta: la etiqueta de la imagen. Si no especifica la etiqueta para extraer la imagen, la predeterminada es la más reciente.

 

Por ejemplo: obtenga un comando de duplicación
llamado busybox: docker pull busybox

imagen

Este
comando buscará primero localmente. Si la imagen de busybox no se puede encontrar localmente, la imagen se descargará del sitio web de docker hup.

 

Espejo de vista

imágenes de docker
Este comando puede enumerar todos los espejos locales

imagen

 

Use ls para ver la imagen especificada: docker image ls test_image

imagenimagen

Use grep para ver la imagen especificada: docker images | grep test_image
imagen

 

Cambiar el nombre del espejo

Formato de comando: etiqueta de Docker [SOURCE_IMAGE] [: TAG] [TARGET_IMAGE] [: TAG]

imagen

 El
significado de este comando es cambiar el nombre de la
imagen a: test_image y etiquetar a: latest a: una nueva imagen del nombre de la imagen a: test_image_copy y etiquetar a: latest, que es equivalente a copiar, en lugar de matar directamente la imagen original .

 

Utilice el comando docker images para ver la imagen que acaba de cambiar de nombre a: test_image_copy.
Puede ver que el nombre de la imagen es: test_image y test_image_copy. El ID de IMAGEN y el TAMAÑO son exactamente iguales. Es porque apuntan al mismo archivo de imagen, pero los alias son diferentes.
Esto también confirma que la etiqueta de la ventana acoplable antes mencionada tiene una función similar a la de copiar.

imagen

 

Eliminar espejo

comando docker rmi o docker image rm

imagen


use el comando: docker rmi test_image_copy eliminar un espejo llamado: Después de test_image_copy, reutilice las imágenes de docker para ver todo el espejo local, espejo test_image_copy que no se encuentra en la lista, lo que indica que se eliminó correctamente

 

Crear imagen

(1) Use el comando docker commit para enviar la imagen desde el contenedor en ejecución

Por ejemplo: Enviar desde un contenedor en ejecución como una imagen
Cree un contenedor llamado test_image e ingrese el comando test_image container
: docker run --rm --name = test_image -it test_image sh

imagen

 

Cree un archivo en el contenedor test_image y escriba el comando de contenido
: toque hello_world.txt && echo "Me gusta el mundo de Docker."> Hello_world.txt

imagenEn
este momento, se ha creado un archivo llamado hello_world.txt en el directorio raíz del contenedor y se ha escrito: Me gusta el mundo de la ventana acoplable.

 

Abra una nueva ventana de línea de comando, ejecute el siguiente comando para enviar el comando de imagen
: docker commit test_image test_image: hello_world

imagenEl
contenido devuelto por este comando es el ID del contenedor

Use el comando docker image ls para ver la imagen

imagen
Puede ver que la lista de réplicas local tiene un nuevo nombre: test_image, TAG es: hello_world y la ID de IMAGEN es diferente de la ID de IMAGEN de la réplica con el mismo nombre.

 

(2) Utilice el comando docker build para crear un espejo a partir de un Dockerfile [la forma más importante y común de crear un espejo]


El uso de Dockerfile para crear una imagen tiene las siguientes características:


1) Cada línea del comando Dockerfile generará una capa de imagen independiente y tiene una ID única


2) Los comandos de Dockerfile son completamente transparentes, al ver el contenido de Dockerfile, puede saber cómo se construye la imagen paso a paso.


3) Dockerfile es texto sin formato, que es conveniente para almacenar en el almacén de código junto con el código y realizar la gestión de versiones.

 

Las siguientes son instrucciones de funcionamiento comunes para Dockerfile

imagen
siguiendo estas instrucciones para familiarizarse con un ejemplo, el siguiente fragmento de código es un Dockerfile:

FROM centos:7

COPY nginx.repo /etc/yum.repos.d/nginx.repo

RUN yum install -y nginx

EXPOSE 80

ENV HOST=mynginx

CMD ["nginx","-g","daemon off;"]

 

Análisis detallado de las instrucciones de Dockerfile:
[1] La primera línea: FROM centos: 7
significa: se basa en centos: 7 para construir una imagen personalizada. Cabe señalar aquí que la primera línea de cada Dockerfile debe comenzar con FROM, excepto por los comentarios.

 

[2], la segunda línea: COPY nginx.repo /etc/yum.repos.d/nginx.repo
significa: copie el archivo local nginx.repo en el directorio /etc/yum.repos.d del contenedor. El archivo nginx.repo se copia aquí para agregar la fuente de instalación de nginx.

 

[3]. La tercera línea: EJECUTAR yum install -y nginx
significa: ejecutar el comando yum install -y nginx en el contenedor para instalar el servicio nginx en el contenedor. Después de ejecutar la tercera línea de comandos, el nginx en el contenedor ha sido instalado.

 

[4] La cuarta línea: EXPOSE 80
significa: declarar que la empresa en el contenedor (nginx) usa el puerto 80 para brindar servicios al mundo exterior.

 

[5]. La quinta línea: ENV HOST = mynginx
significa: define la variable de entorno HOST = mynginx cuando se inicia el contenedor. Después de que se inicia el contenedor, el valor de la variable de entorno HOST se puede obtener como mynginx.

 

[6] La sexta línea: CMD ["nginx", "- g", "daemon off;"]
significa: define el comando de inicio del contenedor, el formato del comando es una matriz json. El comando de inicio del contenedor se establece en nginx, y el parámetro de inicio -g'daemon off; 'de nginx se agrega para hacer que nginx comience en primer plano.

 

El principio de realización de la duplicación

 

De hecho, una imagen de Docker se compone de una serie de capas de imagen (capas), cada una de las cuales representa una presentación durante el proceso de creación de la imagen. El siguiente es un Dockerfile creado por una imagen para ilustrar cómo se superpone la imagen.

FROM test_image

COPY test /tmp/test

RUN mkdir /tmp/testdir

 

El Dockerfile anterior consta de tres pasos:

La primera línea: cree una capa de espejo basada en test_image;

La segunda línea: copie el archivo de prueba de la máquina en el espejo;

La tercera línea: cree un directorio testdir en la carpeta / tmp.

Para verificar la estructura de almacenamiento de la imagen, usamos el comando docker build para construir una imagen en el directorio donde se encuentra el Dockerfile anterior:

$ docker build -t test_image .

Aquí Docker usa el controlador de archivo overlay2, ingrese al directorio / var / lib / docker / overlay2 y use el comando tree. Para ver el archivo de imagen generado:


$ tree .

# 以下为 tree . 命令输出内容

|-- 3e89b959f921227acab94f5ab4524252ae0a829ff8a3687178e3aca56d605679

| |-- diff # 这一层为基础层,对应上述 Dockerfile 第一行,包含 busybox 镜像所有文件内容,例如 /etc,/bin,/var 等目录

... 此次省略部分原始镜像文件内容

| `-- link

|-- 6591d4e47eb2488e6297a0a07a2439f550cdb22845b6d2ddb1be2466ae7a9391

| |-- diff # 这一层对应上述 Dockerfile 第二行,拷贝 test 文件到 /tmp 文件夹下,因此 diff 文件夹下有了 /tmp/test 文件

| | `-- tmp

| | `-- test

| |-- link

| |-- lower

| `-- work

|-- backingFsBlockDev

|-- bec6a018080f7b808565728dee8447b9e86b3093b16ad5e6a1ac3976528a8bb1

| |-- diff  # 这一层对应上述 Dockerfile 第三行,在 /tmp 文件夹下创建 testdir 文件夹,因此 diff 文件夹下有了 /tmp/testdir 文件夹

| | `-- tmp

| | `-- testdir

| |-- link

| |-- lower

| `-- work

...

 

En la estructura de directorio anterior, puede ver que cada línea de comandos en el Dockerfile genera una capa de espejo, y solo los datos incrementales se almacenan en la carpeta diff de cada capa, como se muestra en la siguiente figura.

imagen

La estructura en capas hace que la imagen de Docker sea muy liviana. Cada capa tiene un valor de ID único de acuerdo con el contenido de la imagen. Cuando la misma capa de imagen está entre diferentes imágenes, la capa de imagen se puede compartir entre diferentes imágenes. Efecto.

 

para resumir:

La imagen de Docker es una combinación de archivos estáticos de administración jerárquica, y la implementación de la capa inferior de la imagen depende del Sistema de archivos de unión (UnionFS). Una comprensión completa del principio de la duplicación puede ayudarnos a construir la mejor duplicación en la práctica futura, y también puede ayudarnos a comprender mejor la relación entre los contenedores y la duplicación.

Bienvenido a prestar atención a la cuenta pública de [The Way of Infinite Testing], responder a [recibir recursos],
recursos de aprendizaje de programación de Python productos secos, automatización de la interfaz de usuario de la aplicación del marco Python + Appium , automatización de la interfaz de usuario web del marco Python + Selenium, API del marco Python + Unittest automatización,


Los recursos y códigos se envían gratis ~
Hay un código QR de la cuenta oficial en la parte inferior del artículo, puede escanearlo en WeChat y seguirlo.

Observaciones: Mi cuenta pública personal se ha abierto oficialmente, dedicada al intercambio de tecnología de prueba, que incluye: pruebas de big data, pruebas funcionales, desarrollo de pruebas, automatización de la interfaz API, operación y mantenimiento de pruebas, pruebas de automatización de la interfaz de usuario, etc., búsqueda pública de WeChat cuenta: "Wuliang The Way of Testing", o escanee el código QR a continuación:

 ¡Presta atención y crezcamos juntos!

Supongo que te gusta

Origin blog.csdn.net/weixin_41754309/article/details/112102461
Recomendado
Clasificación