Golang在Ubuntu上如何使用Docker
在Ubuntu安装Docker,创建GolangHTTP服务器项目,编写多阶段构建的Dockerfile以减小镜像体积。构建镜像并运行容器,映射8080端口,外部访问即可看到“Hello,World!”。
把 Golang 应用放到 Docker 容器里跑,这事儿现在已经是不少开发者日常的一部分了。在 Ubuntu 上操作,其实步骤相当清晰,几个关键点走通就行。下面我们就一步一步来。
安装 Docker on Ubuntu
首先,安装 Docker。这一步比较简单,打开终端,然后依次执行以下命令:
sudo apt update
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
装完之后,验证一下——跑一句 docker --version,如果能看到版本信息,说明已经装好了。
创建 Golang 项目
接下来,创建一个项目目录作为根目录,并进入该目录:
mkdir my-golang-app && cd my-golang-app
然后创建一个简单的 main.go 文件。这里以一个 HTTP 服务器为例:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
保存后可以用 go run main.go 在本地测试一下,访问 localhost:8080 应该能看到 “Hello, World!”。
编写 Dockerfile
关键步骤来了——在项目根目录下创建一个 Dockerfile(注意没有扩展名)。这里推荐使用多阶段构建,能大幅减小最终镜像体积:
# 构建阶段:使用官方 Golang 镜像(带版本号,比如 1.23-alpine 轻量版)
FROM golang:1.23-alpine AS builder
WORKDIR /app
# 复制 go.mod 和 go.sum 文件(提前下载依赖,利用 Docker 缓存)
COPY go.mod go.sum ./
RUN go mod download
# 复制项目源代码
COPY . .
# 编译应用(输出二进制文件到 /app 目录)
RUN go build -o my-golang-app .
# 最终阶段:使用 alpine(极小镜像)作为运行环境
FROM alpine:latest
WORKDIR /root/
# 从构建阶段复制编译好的二进制文件
COPY --from=builder /app/my-golang-app .
# 暴露应用端口(若需外部访问)
EXPOSE 8080
# 定义容器启动命令
CMD ["./my-golang-app"]
这里有两个值得注意的点:多阶段构建让第一阶段用 golang 镜像编译,第二阶段用 alpine 运行,最终镜像能从几百 MB 降到几 MB;而提前复制 go.mod 和 go.sum 则是利用 Docker 缓存,避免每次改代码都重新下载依赖。
构建 Docker 镜像
在项目根目录下执行以下命令:
docker build -t my-golang-app .
构建过程中终端会显示每一阶段的日志,比如下载依赖、编译代码等等。构建成功后,docker images 就能看到 my-golang-app 这个镜像了。
运行 Docker 容器
使用以下命令运行容器:
docker run -d -p 8080:8080 --name my-golang-container my-golang-app
参数说明:
-d:后台运行(守护进程模式)-p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口,外部通过localhost:8080访问--name:为容器指定一个易记的名称,方便后续管理
验证部署
打开浏览器或使用 curl 访问 http://localhost:8080,应该能看到输出 “Hello, World!”。如果用 curl,终端会显示:
$ curl http://localhost:8080
Hello, World!
到这里,Golang 应用已经通过 Docker 在 Ubuntu 上成功运行了。
常用 Docker 命令
最后整理几个日常操作会用到的命令,方便查阅:
- 查看运行中的容器:
docker ps - 停止容器:
docker stop my-golang-container - 启动已停止的容器:
docker start my-golang-container - 删除容器:
docker rm my-golang-container - 删除镜像:
docker rmi my-golang-app - 查看容器日志(调试利器):
docker logs my-golang-container
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















