Docker 核心概念

Docker 是什么?

  • 轻量级容器化平台,允许打包应用及其依赖环境为一个可移植的容器。
  • 与虚拟机的区别:容器共享主机内核,无需完整操作系统,启动更快、资源占用更少。

核心组件

  • 镜像(Image):只读模板,包含应用代码、运行环境和配置(如 nginx:latest)。
  • 容器(Container):镜像的运行实例,具有独立文件系统和网络。
  • 仓库(Registry):存储镜像的平台(如 Docker Hub、私有仓库)。

安装与配置

  • 安装docker

    支持系统:Linux/Windows/macOS
    去安装

    命令示例(Ubuntu):

sudo apt-get update && sudo apt-get install docker-ce
  • 配置镜像加速器

    修改 /etc/docker/daemon.json,添加国内镜像源(如阿里云)。

{
  "registry-mirrors": ["https://reg-mirror.qiniu.com"],
}

基础操作命令

命令作用示例
docker pull <镜像名>下载镜像docker pull ubuntu:20.04
docker run <选项> <镜像>创建并启动容器docker run -d --name 容器名称 -p 80:80 nginx
docker ps查看运行中的容器docker ps -a(显示所有容器)
docker exec -it <容器ID> bash进入容器终端docker exec -it myapp bin/bash
docker stop <容器ID>停止容器docker stop 1a2b3c4d
docker rm <容器ID>删除容器docker rm 1a2b3c4d
docker rmi <镜像名>删除镜像docker rmi nginx:latest

镜像与容器管理

镜像操作

  • 构建镜像:通过 Dockerfile 创建自定义镜像。
docker build -t myapp:1.0 .
  • 导出/导入镜像:
docker save myapp:1.0 > myapp.tar
docker load < myapp.tar

容器生命周期

  • 创建 → 启动 → 停止 → 删除。
  • 数据持久化:使用卷(Volume)或绑定挂载(Bind Mount)。
docker run -v /data:/app/data myapp
docker run -d --name streamlit -v 本地文件路径:/var/www/html -p 8502:8501 streamlit-app

Dockerfile 最佳实践

关键指令

FROM ubuntu:20.04         # 基础镜像
WORKDIR /var/www/html     # 设置工作目录
COPY . .                  # 复制文件
RUN apt-get update && \   # 执行命令(安装依赖)
    apt-get install -y python3
EXPOSE 80                 # 声明端口(可以执行时声明)
CMD ["python3", "app.py"] # 启动命令(可以不定义)

优化技巧

  • 合并多层 RUN 命令减少镜像层数。(因方便而定)
  • 使用 .dockerignore 忽略无用文件。

数据与网络管理

数据卷(Volume)

  • 持久化存储容器数据,独立于容器生命周期。
docker volume create my_volume
docker run -v my_volume:/data mysql

网络模式

  • bridge(默认):容器通过虚拟网桥通信。
  • host:容器直接使用主机网络。
  • 自定义网络:
docker network create my_network
docker run --network=my_network myapp

Docker Compose 多容器编排

编写 docker-compose.yml

version: '3'
services:
  web:
    image: nginx
    working_dir: /var/www/html/
    volumes:
      - ./:/var/www/html/
    ports:
      - 8082:80
    tty: true
    networks:
      - backend
networks:
  backend:
    driver: bridge
  frontend:
    driver: bridge

常用命令

docker-compose up -d    # 启动服务
docker-compose down     # 停止并删除容器

知识点总览图

本文由mdnice多平台发布


咆哮的机器猫
1 声望0 粉丝