[Docker] Explicación detallada de la producción del archivo de imagen personal Dockerfile

prefacio

Página de inicio personal de Jiejie
¡Solo te pregunto si has jugado!
Unidad de conocimiento y acción, aspiraciones elevadas.

Docker es una herramienta 开源的应用容器引擎que permite a los desarrolladores empaquetar sus aplicaciones y dependencias en un contenedor portátil y luego publicarlo en cualquier Linux或Windowsmáquina con sistema operativo popular. También puede implementar la virtualización. El contenedor utiliza completamente el mecanismo de sandbox e interactúa entre sí. no habrá interfaz entre ellos.

1. Introducción a Dockerfile

Dockerfile es un archivo de compilación que se usa para crear una imagen de Docker y es un script compuesto por una serie de comandos y parámetros. Este artículo es una comprensión de las notas de estudio de Hengchuan.

En pocas palabras, Dockerfile consiste en poner cada paso e instrucción de nuestro entorno de instalación en un archivo, ejecutarlo con un clic al final y finalmente crear el entorno que desee.

Dockerfile es un archivo de compilación que se usa para crear una imagen de Docker y es un script compuesto por una serie de comandos y parámetros.

Docker construye tres pasos:

  • Escribir archivo acoplable
  • docker compilar compilar archivo espejo de imagen
  • ventana acoplable ejecutar ejecutar contenedor

Por favor agregue una descripción de la imagen

2. Instrucciones relacionadas con Dockerfile

Dockerfile es un archivo de texto que contiene todos los comandos para crear una imagen espejo. El comando docker build se puede usar para construir una imagen espejo basada en el contenido del Dockerfile. Antes de presentar cómo construirlo, primero presente la estructura gramatical básica
de el Dockerfile.

Dockerfile tiene las siguientes opciones de comando:

  • DESDE la imagen base, qué imagen es la nueva imagen actual basada en
  • MANTENEDOR El nombre y la dirección de correo electrónico del mantenedor del espejo.
  • EJECUTAR El comando que se ejecutará cuando se construya el contenedor.
  • CMD especifica el comando que se ejecutará cuando se inicie un contenedor.
    Puede haber varias instrucciones CMD en el dockerfile, pero solo la última tiene efecto y el CMD será reemplazado por los parámetros después de la ejecución del docker.
  • EXPOSE El número de puerto expuesto por el contenedor actual
  • ENV se utiliza para establecer variables de entorno durante la creación de imágenes
  • ADD copia los archivos en el directorio del host a la imagen y el comando ADD procesará automáticamente la URL y descomprimirá el archivo tar.
  • COPY COPY: similar a ADD, copia archivos y directorios en la imagen, pero solo copia y no procesa automáticamente las URL ni descomprime los archivos tar.
  • ENTRYPOINT especifica un comando para ejecutar cuando se inicia un contenedor.
  • El propósito de ENTRYPOIT es el mismo que el de CMD, que es especificar el programa y los parámetros de inicio del contenedor.
  • Volumen de datos del contenedor VOLUME para almacenamiento y persistencia de datos
  • USUARIO especifica el nombre de usuario o UID cuando se ejecuta el contenedor, y la EJECUCIÓN subsiguiente también usará el usuario especificado
  • WORKDIR especifica que después de crear el contenedor, la terminal iniciará sesión en el directorio de trabajo de forma predeterminada, un punto de apoyo
  • ONBUILD Ejecuta el comando al compilar un Dockerfile heredado. Después de que el hijo hereda la imagen principal, se activa la creación de la imagen principal.

3. Escritura de Dockerfile

Crear una nueva carpeta docker-ejecutar en el directorio actual, cd en la carpeta, tocar para crear un nuevo Dockerfile, luego vi abre el archivo y comienza a editar

[root@yoyo ~]# mkdir docker-run
[root@yoyo ~]# cd docker-run/
[root@yoyo docker-run]# touch Dockerfile
[root@yoyo docker-run]# vi Dockerfile

El contenido editado es el siguiente:

# 更新pip
RUN pip install --upgrade pip 

