docker的定义
docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的镜像中, 然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。
容器是完全使用沙盒机制,相互之间不会有任何接口。
沙盒机制
沙盒机制,又称之为沙盒,是一种计算机安全领域中的技术,用于为运行中的程序提供隔离的环境。这种机制主要通过进程隔离、资源隔离、数据隔离方式实现。
沙盒机制广泛应用于操作系统、浏览器,移动应用等场景。宗旨在于提高安全性和稳定性。在移动设备中,每个应用都有属于自己的沙盒机制,访问自己的存储空间,有助于保护应用面授其他应用程序的干扰。在计算机中,沙盒机制用于测试可能带有恶意代码的程序。因为在沙盒中即使有恶意行为,也不会对其他系统造成实际性的破坏。
进程隔离
通过创建独立的进程来运行应用,进程之间相互独立,有自己的内存空间和资源,从而保证程序的异常不会对其他线程或系统产生影响。
权限控制
通过权限控制来限制应用程序对资源的访问。例如通过访问控制列表或者用户权限来限制程序对文件系统的访问,防止数据泄露或破坏。
资源隔离
资源隔离对应用程序的资源使用进行限制。例如CPU的使用率和内存使用量。以防止摸个程序占用资源过多导致其他资源运行缓慢
docker容器和虚拟机的区别
相同:docker容器和虚拟机都采用了虚拟的技术
不同:docker对于虚拟机来说少了操作系统层,少使用资源所以效率提高。
docker框架
docker框架分为三大部分
1.docker客户端
用于执行命令,客户端接收到命令会将命令发给docker主机,由主机执行这个命令,同时会将docker的一些信息展示给用户。
2.docker主机
执行docker命令的,接收到docker客户端的命令,执行这个命令,这个过程是隐藏的,不会暴露给用户。
3.远程仓库
提供了丰富的镜像,有丰富的资源供开发者下载。
两个关键词
1、镜像
远程仓库中提供的都是镜像,镜像是启动容器必须的。【相当于面向对象中的类概念】。
2、容器
docker中真正运行的软件被称为容器,【相当于面向对象中的对象概念】。
docker的特性及优点
特点:
隔离,文件隔离、系统隔离、资源隔离、网络隔离、日志隔离等。每个容器都完全独立运行在一个沙盒中,所有数据、资源都是隔离的,比如,CPU、内存等等,网络上会为每个容器虚拟一个ip地址,docker为每个容器都提供自己的日志,互不影响。
优点:
它的虚拟化做的比虚拟机要好,更节省资源。可以跨平台,不需要担心操作系统的影响,另外docker的应用也很广泛,各大公司都有应用。
缺点:
docker对程序是友好的,但是不善于处理文件和数据,一般情况会将文件或数据以路径映射的方式挂载到容器外。
docker的常用操作
1.查看本地镜像:
docker images
2.查找指定镜像:
到官网去查:https://hub.docker.com/
用命令去查:docker search 镜像名称
3.拉取镜像:
docker pull 镜像名:版本号
4.查看容器
查看正在运行的容器:docker ps
查看所有启动器,包括未运行的 docker ps -a
CONTAINER_ID:容器的唯一标识
IMAGE:容器对应的镜像
COMMAND:容器启动执行的命令
CREATED:创建容器的时间
STATUS:容器的当前状态
PORT:容器的端口号
NAMES:容器的名字,自定义。名字不允许重复,无论容器的状态是运行还是停止。名字也是唯一的,操作容器时可以用container_id也可以用名字。
5.移除容器
docker rm 容器id或名字
docker rmi 镜像id或名字:[标签]
6.启动/创建容器
docker run 自定义个名字 镜像名字或id:标签
docker run tomcat8 tomcat:8.0
tomcat启动还要添加其他指令,以保证可以正常访问到tomcat,并且不用占用控制点,在后台运行
docker run -p 8090:8080 -d --name tomcat8-90 tomcat:8.0
7.启动Tomcat容器
启动:docker start 容器名称或id
停止:docker stop 容器名称或id
重启:docker stop 容器名称或id
start和run的区别
run是在第一次启动时执行,准确来说是创建一个容器
start是启动已经存在的容器
start不需要想run一样写多个参数及配置,会自动按照run时的配置和命令启动
8.进入容器
进入容器内部:docker exec -it 容器名称或id /bin/bash
9.退出容器
退出容器可以用ctrl+d,也可以执行exit命令
docker logs 容器名字或id -f -n 数字
-f:日志持续输出,会时时输出产生的日志
-n:输出倒数X条日志