Este artículo presenta el proceso de creación de mi primer contenedor de aplicación doccker
Consulte principalmente la aplicación de muestra del tutorial oficial , que también encontró preguntas confusas y encontró la respuesta a través de Internet, pero el tutorial oficial no lo mencionó.
Instalar ventana acoplable
Instalé Docker: en Windows 10. No sé qué tutorial he leído. Instalé boot2doker primero, pero no funcionó. Más tarde, es un método desactualizado, simplemente instálelo directamente. El tutorial oficial docker estudiando allí en
Enlace
O descargue directamente la versión de Windows 10. Hay un dicho que dice que la versión de Windows solo puede ser la versión Pro de Windows, y otras versiones deben ser diferentes. No veo esta declaración aquí, pero yo soy la versión Pro de Windows.
Cómo se ve la aplicación de muestra
Ingrese localhost: 8080 en el navegador local para tener las siguientes aplicaciones:
Ingrese el contenido en Agregar elemento, luego haga clic en el botón, agregue una línea de contenido a continuación y elimine un punto rojo en el lado derecho de la línea
Esta aplicación usa node.js. No importa si no entiende el texto original, no lo entiendo.
Obtener la aplicación
Primero descargue el archivo de compresión de código para obtener un archivo app.zip y luego descomprímalo para obtener un directorio de aplicaciones.
El contenido de la aplicación es: hay 2 archivos y 2 directorios debajo de la aplicación.
En el texto original, se dice que puedes abrir y editar con tu ide favorito, de hecho, esta parte solo necesita editar un archivo de texto.
Lo siguiente es lo que ve cuando lo abre con Visual Studio Code, donde se abre package.json
Puede usar dir o el administrador de archivos para ver la estructura del directorio. No importa si no ves.
Crear imagen de contenedor de aplicación
Para construir la aplicación, se requiere un Dockerfile. Dockerfile es solo un script de instrucciones basado en texto que se usa para crear imágenes de contenedor.
Cree un archivo Dokerfile. Tenga en cuenta que no puede haber extensión al final. Si edita con el Bloc de notas, le agregará una extensión txt. En caso de esto, cambie el nombre a ren y elimine la extensión.
El contenido del archivo es:
FROM node:12-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
Una vez creado el Dockerfile, puede editar y crear la imagen del contenedor. El comando es:
docker build -t getting-started .
Este comando usa un Dockerfile para construir una nueva imagen de contenedor. Es posible que haya notado que se descargan muchas "capas". Esto se debe a que le indicamos al constructor que comenzara con el nodo: imagen alpina 12. Sin embargo, dado que la imagen no está disponible en nuestra computadora, necesitamos descargar la imagen.
Después de descargar la imagen, la copiamos en la aplicación e instalamos las dependencias de la aplicación usando yarn. La directiva CMD especifica el comando predeterminado que se ejecutará cuando el contenedor se inicie desde esta imagen.
Finalmente, -t marca nuestro nombre de imagen. Simplemente puede pensar en él como un nombre fácil de entender para la imagen final. Dado que llamamos a la imagen inicio-inicio, podemos referirnos a la Imagen cuando ejecutamos el contenedor.
Tenga en cuenta que. Después de la línea de comandos significa el directorio actual. El contenido al final del comando de compilación de Docker le dice a Docker que debe buscar el Dockerfile en el directorio actual.
Inicie el contenedor de la aplicación
Ejecute el siguiente comando para iniciar el contenedor de la aplicación:
docker run -dp 3000:3000 getting-started
¿Recuerda las banderas -d y -p? Estamos ejecutando el nuevo contenedor en modo "separado" (en segundo plano) y creando un mapeo desde el puerto 3000 del host al puerto 3000 del contenedor. Si no hay mapeo de puertos, no podremos acceder a la aplicación.
Tengo un problema con este comando, el mensaje de error es el siguiente:
C:\download\dockerapp> docker run -dp 3000:3000 getting-started
a13defcc0b4f65ddfb8290ee0493ef5c59a7530cf11f75fb8349313069acc4bc
docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:3000: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Más tarde, busqué una solución en Internet. Estuve atrapado aquí durante 2 días. Vi a una persona que dijo que revisara la información prohibida del puerto local:
interfaz netsh ipv4 show
Mi mensaje es:
C:\download\dockerapp>netsh interface ipv4 show excludedportrange protocol=tcp
协议 tcp 端口排除范围
开始端口 结束端口
---------- --------
1692 1791
1792 1891
1892 1991
1992 2091
2180 2279
2480 2579
2580 2679
2790 2889
2890 2989
2990 3089
3090 3189
3190 3289
3490 3589
3590 3689
4014 4113
4114 4213
4363 4462
4499 4598
5275 5374
5375 5474
50000 50059 *
* - 管理的端口排除。
De hecho, el puerto está prohibido, dado que el puerto está prohibido, utilice un puerto que no esté prohibido.
Eso pensé, así que usé el siguiente comando;
docker run -dp 8080: 3000 introducción
Esta vez no hay ningún mensaje de error, puede ver que los comandos y mensajes son los siguientes:
C:\download\dockerapp> docker run -dp 8080:3000 getting-started
b461fd95b2211a463baabd89faba93ab9e0fe31b91d336f972f36e2f9c589dc8
Luego escribo en el navegador:
localhost: 8080
Obtenga el resultado de iniciar esa aplicación.
: El anverso es el número de puerto local y el reverso es el número de puerto del contenedor, por lo que se realiza la asignación de puertos.