Aquí viene la forma de hacer imágenes de Docker y establecer almacenes privados


Este artículo presenta principalmente la información relevante sobre los dos métodos de Docker para crear un espejo. Docker crea un espejo: uno es usar el comando docker commit, el otro es usar una plantilla local y el tercero es usar el archivo Dockerfile. Los amigos que lo necesitan pueden consultar

Docker crear imagen

Hace poco aprendí sobre Docker y vi dos métodos para que Docker creara objetos en Internet. Es bueno grabarlo aquí. Quizás pueda ayudarte.

Todos sabemos que en Docker estamos ejecutando contenedores basados ​​en imágenes ¿Cómo crear imágenes? Hay dos formas de crear un espejo, una es usar el comando docker commit, la otra es usar el comando docker build y la tercera es usar Dockerfile. Aquí estamos hablando de crear una imagen basada en una imagen básica existente como ubuntu, en lugar de crear una imagen nueva desde cero.

1: capas de imágenes de Docker

marca

  • FROM seguido de la imagen base

  • AGREGAR: agrega archivos de instrucciones del sistema de matrices al contenedor espejo

  • VOLUMEN: El espacio de recursos que puede compartir el arreglo es similar al espacio proporcionado por el sistema de arreglo de montaje compartido. El espacio almacena paquetes de software preinstalados y el contenedor monta directamente el espacio compartido

  • CMD: Cuando termines de crear la imagen, define las instrucciones para iniciar el contenedor.

Dos: creación de imágenes de Docker

Imagen de Docker

  • 应用发布的标准格式

  • 支持一个Docker容器的运行

Cómo crear una imagen de Docker

  • 基于已有镜像创建

  • 基于本地模板创建

  • 基于Dockerfile创建!!【重点】(关注:参数)

  • Entorno del caso

Anfitrión sistema operativo Nombre de host / dirección IP Software principal y versión
servidor Centos 7.6 Localhost / 20.0.0.42 Docker-19.03.13:

2.1: Crear basado en ya reflejado

  • 使用docker commit创建
docker commit [选项] 容器ID/名称 仓库名称:[标签]

-m 说明信息
-a 作者信息
-p 生成过程中停止容器的运行
示例

#获取centos:7镜像
[root@localhost ~]# docker pull centos:7

#创建容器
[root@localhost ~]# docker create -it centos:7 /bin/bash
-i:让容器的标准输入保持打开
-t:让Docker分配一个伪终端

#查看容器列表
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
5ad432b34512        centos:7            "/bin/bash"         About a minute ago   Created                                 dazzling_swanson

#启动容器
[root@localhost ~]# docker start 5ad432b34512  

#使用docker commit创建    
[root@localhost ~]# docker commit -m "shuai" -a "daoke" 5ad432b34512 daoke:test
这里5ad432b34512是修改过的容器ID,daoke:test是镜像名跟标签
上面-m选项指定了镜像的提交信息,-a选项标注了作者信息,最后的:test是标签。

#查看镜像列表  可以看到已经创建成功
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
daoke               test                0ade30d9aa5a        About a minute ago   203MB
nginx               latest              7e4d58f0e5f3        10 days ago          133MB
centos              7                   7e6257c9f8d8        :5 weeks ago          203MB

2.2: Crear basado en plantilla local

  • Genere una nueva imagen importando el archivo de plantilla del sistema operativo
    Use el comando wget para importar como una imagen local
通过导入系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载
地址为:https://wiki.openvz.org/Download/template/precreated
或者使用wget下载:wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
  • Después de que la importación sea exitosa, puede ver la información del espejo local
docker images lgrep new
  • Ejemplo
[root@localhost opt]# ls
debian-7.0-x86-minimal.tar.gz  rh

#基于模板生成
[root@localhost opt]# cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:shuai

