Golang在Linux下的容器化实践主要通过Docker实现,核心步骤如下:
在Linux系统(如Ubuntu/CentOS)上安装Docker,确保环境准备就绪。
sudo apt update && sudo apt install docker.io
sudo systemctl start docker && sudo systemctl enable docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce && sudo systemctl start docker && sudo systemctl enable docker
采用多阶段构建优化镜像体积,示例:
# 构建阶段(使用Alpine基础镜像)
FROM golang:1.24-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o /myapp
# 运行阶段(使用轻量级Alpine镜像)
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /myapp .
EXPOSE 8080
CMD ["./myapp"]
关键点:
CGO_ENABLED=0:构建静态链接二进制,避免依赖动态库。GOOS=linux:指定目标平台为Linux。--from复制构建产物,减少最终镜像体积。docker build -t my-golang-app .
docker run -d -p 8080:8080 --name my-app my-golang-app
-d:后台运行容器。-p 8080:8080:将容器端口映射到主机端口。USER 1000。docker scan或第三方工具。docker ps
docker logs <容器ID>
docker exec -it <容器ID> /bin/sh。参考来源:[2,3,4,5,6,7,8,9,10,11]