Imagen de compilación de Docker (3)

Use Dockerfile para construir una imagen

Dockerfile utiliza DSL (lenguaje específico de dominio) para crear una imagen de Docker. Una vez que edita el archivo de Dockerfile, puede usar docker buildcomandos para crear una nueva imagen.

Primero creamos una carpeta vacía y creamos un archivo llamado Dockerfile debajo de la carpeta.

toque Dockerfile

Edite este archivo Dockerfile para agregar el contenido que se muestra a continuación.

vim Dockerfile 
# versión: 0.0.1 
DESDE ubuntu: 14.04 
MAINTAINER jackfrued " [email protected] " EJECUTAR 
apt -get update && apt-get install - y nginx 
RUN echo 'hola, mundo!' > / usr / share / nginx / html / index.html 
EXPOSE 80

Vamos a explicar el archivo Dockerfile anterior. El archivo Dockerfile especifica la imagen básica (instrucción FROM), el comando que debe especificarse después de crear el contenedor (instrucción RUN) y el puerto (EXPOSE) que debe exponerse mediante instrucciones especiales. Presentaremos estos comandos de Dockfile para usted más adelante.

A continuación, podemos usar el docker buildcomando para crear el espejo como se muestra a continuación.

docker build -t = "jackfrued / servidor web".

Consejo: . No se pierda el último comando anterior , significa encontrar Dockerfile desde la ruta actual.

Puede ver la imagen creada con el siguiente comando.

imágenes del 
acoplador REPOSITORY 
TAG ID DE IMAGEN TAMAÑO CREADO jackfrued / webserver última 87d6cb096be2 hace 23 minutos 222 MB

Si desea saber cómo se crea el archivo de imagen, puede usar el siguiente comando.

docker history jackfrued / webserver 
IMAGEN 
CREADA CREADA POR TAMAÑO 87d6cb096be2 hace   25 minutos / bin / sh -c # (nop) EXPOSE 80 / tcp 0 B                  
53d3bc3a123e hace   25 minutos / bin / sh -c service nginx start 3 B 
10646b63275e hace   25 minutos / bin / sh -c echo 'hola, mundo!' > / usr / sha ... 14 B 
f3e3bf3e998e hace   25 minutos / bin / sh -c apt-get update && apt-get insta ... 34,3 MB 
c98e22cf5a64 hace   26 minutos / bin / sh -c # (nop) MAFTAINER jackfrued "j ... 0 B 
2c5e00d77a67 hace 3 meses / bin / sh -c # (nop) CMD [" / bin / bash "] 0B
 <missing> hace 3 meses / bin / sh -c mkdir -p / run / systemd && echo '... 7 B 
<missing> hace 3 meses / bin / sh -c rm -rf / var / lib / apt / lists / *           0 B 
<missing> hace 3 meses / bin / sh -c set -xe && echo '#! / bin / sh'> ... 195 kB 
<missing> hace 3 meses / bin / sh -c # ( nop) ADD archivo: 1e01ab604c0cc30 ... 188 MB

Use esta imagen para crear un contenedor para ejecutar un servidor web.

docker run -d -p 80:80 --name mywebserver jackfrued / webserver nginx -g "daemon off";
Si desea colocar el archivo de imagen creado anteriormente en el almacén de dockerhub, puede seguir los pasos que se muestran a continuación.

Inicie sesión en dockerhub con el siguiente comando.

inicio de sesión en la ventana acoplable

Ingrese el nombre de usuario y la contraseña para iniciar sesión.

Inicie sesión con su Docker ID para insertar y extraer imágenes de Docker Hub. Si no tiene una ID de Docker, diríjase a https://hub.docker.com para crear una.
Nombre de usuario: jackfrued 
Contraseña: 
Inicio de sesión exitoso

Empuje la imagen en el almacén con el siguiente comando.

docker push jackfrued / servidor web

Instrucción Dockerfile

