目 录CONTENT

文章目录

docker基本知识

JamKing
2024-05-16 / 0 评论 / 1 点赞 / 8 阅读 / 0 字

一、Docker核心概念

概念 说明
镜像(Image) 只读模板,包含运行程序所需的所有文件(代码、环境、配置等)。镜像是容器的基础。
容器(Container) 镜像的运行实例,是轻量级的虚拟化环境。每个容器拥有独立进程空间、文件系统、网络等资源。
仓库(Repository) 存储镜像的集合,类似Git仓库。分为:•公共仓库:Docker Hub(官方)•私有仓库:企业自建
注册中心(Registry) 托管仓库的服务(如Docker Hub、Harbor)。

二、核心命令总结

镜像管理

命令 用途
docker pull nginx:alpine 拉取镜像
docker images 列出本地镜像
docker rmi <image_id> 删除镜像
docker build -t myapp:v1 . 构建镜像(基于Dockerfile)

容器管理

命令 用途
docker run -d -p 80:80 --name myweb nginx 启动容器(后台运行)
docker ps -a 查看所有容器(包含已停止的)
docker stop <container_id> 停止容器
docker start/restart <container_id> 启动/重启容器
docker rm -f <container_id> 强制删除容器
docker exec -it <container_id> sh 进入容器终端
docker logs <container_id> 查看容器日志

网络与数据卷

命令 用途
docker network create mynet 创建自定义网络
docker volume create mydata 创建数据卷
docker run -v /host/path:/data ... 挂载主机目录到容器

三、Dockerfile核心指令

Dockerfile 是构建镜像的脚本文件,常用指令如下:

指令 作用 示例
FROM 指定基础镜像 FROM python:3.9-slim
RUN 执行命令(安装依赖等) RUN apt update && apt install -y curl
COPY 复制文件(主机→镜像) COPY ./app /usr/src/app
ADD 类似COPY,支持URL和自动解压 ADD app.tar.gz /data
WORKDIR 设置工作目录 WORKDIR /app
EXPOSE 声明容器运行时监听的端口 EXPOSE 8080
ENV 设置环境变量 ENV DB_HOST=db
CMD 容器启动时的默认命令(可被覆盖) CMD ["python", "app.py"]
ENTRYPOINT 容器入口命令(不可覆盖) ENTRYPOINT ["/entrypoint.sh"]

最佳实践

  • 多阶段构建:减少镜像大小(如编译环境→运行环境分离)
  • 合并 RUN指令:减少镜像层数
  • 使用 .dockerignore:排除不需要的文件

四、Docker Compose

用于管理多容器应用,通过 docker-compose.yml文件配置服务。

核心概念

概念 说明
服务(Service) 一个容器(如Web服务、数据库)
项目(Project) 一组关联服务(默认使用当前目录名作为项目名)

常用命令

命令 用途
docker-compose up -d 启动所有服务(后台运行)
docker-compose down 停止并删除所有容器
docker-compose ps 查看项目中的容器状态
docker-compose logs -f web 跟踪Web服务的日志

示例docker-compose.yml

yaml下载复制version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db

  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: password

核心字段说明

  • volumes:挂载数据卷或主机目录
  • ports:端口映射(主机端口:容器端口)
  • depends_on:依赖顺序(不等待服务就绪,仅控制启动顺序)
  • environment:设置环境变量
  • networks:自定义网络

五、其他关键知识

  1. 数据持久化
    • Bind Mounts:直接挂载主机目录(开发环境常用)
    • Volumes:Docker管理的持久化存储(生产环境推荐)
  2. 网络模式
    • bridge:默认桥接网络(容器间通过IP通信)
    • host:共享主机网络(无隔离)
    • overlay:跨主机容器通信(Swarm集群)
  3. 安全实践
    • 非root用户运行容器(USER指令)
    • 定期更新基础镜像修复漏洞
    • 避免使用 --privileged特权模式
  4. 容器编排进阶
    • Kubernetes:生产级容器编排(替代Docker Swarm)
    • Helm:K8s应用包管理工具

六、学习路径建议

  1. 基础操作:镜像/容器管理 → Dockerfile → Docker Compose
  2. 生产实践:多阶段构建 → 容器日志管理 → 监控(cAdvisor)
  3. 进阶方向:镜像安全扫描(Trivy)→ CI/CD集成 → Kubernetes

提示:学习时推荐使用 --help(如 docker run --help)查看命令详细说明,或用 docker stats 实时监控资源占用。

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区