Docker
2026.10.26(周一) 第一天
概述
- Docker:开源应用容器引擎
- 2013年初,基于 Go 语言
- 打包应用+依赖包为容器
- 沙箱机制,完全隔离
- 性能开销极低
- 解决软件跨环境迁移问题
核心概念
- 镜像:类似操作系统镜像/Java类
- 容器:镜像运行时的实体,类似Java对象
- 仓库:保存镜像
- hub.docker.com
服务管理
systemctl start/stop/restart/status/enable docker
启动/停止/重启/查看状态/开机自启docker
镜像命令
docker images查看镜像
docker search 镜像名 搜索镜像
docker pull 镜像名:版本号 拉取镜像
docker rmi 镜像ID 删除镜像
docker rmi $(docker images -q)
容器命令
- 查看/创建/进入/启动/停止/删除/查看容器
- 创建运行:docker run -it --name 容器名 镜像名:版本号 /bin/bash
- 退出:exit
- 查看运行:docker ps
- 查看所有:docker ps -a
- 进入:docker exec -it 容器名 /bin/bash
- 启动:docker start 容器名
- 停止:docker stop 容器名
- 删除:docker rm 容器名(运行中不可直接删)
- 删除所有:docker rm -f $(docker ps -aq)
- 查看信息:docker inspect 容器名
参数说明
- -i:保持容器运行,常和 -t 用;加 -it 后创建后进入,退出容器自动关闭
- -t:分配伪终端,常和 -i 用
- -d:后台/守护模式运行,需 docker exec 进入,退出不关闭
- -it 创建:交互式容器;-id 创建:守护式容器
- --name:为容器命名
数据卷
- 宿主机中的一个目录或文件
- 容器目录和数据卷绑定后,双方修改立即同步
- 一个数据卷可被多个容器同时挂载
- 一个容器可同时挂载多个数据卷
- 作用:持久化、外部机器与容器交换通信、容器间数据交换
- 用法:docker run ... -v 宿主机目录:容器内目录 ...
- 注意:绝对路径;不存在会自动创建;可挂多个
- 数据卷容器:
docker run -it --name c3 -v /volume 镜像名 /bin/bash
docker run -it --name c1 --volumes-from c3 镜像名 /bin/bash
docker run -it --name c2 --volumes-from c3 镜像名 /bin/bash
MySQL 部署
mkdir ~/mysql
cd ~/mysql
docker run -id
-p 3307:3306
--name c_mysql
-v $PWD/conf:/etc/mysql/conf.d
-v $PWD/logs:/logs
-v $PWD/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
mysql:5.6
MySQL 参数说明
- -p 3307:3306:容器3306映射到宿主机3307
- -v $PWD/conf:/etc/mysql/conf.d:配置目录挂载
- -v $PWD/logs:/logs:日志目录挂载
- -v $PWD/data:/var/lib/mysql:数据目录挂载
- -e MYSQL_ROOT_PASSWORD=123456:初始化root密码
补充
- MySQL 5.6 已停止维护,生产建议用 8.0
- 运行中的容器不能直接 rm,需先 stop 或 rm -f
- pull 用镜像名,rmi 用镜像ID,别写反
- -v 宿主机路径必须是绝对路径
- -it 退出即停,-id 后台常驻