在现代软件开发和部署中,Docker 已经成为了不可或缺的工具。它完美解决了“在我的机器上明明能跑”的经典难题。本文将带你从零开始安装 Docker,快速梳理核心概念,并汇总日常开发和服务器运维中最常用的命令,建议收藏作为手边备忘录。
对于大多数 Linux 发行版(如 Ubuntu、Debian、CentOS 等),Docker 官方提供了一个非常方便的一键自动化安装脚本,这也是在服务器上最快捷的安装方式。
1. 运行一键安装脚本:
bashcurl -fsSL [https://get.docker.com](https://get.docker.com) -o get-docker.sh sudo sh get-docker.sh
2. 启动 Docker 服务:
bashsudo systemctl start docker
3. 设置 Docker 开机自启:
bashsudo systemctl enable docker
(可选优化) 避免每次敲命令都要加 sudo:
如果你当前使用的是非 root 用户,建议将当前用户加入 docker 用户组,这样以后执行 docker 命令就不需要提权了(执行后需退出终端重新登录生效):
bashsudo usermod -aG docker $USER
在死记硬背命令之前,理解以下三个核心概念会让你的操作更加得心应手:
镜像是容器运行的基础,以下是日常操作镜像的高频命令:
docker search <关键词>
(例如:docker search nginx 可以在 Docker Hub 查找相关镜像)docker pull <镜像名:标签>
(如果不写标签,默认拉取 latest 最新版,例如:docker pull ubuntu:20.04)docker imagesdocker rmi <镜像名/镜像ID>
(注意:如果该镜像有对应的容器正在运行或已停止,需要先删除容器才能删除镜像)docker image prune
(用于清理那些没有标签、且没有被容器使用的废弃镜像,释放磁盘空间)docker build -t <镜像名:标签> <dockerfile路径>
(通常在项目根目录执行:docker build -t myapp:v1 .,注意末尾的点代表当前目录)docker push <镜像名:标签>
(推送前通常需要先使用 docker login 登录,并确保镜像名包含你的用户名/组织名)容器的生命周期管理是我们日常敲得最多的命令:
常用参数解析:bashdocker run -d -p 8080:80 --name <容器名> <镜像名:标签>
-d: 后台运行容器,并返回容器ID。-p: 端口映射,格式为 宿主机端口:容器内部端口。--name: 为容器指定一个易记的名称。-v: 目录挂载,格式为 宿主机目录:容器内目录(例如:-v /data/mysql:/var/lib/mysql),用于数据持久化。--rm: 容器停止后自动删除(适合运行临时测试容器)。docker psdocker ps -adocker stop <容器名/容器ID>docker kill <容器名/容器ID>docker start <容器名/容器ID>docker restart <容器名/容器ID>bashdocker exec -it <容器名/容器ID> /bin/bash
(注:如果是极简镜像如 Alpine,可能没有 bash,需要将 /bin/bash 换成 sh)bashdocker logs -f --tail 100 <容器名/容器ID>
(参数 -f 表示持续实时追踪输出,--tail 100 表示仅查看最后 100 行,非常适合排查报错)docker stats
(类似 Linux 的 top 命令,实时显示 CPU、内存、网络 IO 占用)docker rm <容器名/容器ID>docker rm -f <容器名/容器ID>这里补充几个在实际应用中经常能“救命”或极大提升效率的命令:
docker cp <容器名>:/容器内路径 /宿主机路径docker cp /宿主机路径 <容器名>:/容器内路径docker system dfdocker system prune
(一键清除所有停止的容器、未被任何容器引用的网络、未被使用的所有镜像和构建缓存。如果要顺便清理未被使用的挂载卷,可以加 -a --volumes)总结:
Docker 的命令虽然繁多,但其设计逻辑非常清晰。掌握了 image 和 container 的核心操作规律,结合 -h 或 --help 随时查阅参数,就能轻松应对绝大多数的开发和部署场景。
本文作者:Dryhten
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!