Docker 技术入门与实践指南
引言
Docker 是一种开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
本文将详细介绍 Docker 的基本概念、安装方法、基本命令和实际应用案例,帮助初学者快速上手 Docker,并了解如何在实际项目中使用 Docker。
1. Docker 基本概念
1.1 容器与虚拟机
- 容器:容器是一种轻量级、可移植、自包含的软件打包技术,使应用可以在几乎任何地方以相同的方式运行。容器与宿主机共享内核,但通过命名空间和控制组等技术实现了资源的隔离。
- 虚拟机:虚拟机通过模拟完整的硬件环境来运行操作系统,每个虚拟机都有自己的操作系统,因此资源消耗相对较大,启动时间也较长。
1.2 Docker 组件
- Docker 客户端:用户通过 Docker 客户端与 Docker 服务端进行交互,执行命令。
- Docker 服务端:Docker 服务端运行在宿主机上,负责管理容器的创建、运行和停止。
- Docker 镜像:Docker 镜像是一个只读的模板,包含了启动容器所需的文件系统和配置信息。
- Docker 容器:容器是从镜像创建的运行实例,可以被启动、停止和删除。容器是独立的、隔离的运行环境。
- Docker 仓库:Docker 仓库是集中存放镜像文件的场所,可以是本地仓库,也可以是公共仓库,如 Docker Hub。
2. 安装 Docker
Docker 支持多种操作系统,包括 Linux、Windows 和 macOS。以下是不同操作系统的安装方法:
2.1 Linux(以 Ubuntu 为例)
# 更新软件包索引
sudo apt-get update
# 安装必要的依赖包
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置 Docker 稳定版仓库
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新软件包索引
sudo apt-get update
# 安装 Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
2.2 Windows
- 访问 Docker 官方网站 下载 Docker Desktop for Windows。
- 安装下载的安装程序,按照提示完成安装。
2.3 macOS
- 访问 Docker 官方网站 下载 Docker Desktop for Mac。
- 安装下载的安装程序,按照提示完成安装。
3. Docker 基本命令
以下是一些常用的 Docker 命令,帮助你管理和操作容器和镜像:
3.1 获取 Docker 镜像
# 从 Docker Hub 获取官方的 Ubuntu 镜像
docker pull ubuntu
3.2 运行容器
# 在容器中运行一个简单的命令
docker run ubuntu echo "Hello, Docker!"
# 以交互模式启动一个 Ubuntu 容器
docker run -it ubuntu
3.3 查看容器
# 查看正在运行的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a
3.4 停止和删除容器
# 停止一个正在运行的容器
docker stop <容器ID>
# 删除一个已停止的容器
docker rm <容器ID>
3.5 查看镜像
# 查看本地所有的镜像
docker images
3.6 删除镜像
# 删除一个本地镜像
docker rmi <镜像ID>
4. 实际应用案例
4.1 使用 Docker 运行一个 Web 应用
假设你有一个简单的 Python Web 应用,使用 Flask 框架编写。我们可以通过以下步骤将这个应用容器化:
-
编写 Dockerfile
在项目根目录下创建一个
Dockerfile
文件,内容如下:# 使用官方的 Python 基础镜像 FROM python:3.8-slim # 设置工作目录 WORKDIR /app # 复制项目文件到容器中 COPY . /app # 安装依赖 RUN pip install -r requirements.txt # 暴露端口 EXPOSE 5000 # 运行应用 CMD ["python", "app.py"]
-
构建镜像
在项目根目录下执行以下命令,构建 Docker 镜像:
docker build -t my-flask-app .
-
运行容器
使用以下命令启动容器,并将容器的 5000 端口映射到主机的 5000 端口:
docker run -d -p 5000:5000 my-flask-app
-
访问应用
打开浏览器,访问
http://localhost:5000
,你应该能看到你的 Flask 应用。
5. 最佳实践
5.1 使用 Docker Compose
Docker Compose 是一个工具,用于定义和运行多容器 Docker 应用程序。通过一个 YAML 文件,你可以配置应用程序的服务。然后,使用一个命令,可以从配置中创建并启动所有服务。
-
编写
docker-compose.yml
文件version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
-
启动服务
docker-compose up
5.2 使用 Docker 网络
Docker 网络允许容器之间通过网络进行通信。你可以创建自定义网络,以便容器之间更安全地通信。
-
创建自定义网络
docker network create my-network
-
启动容器并连接到网络
docker run -d --name web --network my-network my-flask-app docker run -d --name redis --network my-network redis:alpine
6. 结论
Docker 是一个强大的工具,可以帮助开发者轻松地打包、部署和管理应用。通过本文的介绍,你已经了解了 Docker 的基本概念、安装方法、基本命令和实际应用案例。希望这些内容能帮助你在实际项目中更好地使用 Docker。
7. 参考资料
希望这篇文章对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言!
评论区