常用知识点问答

docker容器与虚拟机的区别?

docker容器                                                                

  • 所有容器共享宿主机的内核                                                
  • 通过namespace实现资源隔离,通过cgroup实现限制资源的最大使用量           
  • 秒级启动速度                                                           
  • 容器相当于宿主机的进程,性能几乎没有损耗                            
  • 一个宿主机可以启动成百上千个容器                                      

 虚拟机

  • 每个虚拟机都有独立的操作系统和内核
  •  完全隔离。每个虚拟机都有独立的硬件资源分配
  • 分钟级启动速度
  • 需要通过hypervisor虚拟机管理程序对宿主机资源虚拟访问,会有一定的性能损耗
  •  最多几十个虚拟机

Linux 六大 namespace

  • MNT(mount):文件系统隔离
  • NET(network):网络资源隔离
  • PID:进程的pid隔离
  • IPC:进程间通信隔离
  • UTS:主机名隔离
  • USER:用户隔离

镜像操作

  • docker search  关键字                             #根据仓库或镜像的关键字搜索镜像
  •        pull 仓库名/镜像名:标签                    #下载镜像,如果不指定标签则默认使用 :latest
  •        images [-q]                                        #查看镜像列表,-q 表示仅显示镜像ID
  •        inspect 镜像名或镜像ID                     #查看镜像的详细信息
  •        tag 旧镜像名:旧标签  新镜像名:新标签       #添加新的镜像名或标签
  •        rmi 镜像名或镜像ID [-f]                               #删除镜像
  •        save -o 镜像文件路径  镜像名或镜像ID       #将镜像导出为文件
  •        load -i 镜像文件路径                                    #将镜像文件导入docker
  •        load < 镜像文件路径
  •        login 仓库地址                                             #登录镜像仓库
  •        push 仓库名/镜像名:标签                            #上传镜像到仓库

容器操作

  • docker create [-i -t] [--name 容器名] 镜像名:标签 [容器启动命令]       #创建容器
  •        start 容器名或容器ID                                            #启动容器
  •        ps -a [-q]                                                      #查看容器列表
  •        inspect 容器名或容器ID                                          #查看容器的详细信息
  •        stop 容器名或容器ID [-t 等待时间]                               #停止容器,发送 SIGTERM 信号,默认等待10s
  •        kill 容器名或容器ID                                             #停止容器,默认发送 SIGKILL 信号
  •        rm 容器名或容器ID [-f]                                          #删除容器
  •        exec -it 容器名或容器ID  sh|bash                                #登录容器
  •        cp 宿主机文件路径  容器名或容器ID:绝对路径                      #复制宿主机文件到容器中
  •        cp 容器名或容器ID:绝对路径  宿主机文件路径                      #复制容器文件到宿主机中
  •        logs 容器名或容器ID                                             #查看容器中PID=1的主进程的日志
  •        
  • docker export 容器名或容器ID > 容器模板文件         docker export -o 容器模板文件 容器名或容器ID         #将容器导出成文件
  • docker import 容器模板文件 -- 镜像名:标签           cat 容器模板文件 | docker import - 镜像名:标签       #将容器模板文件导入成镜像

docker run

  •                 -d [-i -t] [--name 容器名] 镜像名:标签 [容器启动命令]          #创建并启动容器
  •                -P                                                         #使用随机的宿主机端口映射容器端口(从32768开始)
  •                -p 宿主机端口:容器端口                                     #使用指定的宿主机端口映射容器端口
  •                -v 宿主机绝对路径:容器绝对路径[:ro]                        #将宿主机的目录或文件挂载到容器的数据卷目录
  •                --volumes-from 数据卷容器名                                #共享数据卷容器的数据卷目录,实现容器与容器之间的数据共享
  •                --link 目标容器名:连接别名                                 #创建容器互联,实现在容器内通过目标容器名或连接别名与目标容器通信

docker run 的启动过程

  • 1)检查本地是否有指定镜像,如果有则直接使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器
  • 2)在只读的镜像层上再挂载一层可读可写的容器层
  • 3)从docker网桥给容器分配一个虚拟接口和IP地址
  • 4)使用镜像的默认启动命令或docker run 指定的命令来启动容器,直到容器中的PID=1的主进程退出为止

相关推荐

  1. 知识问答

    2024-07-16 22:00:04       21 阅读
  2. 知识问答

    2024-07-16 22:00:04       21 阅读
  3. docker排错及知识

    2024-07-16 22:00:04       47 阅读
  4. 知识-Linux】scp命令

    2024-07-16 22:00:04       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 22:00:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 22:00:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 22:00:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 22:00:04       69 阅读

热门阅读

  1. MongoDB 面试题及答案整理,最新面试题

    2024-07-16 22:00:04       18 阅读
  2. 记录一次Android推流、录像踩坑过程

    2024-07-16 22:00:04       19 阅读
  3. LINUX:懒汉单例模式线程池

    2024-07-16 22:00:04       19 阅读
  4. flask-login会话保持实现

    2024-07-16 22:00:04       23 阅读
  5. C调用C++接口

    2024-07-16 22:00:04       22 阅读
  6. 年轻人如何克服焦虑

    2024-07-16 22:00:04       18 阅读
  7. 设计模式10-抽象工厂

    2024-07-16 22:00:04       17 阅读
  8. C++中的常量详解

    2024-07-16 22:00:04       17 阅读