Si desea conocer las instrucciones de Dockerfile, puede consultar el manual de referencia oficial . A continuación, presentamos algunas instrucciones comunes para usted.

  1. DE: Establezca la imagen básica, que debe ser la primera instrucción en el Dockerfile.

    FROM <nombre del espejo> [AS <alias> ] 
    o 
    
    FROM <nombre del espejo> [: <tag>] [AS <alias>]
  2. EJECUTAR: especifique el comando que se ejecutará al crear la imagen.

    RUN <comando> [parámetro 1], [parámetro 2], ... 
    o 
    
    RUN [ "archivo ejecutable", "parámetro 1", "parámetro 2", ...]
  3. CMD: especifique el comando que se ejecutará después de crear la imagen.

    CMD <Command> [Parámetro 1], [Parámetro 2], ... 
    o 
    
    CMD [ "Ejecutable", "Parámetro 1", "Parámetro 2", ...]

    Nota: Docker es diferente de una máquina virtual. El contenedor en sí es un proceso y la aplicación en el contenedor debe ejecutarse en primer plano. El comando CMD es equivalente a especificar el proceso principal del contenedor (el programa que se ejecutará en primer plano después de crear el contenedor). Si el proceso principal finaliza, el contenedor dejará de ejecutarse. Por lo tanto, iniciar Nginx en el contenedor no se puede usar service nginx starto systemctl start nginxse debe CMD ["nginx", "-g", "daemon off;"]ejecutar en primer plano al dejarlo.

  4. PUNTO DE ENTRADA: Similar a CMD, también puede ejecutar comandos, pero docker runcualquier parámetro especificado en la línea de comando se pasará como parámetros a los comandos en la instrucción ENTRYPOINT nuevamente, lo que nos permite construir un espejo que puede ejecutar un comando predeterminado, También admite la docker runespecificación de opciones de parámetros reemplazables para el comando a través de la línea de comando.

    ENTRYPOINT <comando> [parámetro 1], [parámetro 2], ... 
    o 
    
    ENTRYPOINT [ "archivo ejecutable", "parámetro 1", "parámetro 2", ...]
    WORKDIR: Al crear un nuevo contenedor a través de una imagen, se crea un directorio de trabajo dentro del contenedor, y los programas especificados por ENTRYPOINT y CMD se ejecutarán en este directorio. Al usar docker runcomandos, puede usar -wparámetros para sobrescribir el directorio de trabajo especificado por WORKDIR. Por ejemplo:
  5. WORKDIR /opt/webapp
    
    docker run -w / usr / share / webapp ...
  6. ENV: establece variables de entorno al crear una imagen. Al usar docker runcomandos, puede -emodificar la configuración de las variables de entorno a través de parámetros. Por ejemplo:

    ENV DEFAULT_PORT = 8080 
    Docker run -e "DEFAULT_PORT = 8000" ...
  7. USUARIO: especifique el usuario con el que se ejecutará la imagen. Por ejemplo:

    USER nginx
  8. VOLUMEN: Agregue un punto de montaje de volumen de datos al crear un contenedor. La operación de volumen de datos puede realizar el uso compartido y la reutilización de datos entre contenedores. Los cambios realizados en el volumen pueden tener efecto inmediatamente sin reiniciar el contenedor. Utilizamos los —volumeparámetros al crear el contenedor para lograr la operación de mapeo del volumen de datos.

    VOLUMEN ["/ path1", "/path2/subpath2.1/", ...]
  9. AGREGAR: Copie los archivos y carpetas en el directorio de compilación a la imagen. Si los archivos están comprimidos y archivados, el comando AGREGAR descomprimirá y archivará estos archivos.

    AGREGAR [--chown = <usuario>: <grupo de usuarios>] <archivo de origen> <archivo de destino>
  10. COPIAR: Muy similar a AGREGAR, pero no extraerá archivos activamente.

  11. ETIQUETA: Agregue algunos metadatos a la imagen de Docker, docker inspectverá estos metadatos cuando use el comando.

    ETIQUETA versión = "1.0.0" ubicación = "Chengdu"
  12. ONBUILD: Agregue un disparador al espejo. Cuando se usa un espejo como espejo base de otros espejos, se ejecutará el disparador. Por ejemplo:

    ONBUILD ADD. / app / src 
    ONBUILD RUN cd / app / src && make

Supongo que te gusta

Origin www.cnblogs.com/guanbin-529/p/12679571.html
Recomendado
Clasificación