Docker 入门:安装、镜像、容器与常用命令

从零在你的服务器上装好 Docker,理解镜像与容器的区别,并掌握日常运维最常用的一组命令。

Docker 让你把应用和它的运行环境打包成一个可移植的「镜像」,再在服务器上以「容器」形式跑起来,免去手动装依赖、配环境的麻烦。本文以 Ubuntu/Debian 为主,带你走完从安装到日常操作的完整链路。

安装 Docker

在你的服务器/VPS 上,最省事的方式是用官方一键脚本:

curl -fsSL https://get.docker.com | sh

如果你更倾向手动用 apt 安装官方仓库版本:

sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

> Debian 用户把上面 URL 里的 ubuntu 换成 debian 即可。

装完验证一下,并把当前用户加进 docker 组,免得每条命令都敲 sudo:

sudo docker run hello-world      # 能打印欢迎信息就成功了
sudo usermod -aG docker $USER    # 重新登录后生效

镜像 vs 容器

这是理解 Docker 的关键:

  • 镜像(image):只读的模板,包含应用及其依赖,类似「安装包」或「类」。
  • 容器(container):镜像运行起来的实例,可读写、可启停,类似「进程」或「对象」。

一个镜像可以创建出任意多个容器;容器停止或删除后,镜像仍然留在本地。

拉起你的第一个容器

docker run 会在本地没有镜像时自动拉取,再启动容器。以 Nginx 为例:

docker run -d -p 8080:80 --name web nginx

几个最常用的参数:

  • -d:后台运行(detached),不占用当前终端。
  • -p 8080:80:端口映射,把服务器的 8080 映射到容器内的 80。
  • -v /data/site:/usr/share/nginx/html:挂载卷,把宿主机目录挂进容器,数据持久化。
  • --name web:给容器起个好记的名字,后续命令直接用它。

现在浏览器访问 http://你的服务器IP:8080 就能看到 Nginx 页面。

管理容器的日常命令

docker ps               # 查看运行中的容器
docker ps -a            # 包含已停止的
docker logs -f web      # 实时查看日志(-f 跟随)
docker exec -it web bash # 进入容器内部执行命令
docker stop web         # 停止容器
docker start web        # 再次启动
docker rm web           # 删除容器(需先 stop)

其中 docker exec -it 是排障利器:-it 表示交互式终端,进去后可以像普通 Linux 一样查看文件、调试配置。

管理镜像

docker pull redis:7     # 拉取指定版本(tag)的镜像
docker images           # 列出本地镜像
docker rmi nginx        # 删除镜像(需先删除依赖它的容器)

镜像名后面的 :7、:latest 是标签(tag),用来区分版本。不写标签默认是 latest,但生产环境建议钉死具体版本,避免不可预期的更新。

小结

安装用官方脚本或 apt;记住镜像是模板、容器是实例;用 docker run 配合 -d/-p/-v/--name 拉起服务;用 ps/logs/exec/stop/rm 做日常管理;用 pull/images/rmi 管理镜像。掌握这一组命令,你就能在自己的服务器上稳定地部署和运维容器化应用了。