Docker 是一个开源的容器化平台,用于开发、打包和分发应用程序。它允许将应用及其依赖环境打包成容器,从而实现跨平台的便捷部署。下面是一个简单的 Docker 使用教程,涵盖从安装到基本命令的使用。
1. 安装 Docker
Windows / MacOS
- 访问 Docker 官方网站:Docker Download。
- 下载并安装 Docker Desktop。
- 安装后启动 Docker Desktop,等待 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 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 服务
sudo systemctl start docker
# 设置 Docker 开机自启动
sudo systemctl enable docker
安装完成后,验证安装是否成功:
docker --version
2. 常用 Docker 命令
2.1 Docker 容器管理
-
查看已安装的镜像
docker images
-
拉取镜像
docker pull <image-name>
示例:
docker pull ubuntu:20.04
-
运行容器
docker run <image-name>
示例:
docker run ubuntu:20.04
-
以交互模式启动容器并进入 shell
docker run -it <image-name> /bin/bash
-
查看正在运行的容器
docker ps
-
查看所有容器(包括停止的)
docker ps -a
-
停止容器
docker stop <container-id>
-
删除容器
docker rm <container-id>
2.2 Docker 镜像管理
-
构建镜像
docker build -t <image-name> <path-to-dockerfile>
示例:
docker build -t myapp:latest .
-
删除镜像
docker rmi <image-id>
2.3 Docker 网络管理
-
查看 Docker 网络
docker network ls
-
创建一个新的网络
docker network create <network-name>
-
连接容器到网络
docker network connect <network-name> <container-id>
-
断开容器与网络的连接
docker network disconnect <network-name> <container-id>
2.4 Docker 数据管理
-
查看 Docker 卷
docker volume ls
-
创建 Docker 卷
docker volume create <volume-name>
-
删除 Docker 卷
docker volume rm <volume-name>
3. Dockerfile
Dockerfile 是一个文本文件,包含了一系列的指令,用于定义构建 Docker 镜像的过程。以下是一个简单的 Dockerfile 示例:
# 使用官方的 Python 3.8 镜像作为基础镜像
FROM python:3.8-slim
# 设置工作目录
WORKDIR /app
# 将当前目录下的文件复制到容器中的 /app 目录
COPY . /app
# 安装 Python 依赖
RUN pip install -r requirements.txt
# 暴露容器的 80 端口
EXPOSE 80
# 设置容器启动命令
CMD ["python", "app.py"]
3.1 构建镜像
使用以下命令构建 Docker 镜像:
docker build -t my-python-app .
3.2 运行容器
构建完成后,使用以下命令运行该镜像:
docker run -p 5000:80 my-python-app
这会将容器的端口 80 映射到本地机器的端口 5000。
4. Docker Compose
Docker Compose 是一个工具,用于定义和运行多容器 Docker 应用。通过 docker-compose.yml
文件可以方便地管理多个容器。
4.1 Docker Compose 文件示例
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
4.2 启动应用
使用以下命令启动 Compose 配置中的所有服务:
docker-compose up
4.3 停止应用
使用以下命令停止并删除容器:
docker-compose down
5. Docker 容器调试
-
查看容器的日志
docker logs <container-id>
-
进入正在运行的容器
docker exec -it <container-id> /bin/bash
-
监控容器的资源使用情况
docker stats
6. Docker 容器和镜像的安全性
-
限制容器资源
- 设置容器的 CPU 和内存限制:
docker run -it --memory="256m" --cpus="1.0" <image-name>
-
扫描镜像的安全漏洞
可以使用工具如 Trivy 或 Clair 来扫描 Docker 镜像中的安全漏洞。