王培顺的博客&WangPeishun’s Blog

以下是一份详细的Docker使用手册目录及核心内容概要,涵盖从基础到进阶的实践指南,供您学习参考。


目录

  1. Docker 简介
  2. 安装与配置
  3. 核心概念
  4. 基础命令操作
  5. 镜像管理与Dockerfile
  6. 容器网络
  7. 数据持久化
  8. Docker Compose
  9. Docker Swarm 集群
  10. 安全与最佳实践
  11. 常见问题与调试

1. Docker 简介

  • 容器化技术:轻量级虚拟化,共享内核,隔离进程和资源。
  • Docker 优势

    • 快速部署
    • 环境一致性
    • 资源高效利用
    • 易于扩展
  • 核心组件

    • Docker Daemon(守护进程)
    • Docker Client(客户端)
    • Images(镜像)
    • Containers(容器)
    • Registry(镜像仓库,如Docker Hub)

2. 安装与配置

Ubuntu/CentOS 安装

# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 安装Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 验证安装
sudo docker run hello-world

Windows/macOS

配置镜像加速器(国内用户)

// 编辑 /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com", "https://mirror.ccs.tencentyun.com"]
}

重启服务:sudo systemctl restart docker


3. 核心概念

  • 镜像 (Image):只读模板,包含运行环境和应用程序。
  • 容器 (Container):镜像的运行实例,具有可写层。
  • 仓库 (Registry):存储和分发镜像的服务(如Docker Hub、阿里云镜像仓库)。

4. 基础命令操作

镜像管理

docker pull ubuntu:20.04        # 拉取镜像
docker images                   # 查看本地镜像
docker rmi <image_id>           # 删除镜像

容器操作

docker run -d -p 80:80 --name mynginx nginx   # 后台运行容器并映射端口
docker ps -a                                  # 查看所有容器
docker start/stop/restart <container_id>      # 启停容器
docker exec -it <container_id> /bin/bash      # 进入容器终端
docker logs <container_id>                    # 查看日志
docker rm <container_id>                      # 删除容器

5. 镜像管理与Dockerfile

Dockerfile 示例

FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

构建镜像

docker build -t myapp:v1 .

推送镜像到仓库

docker tag myapp:v1 username/myapp:v1
docker push username/myapp:v1

6. 容器网络

  • 网络模式bridge(默认)、hostnone、自定义网络。
  • 创建自定义网络

    docker network create my_network
    docker run --network=my_network --name app1 myapp

7. 数据持久化

Volume 数据卷

docker volume create my_volume
docker run -v my_volume:/data --name db mysql

Bind Mount 目录挂载

docker run -v /host/path:/container/path nginx

8. Docker Compose

docker-compose.yml 示例

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

常用命令

docker-compose up -d    # 启动服务
docker-compose down     # 停止并删除容器
docker-compose logs     # 查看日志

9. Docker Swarm 集群

docker swarm init --advertise-addr <MANAGER_IP>
docker service create --replicas 3 -p 80:80 --name web nginx
docker service scale web=5

10. 安全与最佳实践

  • 最小化镜像:使用Alpine基础镜像,多阶段构建。
  • 非root用户运行容器

    RUN useradd -m myuser
    USER myuser
  • 定期更新镜像:修复安全漏洞。
  • 限制资源

    docker run -m 512m --cpus 1.5 myapp

11. 常见问题

容器无法启动

docker inspect <container_id>   # 查看详细配置
docker logs <container_id>      # 检查日志

清理无用资源

docker system prune -a          # 删除停止的容器、未使用的镜像和网络

附录


标签: none

添加新评论