# 工作目录
WORKDIR /code
ADD . /code

# pip安装依赖包
RUN pip install -r requirements.txt

# 传递参数
ENTRYPOINT ["pytest"]

# 默认显示help帮助信息
CMD ["--help"]

Por favor agregue una descripción de la imagen

4. requisitos.txt

requirements.txt es un paquete de dependencia relacionado de python, que puede generarse mediante el comando congelar

pip3 congelar >requisitos.txt

[root@yoyo docker-run]# cat requirements.txt 
APScheduler==3.5.3
asn1crypto==0.24.0
atomicwrites==1.3.0
attrs==18.2.0
backports.csv==1.0.7
bcrypt==3.1.7
beautifulsoup4==4.7.1
cached-property==1.5.1
certifi==2018.11.29
cffi==1.12.3
chardet==3.0.4
cryptography==2.7
DBUtils==1.3
defusedxml==0.5.0
diff-match-patch==20181111
Django==2.1.4
django-bootstrap3==11.0.0
django-crispy-forms==1.7.2
django-formtools==2.1
django-import-export==1.2.0
django-ranged-response==0.2.0
django-reversion==3.0.3
django-simple-captcha==0.5.10
django-stdimage==4.0.1
docker==3.7.3
docker-compose==1.24.1
docker-pycreds==0.4.0
dockerpty==0.4.1
docopt==0.6.2
et-xmlfile==1.0.1
future==0.17.1
httplib2==0.12.1
idna==2.7
jdcal==1.4
jsonschema==2.6.0
more-itertools==6.0.0
mysqlclient==1.4.2.post1
odfpy==1.4.0
openpyxl==2.6.1
paramiko==2.6.0
Pillow==5.4.1
pluggy==0.6.0
progressbar2==3.39.3
py==1.7.0
pycparser==2.19
pymssql==2.1.4
PyMySQL==0.9.3
PyNaCl==1.3.0
pytest==3.6.3
python-utils==2.3.0
pytz==2018.7
PyYAML==3.13
requests==2.20.1
six==1.12.0
soupsieve==1.7.3
tablib==0.13.0
texttable==0.9.1
tzlocal==1.5.1
urllib3==1.24.1
websocket-client==0.56.0
xlrd==1.2.0
xlwt==1.3.0

Por favor agregue una descripción de la imagen

5. construir para construir el archivo de imagen

El comando docker build se usa para crear una imagen usando un Dockerfile. Descripción de OPCIONES:

  1. -f : especifica la ruta del Dockerfile a usar;
  2. -pull: intenta actualizar la nueva versión de la imagen;
  3. -quiet, -q : Modo silencioso, solo muestra la identificación de la imagen después del éxito;
  4. -tag, -t: el nombre y la etiqueta del espejo, generalmente en el formato de nombre:etiqueta o nombre; se pueden configurar varias etiquetas para un espejo en una compilación.

El parámetro -t establece el nombre de la imagen yoyo_pytes y el nombre de la etiqueta v1,Tenga en cuenta el punto al final.

ventana acoplable construir -t yoyo_pytest:v1 .

[root@yoyo docker-run]# docker build -t yoyo_pytest:v1 .
Sending build context to Docker daemon  11.78kB
Step 1/8 : FROM python:3.6
 ---> cfcdf565ff94
Step 2/8 : MAINTAINER yoyo  <283340479@qq.com>
 ---> Using cache
 ---> f523b919fcf9
Step 3/8 : RUN pip install --upgrade pip
 ---> Using cache
 ---> 3399b50dab4e
Step 4/8 : WORKDIR /code
 ---> Using cache
 ---> 7223a20e17fd
Step 5/8 : ADD . /code
 ---> 650b554ccd6c
Step 6/8 : RUN pip install -r requirements.txt
 ---> Running in 0e49d444f7d8

Durante el proceso de ejecución, puede ver que se está ejecutando paso a paso, como: Paso 1/8

Una vez completada la operación, puede ver la imagen generada a través de imágenes acoplables

