Docker 基础入门
引言
Docker 是一个开源的容器化平台,它能够将应用及其所有依赖包在容器中进行打包,使其可以在任何地方运行,保证开发环境的一致性。无论是在本地开发环境、测试环境,还是在生产环境中,Docker 都能提供高效的解决方案。
这篇文章将从 Docker 的基础知识入手,逐步介绍各种操作,帮助你掌握从入门到进阶的 Docker 使用技巧。
1. Docker 基础知识
1.1 什么是容器和镜像?
- 容器 (Container):容器是轻量级、可执行的独立软件包,它将应用程序及其所有依赖打包到一起。容器提供了一种虚拟化方式,但比虚拟机更高效。
- 镜像 (Image):镜像是一个只读的模板,用于创建容器。镜像是从 Dockerfile 构建而来,可以包含操作系统、运行时环境、库、应用程序等内容。
1.2 Docker 的核心组件
- Docker Daemon:后台进程,负责管理容器生命周期、镜像管理、网络管理等。
- Docker CLI:命令行工具,用于与 Docker Daemon 进行交互。
- Docker Hub:官方的镜像仓库,允许用户拉取、上传镜像。
2. 安装 Docker
2.1 安装 Docker 在 Linux 上
对于 Ubuntu 用户,执行以下命令:
# 更新包管理器
sudo apt-get update
# 安装依赖包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加 Docker 仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 安装 Docker
sudo apt-get update
sudo apt-get install docker-ce
# 启动 Docker 服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
安装完成后,执行以下命令来验证安装是否成功:
docker --version
2.2 安装 Docker 在 macOS 上
- 下载并安装 Docker Desktop for Mac:Docker 官网
- 安装完成后,启动 Docker Desktop。
2.3 安装 Docker 在 Windows 上
- 下载并安装 Docker Desktop for Windows:Docker 官网
- 启动 Docker Desktop,并确保启用了 Hyper-V。
3. Docker 常见命令
3.1 查看 Docker 版本
docker --version
3.2 获取 Docker 镜像
使用 docker pull
命令从 Docker Hub 下载镜像。
docker pull ubuntu:latest
3.3 查看本地镜像
docker images
3.4 启动容器
从镜像创建并启动容器:
docker run -it ubuntu:latest
-it
参数表示交互模式启动容器,进入容器的终端。
3.5 查看正在运行的容器
docker ps
3.6 停止容器
docker stop <container_id>
3.7 删除容器
docker rm <container_id>
3.8 删除镜像
docker rmi <image_id>
3.9 查看容器日志
docker logs <container_id>
4. Dockerfile 入门
Dockerfile 是一个包含指令的文本文件,用于定义镜像的构建过程。
4.1 创建一个简单的 Dockerfile
# 使用官方的 Ubuntu 镜像作为基础镜像
FROM ubuntu:latest
# 设置作者标签
LABEL maintainer="your_email@example.com"
# 安装必需的软件包
RUN apt-get update && apt-get install -y python3 python3-pip
# 将当前目录下的文件复制到容器内
COPY . /app
# 设置容器启动时执行的命令
CMD ["python3", "/app/app.py"]
4.2 构建镜像
使用 docker build
命令从 Dockerfile 构建镜像。
docker build -t my-python-app .
4.3 运行容器
通过构建的镜像启动容器:
docker run -it my-python-app
5. Docker 网络
Docker 提供了多种网络模式,使得容器可以相互通信或与外界通信。
5.1 查看网络
docker network ls
5.2 创建自定义网络
docker network create --driver bridge my_network
5.3 启动容器并连接到自定义网络
docker run -it --network my_network ubuntu:latest
6. Docker Compose 入门
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。它通过一个 docker-compose.yml
文件来配置应用中的多个容器。
6.1 创建 docker-compose.yml
文件
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
6.2 启动 Compose 服务
docker-compose up
6.3 停止 Compose 服务
docker-compose down
7. Docker 镜像优化
7.1 镜像优化技巧
- 减少镜像层数:尽量合并
RUN
指令,减少镜像层数。 - 清理缓存:使用
apt-get clean
和rm -rf /var/lib/apt/lists/*
清理缓存。
例如:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3 python3-pip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
8. Docker 进阶操作
8.1 多阶段构建
多阶段构建使得你可以在一个 Dockerfile 中使用多个 FROM
指令来减少最终镜像的大小。
# 第一阶段:构建阶段
FROM node:16 AS build
WORKDIR /app
COPY . .
RUN npm install
# 第二阶段:生产阶段
FROM nginx:latest
COPY --from=build /app/dist /usr/share/nginx/html
8.2 数据持久化
Docker 容器本身是短暂的,若容器内的数据丢失,我们可以使用 数据卷 (Volumes) 来持久化数据。
docker volume create my_data
docker run -v my_data:/data ubuntu
8.3 Docker 安全
- 使用 非 root 用户 运行容器。
- 配置 资源限制(如 CPU 和内存限制)。
- 使用 Docker 的 安全扫描工具(如 Docker Bench for Security)。
总结
从入门到进阶,Docker 是一个功能强大的工具,它能够大大提升应用的可移植性和开发效率。在本教程中,我们从基础的 Docker 命令、Dockerfile 编写,到 Docker Compose、网络配置、镜像优化等高级话题,都进行了详细讲解。
掌握 Docker 后,你将能够更加高效地开发、部署、管理应用,并在各种环境中保持一致性。
希望这篇博客对你理解 Docker 的基本操作及进阶技巧有所帮助!