Maison > développement back-end > Golang > Construire des images Docker minimales

Construire des images Docker minimales

Linda Hamilton
Libérer: 2025-01-29 14:07:09
original
947 Les gens l'ont consulté

Building Minimal Docker Images

Miroir Docker rationalisé: Avantages révolutionnaires de l'amélioration du flux de travail

Parlons de Docker. Oui, cet outil magique semble être loué par chaque développeur. Il promet de nous faciliter notre vie et le déploiement est plus fluide. Mais le problème est que votre miroir Docker peut être gonflé. Ils sont comme une grande valise que vous faites pour le week-end, pleine de choses inutiles, vous ne pouvez même pas trouver ce dont vous avez besoin! C'est comme utiliser un sac à dos au lieu d'un casse-main. Maintenant, présentons au Docker Mirror

, c'est le plan de perte de poids ultime de votre conteneur. ?

Ce n'est pas seulement quelques mégers qui réduisent les miroirs, mais la création de conteneurs rationalisés, efficaces et rapides. Alors, fixez la ceinture de sécurité! Nous explorerons le monde des miroirs Docker rationalisés et utiliserons des exemples réels et des étapes réelles pour l'enrichir.

Quelle est la signification du miroir Docker rationalisé? ?


Le miroir Docker est considéré comme le régime alimentaire. Plutôt que de remplir des bibliothèques, des outils et des configurations inutiles, il est préférable d'inclure uniquement les éléments nécessaires. C'est comme commander une simple pizza Margaret au lieu d'une pizza "de luxe" pleine d'ingrédients divers. Le goût est meilleur et l'effet est meilleur.

Ce qui suit est une comparaison rapide:

----

Pourquoi devriez-vous vous soucier des miroirs Docker rationalisés? ?

Si vous pensez: "Pourquoi payer autant? Mon application fonctionne bien", alors le miroir rationalisé est la raison de changer les règles du jeu comme suit:

1. Sécurité: plus rationalisé, plus à l'aise? Toutes les dépendances, outils ou bibliothèques supplémentaires dans le miroir Docker sont des lacunes potentielles. Le miroir rationalisé réduit la surface d'attaque. Moins les parties sont, moins le pirate se faufile. C'est comme verrouiller toutes vos portes - il n'y a pas d'invités non invités ici!

2. Économiser le coût?

Le stockage et la bande passante ne sont pas gratuits, surtout dans le cloud. Que vous soyez déployé sur AWS, Azure ou GCP, vous accumulerez par octet Meed. Les miroirs simplifiés peuvent économiser les coûts de stockage et réduire les coûts de transmission de données. Vous pouvez utiliser cet argent pour acheter de la pizza. ?

3. Expansion facile? Lorsque vous déployez plusieurs conteneurs dans le cluster, chaque seconde est importante. La vitesse de démarrage miroir plus petite est plus rapide, ce qui facilite l'extension.

étape par étape: construire un miroir Docker rationalisé?

Enrichissons un véritable exemple! Nous créerons une application GO simple et créerons un miroir Docker Super-Lightweight pour lui.

Structure du projet? Votre dossier de projet doit être illustré ci-dessous:

GO Application

Main.go

- Un simple "Hello, World!" Parce que pourquoi rendre la vie compliquée?

go.mod

- Définir les modules et les versions GO.

<code>/dockerized-golang-server
  |-- Dockerfile
  |-- go.mod
  |-- main.go</code>
Copier après la connexion
Copier après la connexion
Secret: rationalisez Dockerfile?

Ce qui suit est la recette secrète magique du miroir rationalisé construit en plusieurs étapes:

son principe de travail:

<code>package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, World!")
    })
    http.ListenAndServe(":8080", nil)
}</code>
Copier après la connexion

Construct : La première étape compile l'application. La deuxième étape ne comprend que les fichiers binaires compilés.

Scratch Basic Mirror
<code>module github.com/krishnaaher/golang-server
go 1.23.3</code>
Copier après la connexion
: L'image de l'élément le plus légère (0 octet). C'est comme commencer par un morceau de papier blanc.

pas de contenu supplémentaire

: pas de bibliothèque, d'outils ou de fichiers inutiles, uniquement votre application.

<code># 阶段1:构建Go应用程序
FROM golang:1.23.3-alpine AS builder

WORKDIR /app

COPY go.mod .
COPY main.go .

RUN go build -o /app/main

# 阶段2:创建一个精简的运行时环境
FROM scratch

COPY --from=builder /app/main /app/main

# 运行应用程序的命令
CMD ["/app/main"]</code>
Copier après la connexion

construire et exécuter votre miroir rationalisé? Ce qui suit est de savoir comment de zéro aux héros en quelques étapes simples:

    1. Construisez une image miroir
  • Exécutez la commande suivante dans votre répertoire de projet:
  • 2. Vérifiez la taille
  • Vérifiez si votre miroir est rationalisé comme vous le souhaitez:
  • attendre la sortie:

3. Exécutez le conteneur

Exécutez votre image miroir et mappez-la au port 8080:

4. Applications de test

Ouvrez votre navigateur ou utilisez Curl pour les tests:
<code>docker build -t go-minimal-server .</code>
Copier après la connexion

Sortie:
<code>/dockerized-golang-server
  |-- Dockerfile
  |-- go.mod
  |-- main.go</code>
Copier après la connexion
Copier après la connexion

Le facteur clé du succès?

    Constructeur
  • : Compiler à une étape et exécuter à une autre étape. Il est propre, efficace et continue de se refléter petit. Sélectionnez l'image miroir de base correcte
  • : Démarrez à partir de zéro pour obtenir la plus petite image. Si vous avez besoin de certaines fonctionnalités du système d'exploitation, Alpine est un bon choix.
  • Supprimer les dépendances inutiles : Utilisez des outils Go Mod Tidy ou similaires pour nettoyer votre langue.
  • Test local : Testez toujours votre miroir rationalisé pour vous assurer qu'aucun contenu important n'est perdu.
  • Maintenant, commencez Docker! Votre conteneur léger vous attend. ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal