why
为什么要用 docker
为了让一台机器服务足够多的开发者/项目,环境的复用性,开始是使用沙箱(语言沙箱),隔离开发者的运行目录
系统沙箱 两种方案 虚拟机方案,docker 方案(容器方案) 两者对物理机消耗不同 虚拟机方案是每个虚拟机都要有独立的 OS docker 是 在OS 上 跑 docker 引擎,引擎上跑所有不同容器
what docker 是什么,有哪些功能 how 如何在实际业务中使用 docker
宿主机 沙箱 docker 引擎 镜像 容器
docker 利用 linux 三个功能
Namespaces 隔离进程
cgroup 隔离 cpu 内存磁盘 网络 id
Unionfs 联合文件系统
(docker 把各文件系统中相同的部分搞成只读,省空间)
只读层叫镜像,可写层叫容器
拉取镜像,创建容器,运行命令
三类命令
容器
docker run 创建容器 docker run –rm 退出时候删除 docker run –name php
docker ps 列表(正在运行的 -a 运行过的) docker start/stop docker rm 删除 docker rename 改名 docker cp 复制 docker exec 运行完就退出 docker commit 从容器创建新镜像 (配置持久化) docker build 读取文件,dockerfile docker container prune 删除不使用容器 docker rm 6568af2e2c06 移除指定 id 容器
镜像
docker images 镜像列表 docker rmi 删除特殊镜像 docker image prune 删除不使用镜像 docker image prune -a 删除未引用镜像 docker pull/push 镜像传输 docker tag 镜像标签
信息和状态
docker –help
docker container –help docker version docker stats docker logs docker top 容器进程 docker inspect docker diff 文件变动 docker port 端口映射
数据卷管理
docker volume create
容器运行完就会退出,除非是持久化的,比如 webserver
创建镜像
- docker commit 从容器创建新镜像
- docker build 读取 dockerfile 构建新镜像
第一行基础镜像,后续命令依次执行,每执行一行创建一个新的镜像层,镜像层叠加起来构成整个完整镜像
根据需要判断我们需要把应用放到镜像里还是容器里
要对操作系统熟悉,才知道每种系统能用什么 shell 命令
多容器
为什么要用多容器
多容器的问题:互访问题,顺序依赖
工具 :docker-compose