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 管理镜像。掌握这一组命令,你就能在自己的服务器上稳定地部署和运维容器化应用了。