Docker 零基础入门到实战:一文带你玩转容器化部署!

Docker 零基础入门到实战:一文带你玩转容器化部署!
惜溯
图片来源:Docker 官网
在现代软件开发和运维中,Docker 已经成为一项不可或缺的技术。它通过容器化技术,极大地简化了应用的部署、测试和分发过程。无论你是开发者、运维工程师,还是仅仅对新技术充满好奇,这篇 Docker 操作指南都将带你从零开始,一步步掌握 Docker 的核心操作。
📖 Docker 是什么?为什么选择它?
简单来说,Docker 就像一个神奇的“集装箱”,它可以将你的应用程序及其所有依赖(库、运行时、系统工具等)打包在一起,形成一个轻量级、可移植的“容器”。这个容器可以在任何安装了 Docker 的机器上运行,而不用担心环境差异导致的问题。
选择 Docker 的理由:
- 环境一致性:告别“在我电脑上明明是好的!”的尴尬。
- 快速部署:秒级启动,加速开发、测试、部署流程。
- 资源隔离:容器间互不影响,更安全、更稳定。
- 轻量高效:相比传统虚拟机,Docker 容器更小、更快、占用资源更少。
- 易于迁移和扩展:轻松将应用从开发环境迁移到生产环境,并根据需求快速扩展。
🛠️ 安装 Docker
Docker 支持主流的操作系统,包括 Windows, macOS 和各种 Linux 发行版。
- Windows: 下载并安装 Docker Desktop for Windows (建议开启 WSL2 后端)。
- macOS: 下载并安装 Docker Desktop for Mac。
- Linux: 根据你的发行版,参考官方文档进行安装。例如,对于 Ubuntu:
1
2
3
4
5
6
7sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl status docker # 验证 Docker 是否运行
安装完成后,可以通过运行 docker --version 来验证是否安装成功。
核心概念解析
在深入学习命令之前,我们先了解几个 Docker 的核心概念:
镜像 (Image):
- 一个只读的模板,包含了运行应用程序所需的文件系统和配置。
- 镜像是分层的,每一层都是在前一层的基础上构建的。
- 可以把镜像理解为面向对象编程中的“类”。
容器 (Container):
- 镜像的运行实例。
- 容器是可读写的,可以在镜像层之上创建一个可写层。
- 可以把容器理解为面向对象编程中的“对象实例”。
- 容器之间是相互隔离的。
仓库 (Registry):
- 集中存放和分发镜像服务。
- 最著名的公共仓库是 Docker Hub。
- 你也可以搭建私有仓库。
Dockerfile:
- 一个文本文件,包含了一系列指令,用于自动化构建 Docker 镜像。
- 通过
docker build命令,Docker 可以读取 Dockerfile 中的指令并自动构建镜像。
🚀 Docker 常用命令实战
接下来,让我们通过实际操作来学习 Docker 的常用命令。
1. 镜像操作
搜索镜像: 从 Docker Hub 搜索镜像。
1
2
3docker search <image_name>
# 例如: 搜索 nginx 镜像
docker search nginx拉取镜像: 从仓库下载镜像到本地。
1
2
3
4
5docker pull <image_name>:<tag>
# 例如: 拉取最新版的 nginx 镜像 (latest 是默认 tag)
docker pull nginx
# 拉取指定版本的 nginx
docker pull nginx:1.21查看本地镜像: 列出本地已有的镜像。
1
2
3docker images
# 或者
docker image ls删除本地镜像:
1
2
3
4
5docker rmi <image_id_or_name>
# 或者
docker image rm <image_id_or_name>
# 强制删除 (即使有容器正在使用它,但不推荐)
docker rmi -f <image_id_or_name>如果镜像被容器使用,需要先停止并删除容器。
2. 容器操作
运行容器: 基于镜像创建一个新的容器并启动它。
1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用
OPTIONS:-d: 后台运行容器 (detached mode)。-p <host_port>:<container_port>: 端口映射,将主机的端口映射到容器的端口。--name <container_name>: 给容器指定一个名称。-v <host_path>:<container_path>: 数据卷挂载,将主机的目录挂载到容器的目录。-it: 以交互模式运行容器,通常与/bin/bash等命令结合使用。--rm: 容器停止后自动删除。
示例:运行一个 Nginx 容器
1
2# 后台运行 nginx,将主机 8080 端口映射到容器 80 端口,并命名为 my-nginx
docker run -d -p 8080:80 --name my-nginx nginx现在访问
http://localhost:8080应该能看到 Nginx 的欢迎页面。查看运行中的容器:
1
docker ps
查看所有容器 (包括已停止的):
1
docker ps -a
停止容器:
1
2
3docker stop <container_id_or_name>
# 例如: 停止名为 my-nginx 的容器
docker stop my-nginx启动已停止的容器:
1
2
3docker start <container_id_or_name>
# 例如: 启动名为 my-nginx 的容器
docker start my-nginx重启容器:
1
docker restart <container_id_or_name>
删除容器: 容器必须是停止状态才能删除。
1
2
3
4
5docker rm <container_id_or_name>
# 例如: 删除名为 my-nginx 的容器 (需先停止)
docker rm my-nginx
# 强制删除运行中的容器 (不推荐)
docker rm -f <container_id_or_name>查看容器日志:
1
2
3docker logs <container_id_or_name>
# 实时查看日志
docker logs -f <container_id_or_name>进入运行中的容器:
1
2
3
4docker exec -it <container_id_or_name> <command>
# 例如: 进入 my-nginx 容器的 bash shell
docker exec -it my-nginx /bin/bash
# 退出容器 shell,输入 exit
3. 清理资源
删除所有已停止的容器:
1
2
3docker container prune
# 或者更暴力的,删除所有容器(无论状态)
# docker rm $(docker ps -aq) -f删除所有未被使用的镜像 (dangling images):
1
docker image prune
删除所有未被使用的资源 (容器、网络、镜像等):
1
docker system prune -a
注意:
prune命令会要求确认,请谨慎操作。
国内镜像源
为了提高下载速度,可以使用国内的镜像源,例如阿里云、DaoCloud、网易云等提供的 Docker 镜像加速服务。
阿里云镜像加速
- 登录阿里云控制台,找到容器镜像服务。
- 在左侧导航栏选择镜像加速器。
- 复制加速器地址,并按照以下步骤配置 Docker 镜像加速器。
对于 Ubuntu 系统,编辑 /etc/docker/daemon.json 文件,添加以下内容:
1 | { |
然后重启 Docker 服务:
1 | sudo systemctl daemon-reload |
其他一些国内镜像源
- docker.mybacc.com (可用)
- docker.1ms.run (可用)
其他参考:https://github.com/dongyubin/DockerHub?tab=readme-ov-file
📄 Dockerfile:构建自己的镜像
Dockerfile 是一个文本文件,用于定义如何构建 Docker 镜像。它包含一系列指令,Docker 会按照这些指令一步步执行来创建镜像。









