一、Docker 是什么
Docker = 把应用 + 依赖 + 环境一起打包,放到一个轻量、隔离、可移植的容器里,在哪都能跑。
二、3 个核心概念
- 镜像(Image)
-
只读模板 - 相当于「安装包」「系统盘」
-
例:`nginx`、`centos`、`tomcat`
- 容器(Container)
-
镜像运行后的实例
-
相当于虚拟机里跑的系统
-
可启动、停止、删除
- 仓库(Registry)
-
存放镜像的地方
-
官方:Docker Hub
-
私有:Harbor
三、镜像最常用命令
docker images # 查看本地镜像
docker search 名字 # 搜索镜像
docker pull 名字:tag # 拉取镜像(不写tag默认latest)
docker rmi 镜像ID # 删除镜像
docker rmi -f 镜像ID # 强制删
四、容器最常用命令
- 查看容器
docker ps # 看运行中的
docker ps -a # 看所有(包括停止的)
- 创建并启动容器
docker run [选项] 镜像 [命令]
最常用选项:
- `-d` 后台运行 - `
-p 主机端口:容器端口` 端口映射
-
`--name` 给容器起名字
-
`-v 主机目录:容器目录` 挂载目录(持久化)
-
`-e` 设置环境变量
示例:docker run -d -p 80:80 --name mynginx nginx
- 进入容器
docker exec -it 容器ID /bin/bash
- 停止/启动/删除
docker stop 容器ID
docker start 容器ID
docker rm 容器ID # 删除已停止容器
docker rm -f 容器ID # 强制删
五、Docker 三大核心技术
-
namespace → 资源隔离(PID、网络、用户、文件等)
-
cgroups → 资源限制(CPU、内存、磁盘)
-
UnionFS → 镜像分层存储(镜像轻、快、复用)
六、镜像分层
-
镜像一层一层叠加
-
下层只读,上层可写
-
相同层可以共享,节省空间
七、Dockerfile 核心指令
dockerfile FROM # 基础镜像
MAINTAINER # 作者 RUN
构建时执行命令
COPY # 复制文件
ADD # 复制(支持解压/URL)
WORKDIR # 设置工作目录 EXPOSE
暴露端口 CMD # 容器启动命令(只有最后一个生效)
ENTRYPOINT # 启动命令(不会被覆盖)
八、容器数据持久化
容器删了数据就没了 → 必须用 -v 挂载
-v /主机目录:/容器内目录
九、Docker 网络
-
bridge:默认,独立网络,端口映射访问
-
host:和主机共享网络
-
none:无网络
十、Docker 与虚拟机区别
-
Docker 轻量、秒启动、共享内核
-
VM 重量级、启动慢、有独立OS
十一、一句话串起整个Docker
拉镜像 → 跑容器 → 进容器 → 改配置 → 挂载数据 → 建镜像 → 推仓库