¡Este es el acoplador que desea de día y de noche! ! ! --------- Producción de imágenes de Docker y establecimiento de almacén privado

Uno, introducción a la imagen de la ventana acoplable

1. ¿Qué es una imagen de Docker?

La imagen de Docker está superpuesta por el sistema de archivos (una forma de almacenamiento de archivos). En la parte inferior hay un sistema de arranque de archivos, bootfs, que es muy similar a un sistema de archivos de arranque típico de Linux / Unix. Los usuarios de Docker casi nunca interactúan con el sistema de arranque. De hecho, cuando se inicia un contenedor, se moverá a la memoria y el sistema de archivos de inicio se desmontará para dejar más memoria para la duplicación del disco. El inicio del contenedor de Docker requiere algunos archivos, y estos archivos se pueden llamar imágenes de Docker.

Cómo conseguir el espejo:

  • Descargar desde un almacén remoto
  • Los amigos te copian
  • Hacer un espejo Docker

Inserte la descripción de la imagen aquí

2. Principio de carga de imágenes de Docker

Cuando descargamos, capa por capa es este
UnionFS (Union File System)
UnionFS (Union File System): Union File System (UnionFS) es un sistema de archivos jerárquico, liviano y de alto rendimiento que admite archivos La modificación del sistema se envía como una única capa de envío sobre la capa, y se pueden montar diferentes directorios bajo el mismo sistema de archivos virtual (unir varios directorios en un solo sistema de archivos virtual). El sistema de archivos Union es la base de las imágenes de Docker. La duplicación se puede heredar a través de capas. Sobre la base de la duplicación básica (sin duplicación principal), se pueden realizar varias duplicaciones de aplicaciones específicas.

Características: Cargue varios sistemas de archivos al mismo tiempo, pero desde el exterior, solo se puede ver un sistema de archivos. La carga conjunta superpondrá los sistemas de archivos de varias capas, de modo que el sistema de archivos final contendrá todos los archivos y directorios subyacentes.
Inserte la descripción de la imagen aquí

La imagen de la ventana acoplable se compone en realidad de un sistema de archivos en capas, este sistema de archivos en capas UnionFS.

  • Bootfs (sistema de archivos de arranque) incluye principalmente el gestor de arranque y el kernel, el gestor de arranque es principalmente el kernel de carga de bow | guía, Linux cargará el sistema de archivos bootfs cuando se inicie, y la capa inferior de la imagen de Docker es bootfs. Esta capa es la misma que la de nuestro sistema Linux / Unix típico, incluido el cargador de arranque y el kernel. Cuando se carga el boo, todo el kernel está en la memoria.En este momento, el derecho a usar la memoria se ha transferido del bootfs al kernel, y el sistema también descargará el bootfs en este momento.
  • rootfs (sistema de archivos raíz), además de bootfs. Se incluyen directorios y archivos estándar como / dev, / proc, / bin, / etc en un sistema Linux típico. Rootfs es una variedad de distribuciones de sistemas operativos diferentes, como Ubuntu, Centos, etc.

Por lo general, los CentOS que instalamos en la máquina virtual son varios G, ¿por qué Docker solo tiene 200M aquí?
Para un sistema operativo optimizado, los rootfs pueden ser muy pequeños, solo es necesario incluir los comandos más básicos, solo la biblioteca del programa es suficiente, porque la capa inferior es directamente Con el kernel de Host, solo necesita proporcionar rootfs. Se puede ver que para diferentes distribuciones de Linux, los bootfs son básicamente iguales y los rootfs serán diferentes, por lo que diferentes distribuciones pueden compartir bootfs.

4. Principio de construcción del espejo

Inserte la descripción de la imagen aquí

4. Hay tres formas de construir un espejo:

1. Crear basado en Dockerfile (el más utilizado)

2. Cree una imagen basada en un contenedor de imágenes existente.

3. Construya basándose en plantillas locales

