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 build
comandos 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 build
comando 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.
-
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>]
-
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", ...]
-
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 start
osystemctl start nginx
se debeCMD ["nginx", "-g", "daemon off;"]
ejecutar en primer plano al dejarlo. -
PUNTO DE ENTRADA: Similar a CMD, también puede ejecutar comandos, pero
docker run
cualquier 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 ladocker run
especificació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 run
comandos, puede usar-w
parámetros para sobrescribir el directorio de trabajo especificado por WORKDIR. Por ejemplo: -
WORKDIR /opt/webapp
docker run -w / usr / share / webapp ...
-
ENV: establece variables de entorno al crear una imagen. Al usar
docker run
comandos, puede-e
modificar 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" ...
-
USUARIO: especifique el usuario con el que se ejecutará la imagen. Por ejemplo:
USER nginx
-
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
—volume
parámetros al crear el contenedor para lograr la operación de mapeo del volumen de datos.VOLUMEN ["/ path1", "/path2/subpath2.1/", ...]
-
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>
-
COPIAR: Muy similar a AGREGAR, pero no extraerá archivos activamente.
-
ETIQUETA: Agregue algunos metadatos a la imagen de Docker,
docker inspect
verá estos metadatos cuando use el comando.ETIQUETA versión = "1.0.0" ubicación = "Chengdu"
-
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