一、Docker低层是如何工作的
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socker连接从客户端访问,守护进程从客户端接命令并管理运行在主机上的容器,容器是一个运行时环境。
docker有着比虚拟机更少的抽象层,由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此cpu、内存利用率上Docker将会在效率上有明显优势。
docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要与虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,返个新建过程是分钟级别的。而Docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。
二、Docker常用命令
-
帮助命令
-
docker version:版本信息
-
docker info:详细信息描述
-
docker --help:命令帮助
-
-
镜像命令
-
docker images:列出本地主机上的镜像
-
REPOSITORY:表示镜像的仓库源
-
TAG:镜像标签
-
IMAGE ID:镜像ID
-
CREATED:镜像创建时间
-
SIZE:镜像大小
-
同一个仓库员可以有多个TAG,表示这个仓库源的不同个版本,我们使用REPOSITOR:TAG来定义不同的镜像。如果不指定一个镜像的版本标签,例如只有用ubuntu,docker将默认使用ubuntu:lates镜像。
-
OPTIONS说明:
-
-a:列出本地所有的镜像(喊中间映像层)
-
-q:只显示镜像ID
-
--digests:只显示镜像的摘要信息
-
--no-trunc:显示完整的镜像信息
-
-
docker search [OPTIONS] 镜像名:去dockerhub查找镜像
-
OPTIONS说明:
-
--no-trunc:显示完整的镜像描述
-
-s:列出收藏数不小于指定值的镜像
-
--automated:只列出automated build类型的镜像
-
-
-
docker pull 镜像名:下载镜像
-
docker rmi [OPTIONS] 镜像ID:删除镜像
-
OPTIONS:
-
docker rmi -f 镜像ID:删除单个镜像
-
docker rmi -f 镜像ID,镜像ID:删除多个镜像
-
docker rmi -f {docker images -qa}:删除所有镜像
-
-
-
-
容器命令
-
docker run [OPTIONS] 镜像名 [COMMAND][ARG...]:新建并启动容器
-
OPTIONS:
-
--name="容器新名字":为容器指定一个名称
-
-d:后台运行容器,并返回容器ID,也即启动守护式容器;
-
-i:以交互模式运行容器,通常与-t同时使用;
-
-t:为容器重新分配一个伪输入终端
-
-P:随机端口映射
-
-p:指定端口映射,有一下四种格式
-
ip:hostPort:containerPort
-
ip::containerPort
-
hostPort:containerPort
-
containerPort
-
-
-
-
docker ps [OPTIONS]:列出当前系统上运行的容器
-
OPTIONS:
-
-a:列出当前所有正在运行的容器+历史上运行过的容器
-
-l:显示最近创建的容器
-
-n:显示最近n个创建的容器
-
-q:静默模式,只显示容器编码
-
-no-trunc:不截断输出
-
-
-
exit:容器停止退出
-
ctrl+P+Q容器不停止退出
-
-
docker start 容器名或者容器id:启动容器
-
docker restart 容器名或者容器id:重启容器
-
docker stop 容器名或者容器id:停止容器
-
docker kill 容器名或者容器id:强制停止容器
-
docker rm 容器id:删除已停止的容器
-
一次性删除多个容器
-
docker rm -f ${docker ps -a -q}
-
docker ps -a -q|xargs docker rm
-
-
-
docker logs -f -t --tail:查看容器日志
-
-t是加入时间戳
-
-f跟随最新的日志打印
-
--tail数字 显示最后的多少条
-
-
docker top 容器id:查看容器内运行的进程
-
docker inspect 容器id:查看容器内部细节
-
docker attach 容器id:进入一个未关闭的容器
-
docker exec -t 容器id 执行的命令:在容器外直接执行容器命令
-
docker cp 容器id:容器内路径 目的主机路径:从容器内拷贝文件到主机上
-
使用docker run -d centos会发现程序后立马就结束了,很重要的一点:Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(如运行top,tail),就会自动退出。
三、总结