Docker是什么?
Docker是一个开源的容器化平台,它彻底改变了软件开发的方式。通过Docker,开发者能够将应用程序及其所有依赖项打包到一个标准化的单元(称为容器)中,确保应用在任何环境下都能以完全相同的方式运行,无论是开发环境、测试环境还是生产环境。
为什么选择Docker?
- 环境一致性:永久告别"在我的电脑上能正常运行"的尴尬问题
- 轻量高效:相比传统虚拟机,占用资源更少,启动速度提升数十倍
- 完美隔离:应用间相互独立运行,互不干扰
- 部署流畅:从开发到测试再到生产环境,一次构建,随处运行
Docker的三大核心概念
1. 镜像(Image)
镜像是应用运行的只读模板,包含了应用程序的代码、运行时环境、依赖库和配置文件。它类似于虚拟机的模板,但更轻量、更高效。
2. 容器(Container)
容器是镜像的运行实例,是Docker的核心。你可以创建、启动、停止、移动或删除容器。每个容器都是相互隔离的,拥有自己的文件系统、网络和进程空间。
3. 仓库(Repository)
仓库是存储和分发Docker镜像的中央位置。Docker Hub是最流行的公共仓库,存储了数以万计的官方和社区镜像。企业也可以建立私有仓库。
Docker基础操作指南
安装Docker
这里提供多种安装方式,适应不同用户需求:
Linux系统快速安装
# 官方一键安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Windows/macOS用户
- Windows:下载并安装 Docker Desktop for Windows
- macOS:安装 Docker Desktop for Mac 或更轻量的 OrbStack
配置Docker镜像加速
在国内环境使用Docker时,从默认的Docker Hub拉取镜像可能会较慢。配置国内镜像源可以显著提升下载速度。
下方提供了常用的国内Docker镜像源,你可以自行在网上搜索更多的镜像源网址。
Linux系统配置镜像加速
# 创建或修改daemon.json文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
Windows/macOS用户配置镜像加速
- 打开Docker Desktop
- 点击右上角的设置图标
- 选择"Docker Engine"
- 在JSON配置中添加或修改registry-mirrors字段:
{ "registry-mirrors": [ "https://registry.cn-hangzhou.aliyuncs.com", "https://mirror.ccs.tencentyun.com", "https://docker.mirrors.ustc.edu.cn" ] }
- 点击"Apply & Restart"应用更改
常用国内Docker镜像源
- 阿里云:
https://registry.cn-hangzhou.aliyuncs.com
- 腾讯云:
https://mirror.ccs.tencentyun.com
- 中科大:
https://docker.mirrors.ustc.edu.cn
- 网易:
https://hub-mirror.c.163.com
验证镜像是否生效
# 查看镜像配置是否生效
docker info | grep "Registry Mirrors"
# 尝试拉取镜像测试速度
time docker pull nginx:alpine
必备命令
# 检查Docker安装状态
docker version
# 从Docker Hub拉取镜像
docker pull nginx:latest
# 启动容器(后台运行,端口映射)
docker run -d -p 8080:80 --name my-nginx nginx:latest
# 查看正在运行的容器
docker ps
# 停止容器
docker stop my-nginx
# 删除容器
docker rm my-nginx
Docker工作流实践
Docker的典型工作流程包括三个核心步骤:
- 构建镜像:通过Dockerfile精确定义应用环境和依赖
- 分享镜像:将镜像推送到Docker Hub或私有仓库,便于团队协作
- 部署容器:在任何支持Docker的基础设施上一致性地运行应用
实战案例:5分钟部署一个网站
下面通过一个简单的实例,体验Docker的强大:
# 第一步:创建项目目录和网站内容
mkdir docker-website && cd docker-website
echo '<html><head><meta charset="UTF-8"><title>Hello from Docker!</title></head>
<body style="background-color:#f0f0f0; font-family:Arial;">
<h1 style="color:#3366cc; text-align:center;">Hello from Docker!</h1>
<p style="text-align:center;">如果你看到这个页面,说明你已成功使用Docker部署了一个网站!</p>
</body></html>' > index.html
# 第二步:创建Dockerfile(定义容器环境)
cat > Dockerfile << 'EOF'
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80
EOF
# 第三步:构建Docker镜像
docker build -t my-first-website .
# 第四步:启动容器
docker run -d -p 8080:80 --name website-demo my-first-website
# 完成!现在打开浏览器访问 http://localhost:8080 即可看到网站
进阶学习资源
- 官方文档:Docker Documentation – 最全面的指南
- 镜像仓库:Docker Hub – 查找优质镜像的宝库
- 社区支持:Docker Forums – 解答疑问的最佳场所
- 实践教程:Docker Labs – 边做边学
Docker不仅是一种技术,更是一种思维方式。掌握它将让你的开发工作流程更加高效、一致和可靠。今天就开始你的Docker之旅吧!
发表回复