简介
Docker 是一个强大的容器化平台,它彻底改变了开发者和 IT 专业人员管理和部署应用程序的方式。在本教程中,我们将指导你完成在 Linux 系统上创建 Docker 容器的过程,从安装和配置 Docker 到构建和运行你自己的自定义容器。
理解 Docker 容器
Docker 是一个广受欢迎的开源平台,它使开发者能够在容器化环境中构建、部署和运行应用程序。容器是轻量级、独立且可执行的软件包,其中包含运行应用程序所需的一切,包括代码、运行时环境、系统工具和库。
什么是 Docker 容器?
Docker 容器是一种标准化的软件单元,它将代码及其所有依赖项打包在一起,这样应用程序就能在不同的计算环境中快速且可靠地运行。容器由 Docker 镜像创建而来,而 Docker 镜像是创建容器的蓝图。Docker 容器相互隔离,并且与主机操作系统隔离,从而提供一个一致且可预测的运行时环境。
Docker 容器的优点
- 可移植性:无论底层基础设施或操作系统如何,安装了 Docker 的任何机器上都可以运行 Docker 容器。
- 一致性:Docker 容器确保应用程序在任何环境下都以相同的方式运行。
- 高效性:Docker 容器是轻量级的,并且由于它们共享主机操作系统的内核,因此比虚拟机使用的资源更少。
- 可扩展性:Docker 容器可以轻松地进行扩展或缩减,从而更易于管理和部署应用程序。
- 隔离性:Docker 容器相互隔离,并且与主机操作系统隔离,从而提高了安全性和稳定性。
Docker 容器架构
graph TD
A[Docker 主机] --> B[Docker 引擎]
B --> C[Docker 镜像]
B --> D[Docker 容器]
D --> E[应用程序]
D --> F[库]
D --> G[系统工具]
Docker 容器生命周期
- 构建:从 Dockerfile 创建一个 Docker 镜像。
- 分发:将 Docker 镜像存储在一个镜像仓库中,例如 Docker Hub。
- 运行:从该镜像创建并运行一个 Docker 容器。
Docker 容器的用例
- 微服务:Docker 容器非常适合构建和部署基于微服务的应用程序。
- 持续集成与部署:Docker 容器可用于自动化应用程序的构建、测试和部署。
- 云托管:Docker 容器可以轻松地在云平台(如 AWS、Azure 和 Google Cloud)上进行部署和扩展。
- 机器学习和数据科学:Docker 容器可用于打包和部署机器学习模型以及数据处理管道。
在 Linux 上安装和配置 Docker
在 Ubuntu 22.04 上安装 Docker
- 更新软件包索引:
sudo apt-get update
- 安装必要的软件包,以便
apt可以通过 HTTPS 使用软件仓库:
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- 添加官方 Docker GPG 密钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 设置 Docker 软件仓库:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker 引擎、containerd 和 Docker Compose:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
配置 Docker
- 验证 Docker 安装:
sudo docker run hello-world
- 将你的用户添加到 Docker 组,以便无需使用
sudo即可运行 Docker 命令:
sudo usermod -aG docker $USER
- 配置 Docker 在系统启动时自动启动:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
- (可选)配置 Docker 使用不同的存储驱动:
sudo vi /etc/docker/daemon.json
添加以下配置并保存文件:
{
"storage-driver": "overlay2"
}
- 重启 Docker 服务:
sudo systemctl restart docker
Docker Compose 安装
- 下载最新版本的 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 使二进制文件可执行:
sudo chmod +x /usr/local/bin/docker-compose
- 验证 Docker Compose 安装:
docker-compose --version
构建和运行 Docker 容器
构建 Docker 镜像
- 为你的项目创建一个新目录:
mkdir my-docker-project
cd my-docker-project
- 在项目目录中创建一个
Dockerfile:
touch Dockerfile
- 打开
Dockerfile并添加以下内容:
## 使用官方 Ubuntu 22.04 镜像作为基础
FROM ubuntu:22.04
## 更新软件包索引并安装必要的软件包
RUN apt-get update && apt-get install -y \
nginx \
curl \
&& rm -rf /var/lib/apt/lists/*
## 复制默认的 Nginx 配置文件
COPY default.conf /etc/nginx/conf.d/
## 为 Nginx 暴露端口 80
EXPOSE 80
## 容器启动时启动 Nginx
CMD ["nginx", "-g", "daemon off;"]
- 创建一个默认的 Nginx 配置文件
default.conf:
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
- 构建 Docker 镜像:
docker build -t my-nginx-app.
运行 Docker 容器
- 运行 Docker 容器:
docker run -d --name my-nginx-app -p 80:80 my-nginx-app
- 验证容器是否正在运行:
docker ps
- 访问容器中运行的 Nginx 网络服务器:
curl http://localhost
管理 Docker 容器
- 停止正在运行的容器:
docker stop my-nginx-app
- 启动已停止的容器:
docker start my-nginx-app
- 删除容器:
docker rm my-nginx-app
- 删除 Docker 镜像:
docker rmi my-nginx-app
Docker Compose
- 创建一个
docker-compose.yml文件:
version: '3'
services:
web:
build:.
ports:
- "80:80"
- 构建并运行 Docker Compose 应用程序:
docker-compose up -d
- 停止并删除 Docker Compose 应用程序:
docker-compose down
总结
在本教程结束时,你将对 Docker 及其功能有扎实的理解,同时掌握在 Linux 系统上创建、管理和运行 Docker 容器的实践技能。这些知识将使你能够简化应用程序部署、提高可扩展性并优化整个 DevOps 工作流程。