[root@yoyo docker-run]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
yoyo_pytest                v1                  6b4267ce7ac4        21 seconds ago      1.02GB
[root@yoyo docker-run]#

Por favor agregue una descripción de la imagen

6. ejecutar para ejecutar el contenedor

Cree un nuevo archivo test_h.py en el directorio actual y escriba el script de prueba de pytest

import pytest
def test_one():
    print("正在执行----test_one")
    x = "this"
    assert 'h' in x

def test_two():
    print("正在执行----test_two")
    x = "hello"
    assert x

def test_three():
    print("正在执行----test_three")
    a = "hello"
    b = "hello world"
    assert a in b

if __name__ == "__main__":
    pytest.main(["-s", "test_h.py"])

Ejecute el contenedor con docker run

  1. -it -t le dice a Docker que asigne un pseudo-terminal y lo vincule a la entrada estándar del contenedor, y -i mantiene abierta la entrada estándar del contenedor.
  2. -rm Cuando el contenedor sale, limpia automáticamente el contenedor.
  3. La opción -rm no se puede usar con -d al mismo tiempo
  4. -v Montar el directorio/código de trabajo del contenedor en el $PWD del host, que es el directorio actual
  5. yoyo_pytest: nombre del contenedor v1 y nombre de la etiqueta
  6. test_h.py seguido del nombre del script que debe ejecutarse
[root@yoyo docker-run]# docker run -it --rm -v "$PWD":/code yoyo_pytest:v1 test_h.py  -s
================================================================== test session starts ==================================================================
platform linux -- Python 3.6.9, pytest-3.6.3, py-1.7.0, pluggy-0.6.0
rootdir: /code, inifile:
collected 3 items                                                                                                                                       

test_h.py 正在执行----test_one
.正在执行----test_two
.正在执行----test_three
.

=============================================================== 
3 passed in 0.01 seconds 

7. Recomendación de libros:

Dado que CentOS 6.x y CentOS 8.x se descontinuaron en "Linux Private Education Class: Technical Kernel and Enterprise Operation and Maintenance", el tipo de sistema que se usa en el sistema Linux de código abierto doméstico ha causado una controversia considerable. A juzgar por datos extranjeros, el actual sistema Rocky Linux ha mostrado una tendencia a reemplazar a CentOS. Rocky Linux es un sistema operativo de nivel empresarial gratuito y de código abierto diseñado para ser 100% compatible con errores con el sistema Linux para usuarios empresariales (Red Hat Enterprise Linux, RHEL) lanzado por Red Hat (Red Hat), y actualmente se está desarrollado por el medio comunitario. Rocky Linux es una distribución de Linux empresarial administrada y propiedad de la comunidad que proporciona una poderosa plataforma de nivel de producción y se puede usar como una alternativa al sistema Linux descendente de RHEL después de que CentOS deja de mantener (cambiado a una versión Stream de actualización continua), heredando el CentOS original El código abierto, funciones gratuitas. "Linux Private Teaching Class: Technical Kernel and Enterprise Operation and Maintenance" gira en torno al sistema Rocky Linux y explica en detalle los puntos técnicos y los casos prácticos empresariales del uso del sistema Rocky Linux. El libro completo tiene 13 capítulos en total, y sobre todo emprende la introducción al sistema Rocky Linux. A continuación, explicó la gestión de directorios y la gestión de archivos, la gestión de usuarios, la gestión de autoridades, la gestión de discos, la gestión de procesos, la gestión de sistemas y la gestión de redes; luego amplió los conocimientos y explicó el contenido de la gestión de contenedores. Finalmente, explicó la optimización del kernel del sistema Linux, las soluciones en la nube para pequeñas y medianas empresas, el sistema de monitoreo Prometheus y el combate empresarial Podman. Este libro considera completamente las necesidades de lectura de los lectores de base cero y brinda cuidadosamente recursos como notas, códigos de muestra, videos de aprendizaje y mapas mentales.
Por favor agregue una descripción de la imagen

Supongo que te gusta

Origin blog.csdn.net/2202_75623950/article/details/132272693
Recomendado
Clasificación