ホームページ >バックエンド開発 >Golang >最小限のDocker画像を構築します

最小限のDocker画像を構築します

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-29 14:07:09922ブラウズ

Building Minimal Docker Images

合理化されたDockerミラー:ワークフローを改善する革新的な利点

Dockerについて話しましょう。はい、この魔法のツールはすべての開発者から賞賛されているようです。それは私たちの生活を楽にすることを約束し、展開はよりスムーズです。しかし、問題は、Dockerミラーが肥大化している可能性があることです。彼らはあなたが週末に詰める大きなスーツケースのようなもので、不必要なものでいっぱいです、あなたはあなたが必要とするものさえ見つけることができません!これは、手がかりの代わりにバックパックを使用するようなものです。それでは、をDocker Mirror

に紹介しましょう。これは、コンテナの究極の減量計画です。 ?

これは、ミラーを減らす数人のメガーではなく、これらのコンテナがより簡単に保護、展開、拡張できるようにします。シートベルトを締めてください!合理化されたDockerミラーの世界を探索し、実際の例と実際の手順を使用してそれを豊かにします。

合理化されたDockerミラーの重要性は何ですか? ?

Docker Mirrorは食事と見なされています。不要なライブラリ、ツール、構成を埋めるよりも、必要なアイテムのみを含めることをお勧めします。これは、さまざまな材料でいっぱいの「豪華な」ピザの代わりに、シンプルなマーガレットピザを注文するようなものです。味はより良く、効果はより良いです。


以下は高速の比較です:

----

なぜ合理化されたDockerミラーを気にする必要があるのですか? ?

「なぜそれほど支払うのか、私のアプリケーションがうまくいくのか」と考えているなら、合理化されたミラーは

ゲームのルールを変更する理由です 1。セキュリティ:より合理化されています

Dockerミラー内の追加の依存関係、ツール、またはライブラリはすべて、潜在的な抜け穴です。合理化されたミラーは、攻撃面を減らします。パーツが少ないほど、ハッカーがスニークすることが少なくなります。それはあなたのすべてのドアをロックするようなものです - ここには招待されていないゲストはありません!

2。コストを節約しますか? 特にクラウドでは、ストレージと帯域幅は無料ではありません。 AWS、Azure、またはGCPに展開されているかどうかにかかわらず、マージドバイトごとに蓄積します。簡素化されたミラーは、ストレージコストを節約し、データ送信コストを削減できます。このお金を使ってピザを買うことができます。 ? 3。簡単な拡張?

クラスターに複数のコンテナを展開すると、毎秒が重要です。ミラーのスタートアップ速度が小さいため、拡張機能が速くなります。

ステップバイステップ:合理化されたDockerミラーを作成しますか? 本当の例を豊かにしましょう!簡単なGOアプリケーションを構築し、そのためのスーパーライトウェイトDockerミラーを作成します。

プロジェクト構造?

プロジェクトフォルダーを以下に示す必要があります

go application main.go

- 単純な「こんにちは、世界!」なぜ人生を複雑にするのですか?


go.mod

- モジュールとGOバージョンを定義します。

秘密:dockerfileを合理化しますか?

以下は、複数の段階で構築された合理化された鏡の魔法の秘密のレシピです。

その作業原則:

<code>/dockerized-golang-server
  |-- Dockerfile
  |-- go.mod
  |-- main.go</code>

construct

:最初の段階がアプリケーションをコンパイルします。第2段階には、コンパイルされたバイナリファイルのみが含まれます。 スクラッチベーシックミラー

:最も軽い要素画像(0バイト)。これは、ホワイトペーパーから始めるようなものです。
<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>

追加コンテンツなし:不要なライブラリ、ツール、ファイル - アプリケーションのみ。

<code>module github.com/krishnaaher/golang-server
go 1.23.3</code>

合理化されたミラーを構築して実行しますか?

以下は、いくつかの簡単な手順でゼロからヒーローへの方法です。

1。

プロジェクトディレクトリで次のコマンドを実行してください:
<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>

2。サイズを確認してください

    ミラーが必要に応じて合理化されているかどうかを確認してください:
  • 出力を期待する:
  • 3。コンテナを実行します
  • 鏡像を実行して、ポート8080にマッピングしてください:
  • 4。
ブラウザを開くか、テストにCurlを使用してください:

出力:
<code>/dockerized-golang-server
  |-- Dockerfile
  |-- go.mod
  |-- main.go</code>

成功の重要な要素?

    construct
  • :ある段階でコンパイルし、別の段階で実行します。それは清潔で効率的で、ミラーリングを小さく保ちます。 正しい基本的な鏡像を選択します
  • :ゼロから始めて、最小の画像を取得します。いくつかの基本的なOS機能が必要な場合、Alpineは良い選択です。
  • 不要な依存関係を削除:Go Mod Tidyまたは同様のツールを使用して、言語をクリーンアップします。
  • ローカルテスト:重要なコンテンツが失われないように、合理化されたミラーを常にテストしてください。
  • さあ、Dockerを開始してください!あなたの軽量の容器があなたを待っています。 ?

以上が最小限のDocker画像を構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。