Segundo, crea un espejo

1. ¿Introducción a Dockerfile?

Dockerfile es un archivo compuesto por un conjunto de instrucciones

La estructura de Dockerfile se divide en cuatro partes:

  • 1. Información básica de la imagen

  • 2. Información del encargado del mantenimiento

  • 3. Instrucciones de funcionamiento del espejo

  • 4. Especifique las instrucciones cuando comience el contenedor.

(1) Instrucciones de funcionamiento comunes de Dockerfile

Inserte la descripción de la imagen aquí

(2) Dockerfile para crear un espejo

Use Dockerfile para crear una imagen httpd y ejecútela
1. Escriba Dockerfile

[root@docker ~]# mkdir apache
[root@docker ~]# cd apache/
[root@docker apache]# vim Dockerfile
##基于的基础镜像
FROM centos 
##维护镜像的用户信息
MAINTAINER The porject <CN-TangZheng> 
##镜像操作指令安装Apache软件
RUN yum -y update    
 ##安装Apache服务 
RUN yum -y install httpd 
##开启80端口
EXPOSE 80  
##复制网址首页文件
ADD index.html /var/www/html/index.html	'//此命令可以结合上图理解'
##将执行脚本复制到镜像中
ADD run.sh /run.sh           
RUN chmod 755 /run.sh
##启动容器时执行脚本
CMD ["/run.sh"]             

2. Escriba scripts de ejecución y contenido de la página de inicio.

