docker模块

  • 容器:容器是利用namespace将文件系统、进程、网络、设备等资源进行隔离,利用cgroup对权限、cpu资源进行限制,最终让容器之间互不影响,容器无法影响宿主机。
    1、命名空间是一种隔离资源的方法,它将一组系统资源的视图从一个进程中隔离出来,使得该进程以及其子进程拥有自己的独立资源集
    常见linux命令空间:PID Namespace、Network Namespace、Mount Namespace、UTS、Namespace、IPC Namespace、User Namespace
    2、control group技术
    控制容器中进程对系统资源的消耗
    是一种用于限制和隔离一个或一组进程对系统资源使用的机制,将一组进程组织在一个控制组中,为这个控制组分配特定的资源限制和优先级,确保容器在共享主机上合理利用系统资源,避免资源竞争和过度使用。
    CPU、Memory、BlockI/o、Network、Device
    通过将容器的进程放入适当的cgroup中,可以限制他们对各种系统资源的访问。这种限制和隔离使得容器可以在相对独立的环境中运行。
    3.容器的整体流程
    1、命名空间隔离
    2、Cgroup隔离
    4.docker的优势
    1、运行在容器内的程序,使用的是宿主机的硬件资源,效率高
    2、docker直接宿主机的系统内核,避免了虚拟机启动时的资源消耗,速度快
    3、启动时间快、高效部署和扩容 部署简单(可以让用户把一个应用程序从一个平台直接迁移到另一个平台)
    4、虚拟机安全性高,
    5、docker基本组成
    1、客户端
    2、服务器
    3、仓库:镜像的集合存储地
    镜像是由一层层的文件系统构建而成的,每一层文件系统都是前一层文件系统的增量变化。
    容器是镜像的实例,是一个独立的运行环境。
    6、docker运行流程
    Docker在本机寻找镜像->若本机存在这个镜像->使用此镜像运行;
    ->若本机不存在此镜像->去docker hub上下载 -> docker hub上可以找到,那就下载下来,去运行
    ->docker hub上找不到,返回错误
    7、docker常用命令
    1、帮助命令
    docker version
    docker info //显用于显示 docker 的系统级信息,比如内核,镜像数,容器数等
    docker 命令 --help //帮助命令
    2、镜像命令
    docker images //查看本地主机上的所有镜像
    docker search 镜像名 //搜索某个镜像,这是在docker hub上搜索,而非本地
    docker pull 镜像名 //下载镜像
    docker rmi 镜像名/镜像id //删除镜像
    docker tag 镜像id 命名容器 //为镜像id命名
    docker run mysql //新建容器并启动,注意这里有很多参数要使用
    docker run -d 镜像名 //后台启动容器,启动后,往往此时去docker ps一下,发现容器已经停止,因为docker容器使用后台进行,必须要有一个前台进程,docker发现没有应用,机会自动停止
    exit //从容器中退出到主机
    ctrl + P + Q //容器不停止退出(要在虚拟机里,远程不行)
    docker ps //查看所有正在运行的容器
    docker ps -a //查看当前正在运行的容器和历史中运行过的容器
    docker rm 容器id//删除容器,注意容器id和镜像id不是一回事,不允许删除正在运行的容器,强制删除-f
    docker start 容器id //启动容器
    docker restart 容器id //重启容器
    docker stop 容器id //停止当前正在运行的容器
    docker kill 容器id //强制停止当前容器
    docker logs -f -t --tail 容器id //查看日志
    docker top 容器id //查看容器中进程id,一个容器中可能有多个进程
    docker inspect 容器id //查查看 Docker 容器或镜像的详细元数据。该命令会返回一个 JSON 格式的对象,包含有关容器或镜像的所有详细信息。
    docker exec -it 容器id bashshell //我们通常运行容器都是在后台,需要修改才能进入容器内部
    docker save -o 输出名字 镜像名 //将镜像保存为一个归档文件,可以传输或备份
    docker load -i 指定输入的路径 //从规定那个文件中加载docker镜像
    docker build -t 镜像名 dockerfile的路径 //根据dockerfile创建docker镜像
    8、镜像是什么
    镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含了运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件
    9、Docker镜像加载原理
    UnionFS是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。
    Union文件是Docker镜像的基础。镜像可以通过分层来继承,基于基础镜像,可以制作各种具体的应用镜像。
    bootfs主要包含bootloade和kernel,bootloade的作用就是用来引导加载kernel。当boot加载完成后,整个内核就在内存中,内存的使用权有bootfs转交给内核,此时系统也会卸载bootfs。(类似于安装ubuntu的引导程序,安装后会被卸载掉)
    rootfs,在bootfs之上,包含的就是典型的linux系统中的/dev、/prov、/bin、/etc等标准目录和文件,rootfs就是各种不同的操作系统发行版,比如Ubuntu、Centos等;
    10、分层理解
    所有的docker镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层。
    Docker通过存储引擎(新版本使用快照机制)的方式实现镜像层堆栈,并保证多镜像层对外展示为统一的文件系统。
    Docker镜像都是只读的,当容器启动后,一个写的可写层被加载到镜像的顶部,这一层就是通常说的容器层,容器之下都是镜像层。当基于一个镜像启动多个容器时,这些容器使用相同的镜像层,但是每个容器都有自己的可写层。每个容器的更改都被记录在各自的可写层,所以隔离。
    11、什么是容器数据卷?
    数据卷挂载:通过创建volume虚拟目录,作为本地目录和容器目录的桥梁。
    -v 数据卷名:容器内目录
    会与容器内目录相关联,同时在本地创建docker/volumes/数据卷名/_data,使得虚拟目录和本地目录相关联。
    1、什么是数据卷?
    数据卷是一个目录,他将宿主机目录映射到容器内目录,方便操作数据;
    2、如何挂载数据卷?
    在创建容器时,通过**-v 数据卷名:容器内目录**完成挂载;
    当容器创建时,如果发现挂载的数据卷不存在,就会自动创建。
    12、docker的理念回顾
    数据都在容器中,如果我们将容器删除,那么数据也会丢失,那么就要数据持久化
    就是数据卷的挂载,利用数据卷实现宿主机和容器的双向映射。
    13、dockerfile
    dockerfile就是用来构建docker镜像的构建文件,脚本命令
    镜像是一层一层的,dockerfile中每个命令都是一层;
    1、构建docker镜像的步骤:
    第一、编写dockerfile文件
    第二、docker build构建成为一个镜像
    第三、docker run运行镜像
    第四、docker push发布镜像(dockerHub、阿里云镜像)
    2、dockfile文件编写
    每个指令都是大写字母,从上往下顺序执行 #是注释,每个指令都会创建提交一个新的镜像层,并提交
    在这里插入图片描述
    14、依赖库的安装
    /usr/local目录就是安装第三方软件的目录。
    1、absril:C++代码开源集合
    2、cmake:跨平台、开源构建系统生成器
    3、protobuf:序列化结构数据
    4、grpc:远程调用rpc框架。grpc可以使客户端和服务器应用程序能够透明的通信
    5、qt:实现界面展示
    cuteci
    6、ldconfig:动态链接库管理命令,作用:默认搜索库文件
    15、dockerfile编写
    1、非交互式的输入命令的设置
    2、xhost命令是X服务器的访问控制工具,用来控制那些X客户端能够在X服务器上显示

      xhost:在本地机器上设置,控制允许谁可以访问X server服务
      DISPLAY,在运行容器是设置容器,告诉容器将图像界面发送到哪里,是用来控制是连接到到本地Xserver的,还是使用TCP远程连接到远程X server的;
      思想就是,要想让容器将图像显示到本地机器:第一,设置本地机器允许docker访问X server;第二,设置容器将图形界面发送到哪里;
    

16、容器网络互联
docker在安装的时候,会默认创建一个docker0的“网卡”,在容器创建的过程中会为容器默认分配一个ip地址,因为在同一个网关下,所以通过这个ip地址 容器A能够 ping 容器B。默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上。
每个容器都有一个ip,和宿主机不同,Docker容器的ip是docker网络中分配的;

  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值