#可以看到已经生成  标签为shuai
[root@localhost opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
daoke               shuai               df9e22f0a57e        About a minute ago   215MB
daoke               test                0ade30d9aa5a        15 minutes ago       203MB
nginx               latest              7e4d58f0e5f3        10 days ago          133MB
centos              7                   7e6257c9f8d8        5 weeks ago   :       203MB

2.3: use dockerfile para crear un espejo

  • La imagen de compilación de Dockerfile se basa en la imagen básica. Dockerfile es un archivo de texto con algunas instrucciones de la ventana acoplable escritas por el usuario. Cada instrucción crea una capa, por lo que el contenido de cada instrucción describe cómo se debe construir la capa. :

2.31: Trece instrucciones básicas de Dockerfile

分别 是 : DESDE 、 MAINTAINER 、 EJECUTAR 、 CMD 、 EXPOSE 、 ENV 、 ADD 、 COPY 、 ENTRYPOINT VOLUME 、 USER 、 WORKDIR 、 ONBUILD

marca

2.31: Cuatro partes de la estructura de Dockerfile

  • Información básica de la imagen

  • Información del mantenedor

  • Instrucciones de funcionamiento del espejo

  • Ejecutar instrucciones cuando el contenedor se inicia

Dockerfile admite una instrucción por línea, cada instrucción puede contener múltiples parámetros y admite el uso de comentarios que comiencen con "#" :

2.4: use Dockerfile para crear un espejo

  • Use Dockerfile para crear un espejo httpd y ejecutar

  • Escribir Dockerfile

#创建一个名称为apache的工作目录
[root@localhost opt]# mkdir apache

#在工作目录创建一个Dockerfile文件     一定不能改名字
[root@localhost opt]# cd apache/
[root@localhost apache]# vim Dockerfile
'//编写信息'

##基于的基础镜像
FROM centos 
##维护镜像的用户信息
MAINTAINER THIS IS SHUAI
##镜像操作指令安装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"]           
  • Escribir y ejecutar el contenido de la página de inicio del script
[root@localhost apache]# echo "this is test web" > index.html
[root@docker apache]# vim run.sh
#!/bin/bash
rm -rf /run/httpd/*	'//清除缓存'
exec /usr/sbin/apachectl -D FOREGROUND	'//启动apache'
  • Generar espejo
#最后一个千万注意“.” -t:镜像文件名称:标签
[root@localhost apache]# docker build -t httpd:centos .
...省略信息...
Complete!
Removing intermediate container 9bdc2873b24f    '//每层缓存都会生成一个临时的容器来执行命令,然后在删除'
 ---> 40c76ad7fb84
Step 5/9 : EXPOSE 80
 ---> Running in 49402cd8d904
Removing intermediate container 49402cd8d904
 ---> 32033d970f7d
Step 6/9 : ADD index.html /var/www/html/index.html
 ---> f2362d265c6e
Step 7/9 : ADD run.sh /run.sh
 ---> f0a73b8e4103
Step 8/9 : RUN chmod 755 /run.sh
 ---> Running in 51c8d3736c06
Removing intermediate container 51c8d3736c06
 ---> b7cf62b05664
Step 9/9 : CMD ["/run.sh"]
 ---> Running in 290d45883cce
Removing intermediate container 290d45883cce
 ---> e85ac386fe3e
Successfully built e85ac386fe3e
Successfully tagged httpd:centos

#查看镜像,已经生成
[root@localhost apache]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              073365dcb0eb        37 seconds ago      283MB
centos              7                   7e6257c9f8d8        5 weeks ago         203MB
centos              latest              0d120b6ccaa8        5 weeks ago         215MB
  • Nueva imagen en ejecución de contenedor
# -d:守护进程   -p:映射端口  对外提供端口随意写 不宿主机冲突就行 -P:大写P是随机端口号

[root@localhost apache]# docker run -d -p 1216:80 httpd:cetnos

#查看容器列表
[root@localhost apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
cd1bc0acea9f        httpd:cetnos        "/run.sh"           11 seconds ago      Up 10 seconds       0.0.0.0:1216->80/tcp   beautiful_northcutt
  • Prueba de inicio de sesión del cliente

marca
Gracias por mirar, ¡el aprendizaje no puede parar! !

Supongo que te gusta

Origin blog.csdn.net/weixin_47151643/article/details/108702944
Recomendado
Clasificación