Acoplable método de producción de imagen y Dockerfile sencilla Empresa analítica

Desde el almacén oficial sitio web público de la ventana acoplable reflejando su mayoría incompletos, en realidad no puede cumplir con el sistema de producción de la empresa, entonces tenemos que personalizar su propia imagen en el espejo o reenvasado. Acoplable reflejo es una de las tareas esenciales del administrador, lo que refleja el método del estibador Existen dos principales métodos de producción son los siguientes:

  • Acoplable cometer | exportación presentará un nuevo contenedor a la lista de imágenes;
  • Escribe Dockerfile, bulid nuevo espejo a la lista de espejo;

A, el modo de cometer

  • Descargar imagen base acoplable del almacén;
    docker pull docker.io/jdeathe/centos-ssh

  • Acoplable ejecutar recipiente de generación de imagen de base;
    docker run -itd -p 6022:22 --privileged -name aliyun-server docker.io/jdeathe/centos-ssh

  • En el recipiente - instalar software, agregar características, crear directorios, archivos;

#这里可以将你这个虚拟机需要的基础环境安装上,比如部署一个LNMP架构,或者我只想用一个web服务器,只用安装一个nginx即可!
yum install wget zlib-devel pcre-devel gcc-c++ -y
wget -O /usr/local/nginx-1.16.0.tar.gz http://nginx.org/download/nginx-1.16.0.tar.gz
tar xvf /usr/local/nginx-1.16.0.tar.gz
cd /usr/local/nginx-1.16.0
./configure --prefix=/usr/local
make -j4&make install
wget -O /usr/local/nginx/html/index.html http://www.baidu.com
echo "PATH=$PATH:/usr/local/nginx/sbin/" >>/etc/profile
source /etc/profile
  • Acoplable cometer ID de contenedor, el contenedor se presentará a la nueva imagen;
    docker commit c432b9da999c
    Aquí Insertar imagen DescripciónAquí Insertar imagen Descripción
  • Docker la imagen lista para guardar la imagen se introduce en el paquete de alquitrán;
    docker save centos-v2:latest -o /root/centos-v2.tar
  • Espejo paquete de alquitrán de carga acoplable, lista de réplicas de importación.
    Nota: La primera SCP al servidor de destino, y luego realice la siguiente operación
    docker load -i /root/centos-v2.tar

Dos, el modo de exportación

  • Descargar imagen base acoplable del almacén;
  • Acoplable ejecutar recipiente de generación de imagen de base;
  • En el recipiente - instalar software, agregar características, crear directorios, archivos;
  • Cargador de muelle de contenedores de exportación de identificación, el contenedor se exporta como paquete de imagen de alquitrán (pérdida de memoria en un archivo de datos, la empresa no se recomienda para el programa);
docker ps
docker export c432b9da999c(容器ID) >/root/centos-v3.tar
  • Acoplable importar el paquete de alquitrán, Lista espejo introducido.
 cat /root/centos-v3.tar|docker import - centos-v3
 -:占位符
 centos-v3:指定REPOSITORY

Aquí Insertar imagen DescripciónNota: las diferencias entre los dos métodos anteriores, se comprometen a un recipiente de múltiples ser sometido a un espejo paso, directamente en el recipiente y luego derivar la imagen, la etapa de síntesis de la exportación. Pero esto es conveniente, pero puede haber pérdida de datos, por lo general, no utilice el método de exportación!

Tres, Dockerfile método de producción de clase empresarial (recomendado)

1, principio de producción Dockerfile

将基于一个基础镜像,通过编写Dockerfile方式,将各个功能进行叠加,最终形成新的Docker镜像,是目前互联网企业中打包镜像最为推荐的方式。

Dockerfile representación es un espejo, el espejo es una materia prima, puede ser descrito por imagen Dockerfile construido, y construir automáticamente un recipiente.

2, de la siguiente reflejado DockerFile, instrucciones y parámetros necesarios detallada:

FROM	 		指定所创建镜像的基础镜像;
MAINTAINER		指定维护者信息;
RUN				运行命令;
CMD				指定启动容器时默认执行的命令;
LABEL			指定生成镜像的元数据标签信息;
EXPOSE			声明镜像内服务所监听的端口;
ENV				指定环境变量;
ADD				赋值指定的<src>路径下的内容到容器中的<dest>路径下,<src>可以为URL;如果为tar文件,会自动解压到<dest>路径下
COPY			赋值本地主机的<scr>路径下的内容到容器中的<dest>路径下;一般情况下推荐使用COPY而不是ADD;
ENTRYPOINT		指定镜像的默认入口;
VOLUME			创建数据挂载点;
USER			指定运行容器时的用户名或UID;
WORKDIR			配置工作目录;
ARG				指定镜像内使用的参数(例如版本号信息等);
ONBUILD			配置当前所创建的镜像作为其他镜像的基础镜像时,所执行的创建操作的命令;
STOPSIGNAL		容器退出的信号;
HEALTHCHECK		如何进行健康检查;
SHELL			指定使用SHELL时的默认SHELL类型;