[root@docker apache]# vim run.sh
#!/bin/bash
rm -rf /run/httpd/*	'//清除缓存'
exec /usr/sbin/apachectl -D FOREGROUND	'//启动apache'
[root@docker apache]# echo "this is test web" > index.html

3. Genera un espejo

[root@docker apache]# ls
Dockerfile  index.html  run.sh
[root@docker apache]# docker build -t httpd:centos .	'//最后的一个"."要注意,-t:镜像的名字:标签'
    '//每一个缓存层都会生成一个临时容器来执行命令,然后删除'
[root@docker apache]# docker images	'//查看镜像,已经生成了两个'
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              d2010670b33a        19 seconds ago      434MB
centos              latest              470671670cac        3 months ago        237MB

4. Ejecute el contenedor con la nueva imagen.

[root@docker apache]# docker run -d -p 1111:80 httpd:centos	'//-p 指定端口号,-P 随机端口号'
04b0f0f1bda36a4857f8d48e044cd17f442be19f4d32dee4cf3183827b451b55
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
04b0f0f1bda3        httpd:centos        "/run.sh"           4 seconds ago      

2. Cree en función del contenedor de imágenes existente

Crear contenedor

[root@docker apache]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              d2010670b33a        23 minutes ago      434MB
centos              latest              470671670cac        3 months ago        237MB	'//使用此镜像创建容器'
[root@docker apache]# docker create -it centos /bin/bash
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
325c28cc9349        centos              "/bin/bash"         42 seconds ago      Created                                    infallible_poitras
04b0f0f1bda3        httpd:centos        "/run.sh"           21 minutes ago      Up 21 minutes       0.0.0.0:1111->80/tcp   nostalgic_greider

Crear espejo

[root@docker apache]# docker commit -m "ceshi" -a "tang" 325c28cc9349 tang:centos	'//-m:说明文字,-a:提交的作者'
sha256:a49089651887dee9c9168532466542ca7ea0c9113da078230694ac30aebe064c
[root@docker apache]# docker images	'//镜像创建成功'
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tang                centos              a49089651887        14 seconds ago      237MB
httpd               centos              d2010670b33a        30 minutes ago      434MB
centos              latest              470671670cac        3 months ago        237MB

3. Cree según la plantilla local

Descargue la plantilla local. El
espejo se puede generar importando el archivo de la plantilla del sistema. La plantilla se puede descargar del proyecto de código abierto OPENVZ. La
dirección es: https://wiki.openvz.org/Download/template/precreated
o usando wget para descargar: wget http: //download.openvz .org / template / precreated / debian-7.0-x86-minimal.tar.gz La
plantilla se puede importar directamente después de la descarga

[root@docker opt]# ls
debian-7.0-x86-minimal.tar.gz
[root@docker opt]# cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
daoke               new                 487145d2411f        8 seconds ago       215MB

2. Establecimiento de almacén privado de Docker

La herramienta Docker Registry es actualmente la versión de la serie 2.0. Esta versión se empaqueta junto con algunas bibliotecas y herramientas en un conjunto de herramientas responsable de la distribución del contenido del contenedor: Docker Distribution. En la actualidad, sus componentes funcionales centrales siguen siendo responsables de la gestión del almacén espejo. La nueva versión de Registry se ha refactorizado basándose en Golang para proporcionar un mejor rendimiento y escalabilidad, y es compatible con Docker 1.6+ API, que es muy adecuada para crear un servidor de registro de imágenes privado. La imagen del registro también se proporciona en el almacén oficial, por lo que los usuarios pueden utilizar el registro a través de la operación del contenedor y la instalación de la fuente.

1. Pasos para configurar un almacén privado

1. Descargue la imagen de registro
2. Configure el archivo daemon.json en el lado del cliente y especifique la ubicación del almacén privado
3. Genere el contenedor de registro, abra el puerto 5000
4. Etiquete la imagen
5. Cargue la imagen, docker push
6. Descargue la imagen, docker pull

2. Establecer un almacén privado

(1) El servidor descarga la imagen de registro

[root@docker apache]# docker pull registry

(2) Especifique la dirección del almacén espejo

[root@docker apache]# vim /etc/docker/daemon.json 
{
    
    
  "insecure-registries": ["192.168.233.133:5000"],	'//添加此段'
  "registry-mirrors": ["https://yu1vx79j.mirror.aliyuncs.com"]
}
[root@docker apache]# systemctl restart docker

(3) Genere un contenedor de registro y abra el puerto 5000

El registro debe estar habilitado para brindar servicios

[root@docker apache]# docker create -it registry /bin/bash
87db162017924493a4dadefd1f58ff2fdf5a62921a9f4233c84143340e36e1e5
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                            PORTS                  NAMES
87db16201792        registry            "/entrypoint.sh /bin…"   12 seconds ago       Created                                                  agitated_darwin
[root@docker apache]# docker start 87db16201792
[root@docker apache]# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry    '共享目录  宿主机的data共享到docker的tmp下'
60e04d648d5116ceb369eee810e8ed85f2043aa2f573b0ebf1e1233e8e13e2f6

(4) Etiquetado espejo

[root@docker apache]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tang                centos              a49089651887        38 minutes ago      237MB
httpd               centos              d2010670b33a        About an hour ago   434MB
registry            latest              708bc6af7e5e        2 months ago        25.8MB
centos              latest              470671670cac        3 months ago        237MB
[root@docker apache]# docker tag tang:centos 192.168.233.133:5000/httpd  '要打上镜像仓库ip地址端口的tag'

(5) Cargar prueba de espejo

[root@docker apache]# docker push 192.168.233.133:5000/httpd
The push refers to repository [192.168.233.133:5000/httpd]
0683de282177: Pushed 
latest: digest: sha256:7a6f34c22ab081c96ee0b676244300691d7a2f63fe4aedd22f150f17fe4aa5a9 size: 529

(6) Descargar prueba de espejo

curl para ver el directorio espejo

[root@docker apache]#  curl -XGET http://192.168.233.133:5000/v2/_catalog
{
    
    "repositories":["httpd"]}
[root@docker apache]# docker pull 192.168.233.133:5000/httpd  '从本地下载镜像'

Supongo que te gusta

Origin blog.csdn.net/weixin_47219935/article/details/108702229
Recomendado
Clasificación