引言:为什么开发者应该拥抱Docker?

作为开发者,我们的日常工作总离不开各种依赖:数据库(MySQL, PostgreSQL, Redis)、消息队列(RabbitMQ)、搜索引擎(Elasticsearch)等等。

传统的做法是在我们自己的操作系统上(Windows, macOS)直接安装这些服务。这会带来一系列问题:

  • 安装过程繁琐:每个软件都有不同的安装步骤、配置文件和注意事项。
  • 环境污染:这些服务会在你的系统中留下各种文件和配置,卸载不干净是常事。
  • 版本冲突:项目A需要PostgreSQL 12,而项目B需要PostgreSQL 14,在同一台机器上管理它们会非常痛苦。
  • 与生产环境不一致:本地环境和服务器上的生产环境可能存在细微差异,导致“在我机器上是好的”窘境。

Docker 以其轻量级的“容器”技术,完美地解决了这些问题。你可以把每个服务(比如一个PostgreSQL数据库)都看作一个被打包好的、隔离的“集装箱”。你可以随时启动、停止、删除这个“集装箱”,而它完全不会影响到你的主系统或其他“集装箱”。

这篇入门教程,就将以最常见的需求——在本地启动一个PostgreSQL数据库——为例,让你感受Docker的优雅与强大。

准备工作:安装Docker

这是唯一需要你“安装”的东西。

  • 访问官网https://www.docker.com/products/docker-desktop/
  • 下载并安装:根据你的操作系统(Windows, macOS, Linux)下载对应的Docker Desktop版本并完成安装。
  • 启动Docker Desktop:安装后,启动Docker Desktop应用程序。当你在系统托盘看到Docker的鲸鱼图标稳定下来后,就表示Docker引擎已经在后台成功运行了。

一行命令,启动你的数据库!

现在,打开你的终端(CMD, PowerShell, Terminal),复制并执行下面这行命令:

docker run --name my-postgres-db -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres

按回车后,你会看到Docker开始下载 postgres镜像(如果是第一次运行的话),然后迅速启动容器。

让我们来分解这行命令:

  • docker run:这是启动一个新容器的命令。
  • --name my-postgres-db:给你的容器起一个好记的名字,方便以后管理。
  • -e POSTGRES_PASSWORD=mysecretpassword:设置一个环境变量。postgres镜像规定,必须通过 POSTGRES_PASSWORD这个环境变量来设置数据库超级用户 postgres的初始密码。这里我们设置为了 mysecretpassword
  • -p 5432:5432:这是端口映射。它将我们电脑(宿主机)的 5432端口,映射到容器内部的 5432端口(PostgreSQL默认监听的端口)。这样,我们就可以通过本地的 localhost:5432来访问容器里的数据库了。
  • -d:表示在“分离模式”(detached)下运行容器。简单说,就是让它在后台持续运行,而不是占据当前的终端。
  • postgres:要使用的镜像名称。Docker会自动从Docker Hub上拉取最新版本的官方 postgres镜像。

连接到你的新数据库

现在,一个功能齐全的PostgreSQL数据库已经在你的电脑上运行了。你可以使用任何你喜欢的数据库客户端来连接它。这里以流行的免费工具 pgAdmin 为例。

  • 主机名/地址 (Host name/address): localhost (或者 127.0.0.1)
  • 端口 (Port): 5432
  • 用户名 (Username): postgres (这是 postgres镜像的默认超级用户名)
  • 密码 (Password): mysecretpassword (这就是我们通过环境变量设置的密码)

点击连接,成功!你现在可以像操作任何远程或本地安装的数据库一样,创建表、插入数据、执行查询了。

管理你的容器

当你用完这个数据库后,可以轻松地管理它:

  • 查看正在运行的容器

    docker ps
    
  • 停止数据库容器

    docker stop my-postgres-db
    
  • 再次启动已停止的容器

    docker start my-postgres-db
    
  • 彻底删除容器(数据也会丢失!): 当你不再需要这个数据库实例时,可以先停止它,然后用 rm命令删除。

    docker stop my-postgres-db
    docker rm my-postgres-db
    

    执行后,这个数据库相关的所有痕迹都会从你的系统中被彻底、干净地移除。

总结

你已经体验到了Docker的魅力:快速、隔离、可复现

从今天起,当你的下一个项目需要Redis缓存时,就 docker run -d redis;需要MySQL数据库时,就 docker run -d mysql… 告别繁琐的安装和配置,让你的开发环境保持整洁,让你能更专注于真正重要的事——编写代码。