温馨提示×

golang ubuntu怎么打docker包

小樊
46
2026-10-04 09:02:37
栏目: 编程语言

在 Ubuntu 上用 Go(Golang)打 Docker 包,一般有两种常见做法:


一、最常用:多阶段构建(推荐)

优点:镜像小、干净、只含二进制

1️⃣ 准备一个简单的 Go 项目

mkdir go-docker && cd go-docker
go mod init go-docker

main.go 示例:

package main

import "fmt"

func main() {
    fmt.Println("Hello Docker")
}

2️⃣ 写 Dockerfile(多阶段)

# 构建阶段
FROM golang:1.22 AS builder

WORKDIR /app
COPY . .

RUN go build -o main .

# 运行阶段
FROM debian:bookworm-slim

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

CMD ["./main"]

也可以用 FROM alpine 或 FROM gcr.io/distroless/static


3️⃣ 构建镜像

docker build -t go-docker:latest .

4️⃣ 运行容器

docker run --rm go-docker

二、更极致的“零依赖”镜像(scratch)

FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o main .

FROM scratch
COPY --from=builder /app/main /
CMD ["/main"]

构建:

docker build -t go-scratch .

✅ 镜像只有几 MB
❗ 不能 debug、没有 shell


三、Ubuntu 本机准备环境(如果还没装)

sudo apt update
sudo apt install -y docker.io golang-go
sudo systemctl enable --now docker

四、常见坑

问题 解决
编译慢 用 go mod download 缓存
跨平台 GOOS=linux GOARCH=amd64
权限问题 sudo usermod -aG docker $USER

如果你愿意,我可以:

  • 给你 Web 服务(gin/echo)Docker 示例
  • 帮你 优化 Docker 构建速度
  • 写 docker-compose + go 示例

你现在是打 CLI 工具 还是 Web 服务?

0 踩