3, Dockerfile refleja especificaciones y técnicas son como sigue:

  • Espejo compacto utiliza: tratar de hacer uso de cada imagen están más concentrados, sola, evita estructura grande y compleja, espejo de múltiples funciones;
  • La elección apropiada de imagen de base: el exceso puede causar construir un espejo hinchada imagen de base, el espejo se recomienda generalmente una imagen relativamente pequeña base como;
  • comentarios detallados y mantenimiento de información: Dockerfile también un código para facilitar la expansión posterior y uso por otros que deben ser considerados;
  • El uso adecuado de los números de versión: número de versión explícita el uso de información específica de la información digital, en lugar de la última, para evitar no confirmó el número de versión específica, el medio ambiente unificado;
  • La reducción del número de capas del espejo: capas de espejo recomienda para reducir el comando combinado RUN, el contenido puede ser una pluralidad de RUN instrucción está conectado por &&;
  • Prontitud eliminar archivos temporales y caché: Esto evita espejo construido demasiado hinchado, y estos archivos de caché y no tiene utilidad práctica;
  • Aumentar la velocidad de producción: el uso racional de la caché, lo que reduce el uso de archivos en un directorio, documentos de uso .dockeringore;
  • secuencia de instrucciones de ajuste razonable: en el caso de almacenamiento en caché habilitado, el contenido de la instrucción lo más lejos posible en frente de la misma, que puede mejorar las instrucciones de reutilización;
  • Reducir la interferencia de fuentes externas: Si realmente desea introducir datos externos, frente a la necesidad de desarrollar de larga duración, y con la información de la versión, para que otros puedan ser reutilizados sin error.

4, DockerFile un caso de negocio

necesidades de negocio: Envase de inicio del estibador, mientras que abra el puerto monitor externo 22 contenedores estibador, logrados a través de CRT o Xshell inicio de sesión.
Escribir el archivo Dockerfile:

# 设置基本的镜像,后续命令都以这个镜像为基础
FROM centos:v1
# 作者信息
MAINTAINER  wujincheng@163.com

# RUN命令会在上面指定的镜像里执行任何命令
RUN rpm --rebuilddb;yum install passwd openssl openssh-server -y
RUN echo '123456' | passwd --stdin root
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh

# 暴露ssh端口22
EXPOSE  22

# 设定运行镜像时的默认命令:输出ip,-D并以daemon方式启动sshd
CMD /usr/sbin/sshd -D;/bin/bash

5, DockerFile empresa Caso II

necesidades de negocio: abrir el puerto SSH 6379, permitiendo el acceso a los puertos de Redis, Dockerfile de la siguiente manera:
escritura de archivos Dockerfile:

# 设置基本的镜像,后续命令都以这个镜像为基础
FROM centos_lamp:v1 
# 作者信息
MAINTAINER  wujincheng@163.com

# RUN命令会在上面指定的镜像里执行任何命令
RUN rpm --rebuilddb;yum install redis* -y
RUN sed -i '/bind/127.0.0.1/0.0.0.0/g' /etc/redis.conf 

#暴露ssh端口6379
EXPOSE  6379

#-D设定运行以daemon方式启动sshd
CMD /usr/sbin/redis -D

6, DockerFile empresa Caso III

necesidades de negocio: basado en puerto abierto Dockerfile 80 Apache, y de forma remota se conectan al servidor
a escribir el archivo Dockerfile:

# 设置基本的镜像,后续命令都以这个镜像为基础
FROM centos_lamp:v1
# 作者信息
MAINTAINER  wujincheng@163.com

# RUN命令会在上面指定的镜像里执行任何命令
RUN rpm --rebuilddb;yum install pcre-devel -y
RUN rpm --rebuilddb;yum install httpd httpd-devel –y
RUN  echo “<h1>The Test Page JFEDU</h1>” >>/var/www/html/index.html

#暴露ssh端口80
EXPOSE 80

#启动httpd
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]

7, DockerFile empresa de la caja cuatro

necesidades de negocio: Docker virtualización, cómo construir nuestro servidor de base de datos MySQL? La respuesta es sencilla, podemos generar un espejo dockerfile MySQL y empezar la carrera.
Escribir el archivo Dockerfile:

FROM centos:v1
RUN groupadd -r mysql && useradd -r -g mysql mysql
RUN rpm --rebuilddb;yum install -y gcc zlib-devel gd-devel
ENV MYSQL_MAJOR 5.6
ENV MYSQL_VERSION 5.6.20
RUN 
	&& curl -SL "http://dev.mysql.com/get/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz" -o mysql.tar.gz \
	&& curl -SL "http://mysql.he.net/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz.asc" -o mysql.tar.gz.asc \
	&& mkdir /usr/local/mysql \
	&& tar -xzf mysql.tar.gz -C /usr/local/mysql \
	&& rm mysql.tar.gz* \
ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts
WORKDIR /usr/local/mysql
VOLUME /var/lib/mysql
EXPOSE 3306
CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"]

8. El dockerfile de generación de imágenes

Crear un espejo (centos: ssh) con construir ventana acoplable según Dockerfile:

#这种生成方式是用来指定名字不是Dockerfile的创建方式,-为占位符
docker  build  -t  [REPOSITORY]:[TAG]  -  <  /etc/dockerfile
#文件名默认为Dockerfile,所以不用指定,指定位置即可
docker  build  -t  [REPOSITORY]:[TAG]  .(指定位置为当前)
#注:-t是用来指定 Name and optionally a tag in the 'name:tag' format (default [])

Aquí Insertar imagen Descripción

Ha publicado 188 artículos originales · alabanza 150 won · vistas 30000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_44571270/article/details/104358577
Recomendado
Clasificación