Docker 是开发人员用于创建、部署和运行容器化应用程序的重要工具。容器将应用程序及其依赖项打包在一起,使其更容易在不同环境中一致地部署。本文将介绍如何安装 Docker、测试 Docker 命令以及在 Docker 容器中运行 Golang 应用程序。
安装 Docker
要开始使用 Docker,首先需要在您的系统上安装它。
在 Ubuntu 上安装 Docker
更新软件包列表:
sudo apt-get update
安装 Docker 的依赖项:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
添加 Docker 的官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 仓库:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
验证 Docker 安装:
docker --version
您应该看到 Docker 的版本号,确认其已成功安装。
在 Windows 和 macOS 上安装 Docker
对于 Windows 和 macOS,您可以从官方网站下载 Docker Desktop。按照安装说明进行操作,即可开始使用 Docker。
测试基本的 Docker 命令
安装 Docker 后,建议测试一些基本命令以确保一切正常。
运行您的第一个 Docker 命令
检查 Docker 状态:
sudo systemctl status docker # 对于 Linux
(在 Windows/macOS 上,Docker Desktop 会自动启动 Docker 守护进程。)
在 Docker 中运行 Hello World:
docker run hello-world
此命令下载并运行一个小型 Docker 容器,打印“Hello from Docker!” 如果您看到此消息,说明 Docker 正常工作。
列出正在运行的容器:
docker ps
此命令显示所有正在运行的容器。如果没有容器在运行,列表将为空。
列出所有容器:
docker ps -a
此命令列出所有容器,包括已停止的容器。
移除一个容器:
docker rm <container_id>
将 <container_id>
替换为您想要移除的容器 ID,该 ID 可通过 docker ps -a
列出。
移除未使用的 Docker 镜像:
docker image prune -a
此命令清除未使用的镜像以节省空间。
在 Docker 中运行 Golang 应用程序
现在 Docker 已安装并正常工作,我们来创建并在 Docker 容器中运行一个简单的 Golang 应用程序。
第一步:编写一个简单的 Golang 应用程序
创建一个项目目录并进入该目录:
mkdir go_docker_app
cd go_docker_app
创建一个名为 main.go
的文件,并写入以下内容:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, Dockerized Golang!")
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("Starting server on port 8080...")
http.ListenAndServe(":8080", nil)
}
这个应用程序设置了一个简单的 Web 服务器,监听 8080 端口,并对任何 HTTP 请求响应“Hello, Dockerized Golang!”
第二步:创建 Dockerfile
在同一目录下,创建一个 Dockerfile 来定义您的 Golang 应用程序的 Docker 镜像:
创建一个名为 Dockerfile 的文件,并粘贴以下代码:
# Use the official Golang image as the base
FROM golang:1.19
# Set the working directory inside the container
WORKDIR /app
# Copy the Go application code to the container
COPY . .
# Build the Go application
RUN go mod init go_docker_app && go build -o app main.go
# Expose the port on which the app will run
EXPOSE 8080
# Run the app
CMD ["./app"]
Dockerfile 说明
FROM:指定基础镜像。这里我们使用官方的 Golang 1.19 镜像。 WORKDIR:设置容器内的工作目录为 /app
。COPY:将主机当前目录下的文件复制到容器的 /app
目录。RUN:初始化 Go 模块并使用 go build -o app main.go
构建应用程序。EXPOSE:暴露应用程序运行的 8080 端口。 CMD:指定容器启动时运行的命令。
第三步:构建 Docker 镜像
使用 Dockerfile 构建您的 Go 应用程序的 Docker 镜像:
docker build -t go_docker_app .
此命令告诉 Docker 从当前目录(.)中的 Dockerfile 构建一个名为 go_docker_app
的镜像。
第四步:运行 Docker 容器
镜像构建完成后,运行容器:
docker run -p 8080:8080 go_docker_app
此命令将主机上的 8080 端口映射到容器中的 8080 端口,使您可以从主机访问应用程序。
第五步:测试应用程序
打开浏览器或使用 curl 测试应用程序:
curl http://localhost:8080
您应该看到响应:Hello, Dockerized Golang!
这确认您的 Golang 应用程序已成功在 Docker 容器中运行。
第六步:停止并移除容器
要停止容器,请在运行容器的终端中按 Ctrl + C。要以后台进程(分离模式)运行它,使用:
docker run -d -p 8080:8080 go_docker_app
要停止一个分离的容器,使用 docker ps
列出正在运行的容器,然后使用 docker stop <container_id>
。
其他 Docker 提示(可选)
检查 Docker 日志:
docker logs <container_id>
访问正在运行的容器的 Shell:
docker exec -it <container_id> /bin/bash
移除 Docker 镜像:
docker rmi go_docker_app
在本指南中,我们介绍了:
在各种系统上安装 Docker。 测试和管理容器的基本 Docker 命令。 使用 Dockerfile 在 Docker 中创建和运行 Golang 应用程序。
在 Docker 容器中运行应用程序提供了一种一致且隔离的环境,确保您的应用程序在不同系统上表现一致。将 Go 应用程序容器化,使其易于部署、可移植,并可在各种云或本地环境中扩展。