Docker 执行 Docker Run [image] 的流程:
1、命令执行
2、Docker会在本机寻找镜像
3、判断本机是否有这个镜像:
1)有,使用这个镜像运行
2)没有,去DockerHub下载:(1)没有,返回错误(2)有,下载到本地
底层原理:
Docker是怎么工作的?
Docker 是一个Client&&Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问
DockerServer 接收到Docker-Client的指令,就会执行这个命令
Docker为什么比VM快?
1、Docker有着比虚拟机更少的抽象层
2、Docker利用的是宿主机的内核,vm需要的是Guest OS。
所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统的内核,避免引导。虚拟机是加载Guest OS,分钟级别的,而docker 是利用宿主机的操作系统,省略了这个复杂的过程,秒级!
Docker的常用命令:
帮助命令:
docker version //显示docker的版本信息
docker info //显示docker的系统信息,
docker --help //帮助命令
镜像命令:
docker images //查看所有镜像
//解释
REPORSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
//可选项
-a,--all //列出所有镜像
--digests show digests
-f,--filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q,--quiet Only show numberic IDs //只显示镜像的ID
docker search [镜像名] //搜索镜像命令
docker pull [镜像] //下载镜像
docker rmi -f [镜像ID] //根据镜像ID删除镜像
docker rmi -f [镜像ID] [镜像ID]...//删除多个镜像
docker rmi -f $(docke images -aq) //删除所有镜像
容器命令:
说明:我们有了镜像才可以创建容器,linux,下载一个Centos镜像来测试学习
新建容器并启动
docker run [可选参数] image
//参数说明
--name="Name" 容器的名字 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常使用)
-p 容器端口
容器端口
ep:docker run -it --name="centos01" centos /bin/bash
exit //从容器中退出来主机
docker ps //查看正在运行的容器
-a //查看历史运行过的容器
-n=? //显示最近创建过的容器
-q //只显示容器的编号
退出容器:
exit //直接容器停止并退出
Ctrl + P + Q //容器不停止退出(快捷键)
删除容器
docker rm [容器ID] //删除指定的容器
docker rm -f $(docker ps -aq) //删除所有容器
docker ps -a -q|xargs docker rm //删除所有的容器
启动和停止容器的操作
docker start [容器ID] //启动容器
docker restart [容器ID] //重启容器
docker stop [容器ID] //停止容器
docker kill [容器ID] //强制停掉容器
常用启动命令:
docker run -d [镜像ID] //后台启动
//问题docker ps. 发现centos 停止了
//常见的坑:docker 容器使用后台运行,就必须要有要有一个前台进程,docker发现没有应用,就会自动停止
//nginx,容器启动后,发现自己没有提供服务,就会立刻停止,