docker基础


对于docker的使用也快一年了,但是没有做什么像样的笔记,所以打算对于这个比较强大的容器,进行一些简单的知识总结,为了方便后期的一些学习使用,然后也算是阶段性的知识总结吧。

介绍

就来说说我对于docker的理解,它就像是一个容器,把所以咱们需要使用的一些应用程序放在里面,在使用的时候进行管理操作,可以对于每个软件进行隔离,保护。主要是对于环境没有要求,在部署的时候,也非常方便,就算出现问题,也是很容易去解决的

优势:

  • 高效合理的利用资源
  • 快速的启动(直接运行在宿主内核,无需启动完整的操作系统)
  • 一致的运行方式(镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性)
  • 更轻松的维护和拓展(分层存储,镜像)

注意点

可以有加速器:使用国内的镜像加速

如果需要的话,可以默认自启动

systemctl enable docker

结构

Docker提供一个C/S架构的平台,客户端和服务端通过REST-API通信。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

服务端

是docker的守护进程,负责监听API请求并且管理Docker对象。守护进程还可以和其他的守护进程通信来管理Docker服务。

客户端

客户端进程,是交互的主要方式

仓库

是一个集中的存储,分发镜像的服务

对象资源

镜像(Image)

在这里有一个例子,在操作系统中有内核和用户两种空间,加入是linux,在内核启动之后,会挂载root文件系统为其提供用户空间支持,而docker就像是一个root文件系统。

docker相当于是一个特殊的文件系统,里面含有容器需要的程序,库,资源,配置等文件外,还包含了一些为运行是准备的参数。但是他的里面不会包含动态的数据。在内容创建之后,也不会改变的。

分层储存

Docker充分利用Union FS技术,将镜像的文件系统设计成分层存储的架构(镜像并不是一个整体,而是一组文件系统叠加组成)

但是这到底是怎么用呢?首先知道是一层层构建的,只能去操作当前的哪一层,不能去改变上一层中的数据。就好比是下面这样的,开一个ubuntu的容器,在镜像里面配置一些网络文件,然后再以这个容器构建为镜像,后面就使用这个镜像去开一个容器,然后操作其他的问题的话,就只能在上面的基础上去操作的了,在不能修改之前配置的网络的文件了。

容器**(Container)**

在上面,有时候讲容器,有时候讲镜像,所以搞得比较糊涂,所以说明一下两者的guanxi/,镜像就好比可执行文件,容器就像是进程,所以可以使用一个镜像去创建多个容器,每个容器都有自己的root文件,各种配置文件,就是互相隔离的环境。当一个容器运行的时候,镜像就是基础层,然后在上面再创建一个存储层,这个被称为,容器存储层,它的生命周期和容器的生命周期是一样的。

容器的可读层是共享的,通过同一个Image启动的容器,全部都共享这个image。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网络

容器中的网络是和宿主机隔离的,所以如果是要在容器里面部署一些网络的应用的话,就是要配置网络。

下面是一些配置模式:

  • bridge(网桥模式):默认的网络驱动模式。为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0以及Iptables nat表配置与宿主机通信。
  • host(主机模式):容器不会虚拟出自己的网卡,而是直接使用宿主机的IP和端口
  • none:关闭容器的网络功能 跨主机:
  • overlay:跨主机的容器通信或者使用Swarm mode时使用
  • maxvlan:从VM迁移过来,需要mac地址的模式

数据卷

在上面的内容中,会发现容器是独立的,所以在容器的存储层中,也是无法写入数据的,那么要进行写入的时候,就需要绑定宿主机或者使用数据卷,这些都会直接跳过容器存储层,性能和稳定性就是比较高的。这样的话,这些信息就是独立于容器之外,就算容器出现问题,或者销毁,也是不会影响的。

面试问题

基本了解了一些docker的基础知识,然后去网上找到一些关于docker的面试经典题目,在下面总结一下。基础一些题,搜索引擎上面都是可以找到的,下面的总结的是视频里面的

  1. Docker是什么?
    1. 是一个实现容器技术的工具
    2. 开源的应用容器引擎
    3. 使用C/S,通过远程API管理
    4. 可以打包一个应用及依赖包到一个轻量级、可移植的容器中
    5. 答:Docker是一个容器化平台,它以容器的形式将应用程序及其所有依赖项打包在一起,以确保应用程序在任何环境中无缝衔接。
  2. Docker与虚拟机的不同点在哪里
    1. 虚拟化级别:
      1. Docker:Docker 是一种操作系统级别的虚拟化技术,它利用 Linux 内核的功能(如 cgroups 和 namespaces)来创建容器。Docker 容器共享主机操作系统的内核,并在其上运行独立的用户空间。
      2. 虚拟机:虚拟机是一种硬件级别的虚拟化技术,它通过在物理服务器上运行虚拟化软件层(称为 hypervisor 或虚拟机监控程序)来创建虚拟的硬件环境。每个虚拟机都包含一个完整的操作系统、用户空间和应用程序。
    2. 资源利用:
      1. Docker:由于容器共享主机操作系统的内核,因此 Docker 容器更加轻量级,并且启动速度更快、资源消耗更少。
      2. 虚拟机:每个虚拟机都包含自己的操作系统内核,因此占用的资源更多,启动速度较慢。
    3. 隔离性:
      1. Docker:Docker 容器提供了一定程度的隔离,但是容器之间共享主机的内核,因此隔离性相对较弱。容器之间可以共享文件系统、网络和进程空间。
      2. 虚拟机:虚拟机提供了更高级别的隔离,每个虚拟机都有自己独立的内核和资源,因此虚拟机之间的隔离性更好。
    4. 部署和管理:
      1. Docker:Docker 容器的部署和管理相对简单,可以使用 Docker 镜像来快速部署应用程序,并且可以使用 Docker Compose 或 Kubernetes 等工具来管理容器。
      2. 虚拟机:虚拟机的部署和管理相对复杂,需要创建和配置虚拟机、安装操作系统、应用程序等,并且需要使用虚拟化管理工具(如 VMware、VirtualBox)来管理虚拟机的生命周期。
    5. 适用场景:
      1. Docker:适用于轻量级的、快速部署的应用程序,特别是微服务架构中的应用程序。Docker 也适用于构建和测试环境,以及持续集成和持续交付(CI/CD)流水线。
      2. 虚拟机:适用于需要更高级别隔离、安全性和稳定性的应用程序,以及运行不同操作系统的应用程序。虚拟机也适用于虚拟化服务器、开发和测试环境,以及传统的企业应用程序
  3. Docker容器的有几种状态
    1. 答:四种:运行,已暂停,重新启动,已退出
  4. Dockerfile中最常用的指令

From。 Label, RUn,cmd

  1. Copy和add有什么区别

add:当拷贝容器的时候会自动解压,但是copy是不会的。

  1. 什么是Docker镜像

用于创建容器,由其他的镜像层组成,允许通过网络传输镜像的时候发送最少的数据。

  1. Docker使用工作流程
    1. 编写 Dockerfile:
      1. Dockerfile 是一个文本文件,包含了构建 Docker 镜像所需的指令和参数。
      2. 在 Dockerfile 中定义了从基础镜像(Base Image)中构建镜像的步骤,以及所需的软件包、环境变量、文件和配置等。
    2. 构建镜像:
      1. 使用 docker build 命令根据 Dockerfile 构建 Docker 镜像。
      2. Docker build 命令会按照 Dockerfile 中的指令逐步执行,生成一个包含了应用程序和运行环境的镜像。
    3. 运行容器:
      1. 使用 docker run 命令基于构建好的镜像启动容器。
      2. Docker run 命令可以指定容器的名称、端口映射、卷挂载、环境变量等配置参数。
    4. 容器执行:
      1. 一旦容器启动,Docker 将执行 Dockerfile 中定义的命令,并在容器中运行应用程序。
      2. 容器执行的操作包括启动应用程序、运行服务、处理请求等。
    5. 容器交互:
      1. 用户可以通过 docker exec 命令在运行中的容器中执行命令,与容器进行交互。
      2. 通过 docker exec -it 命令可以进入容器的交互式 shell 环境,进行调试、查看日志等操作。
    6. 监控和管理:
      1. Docker 提供了一系列命令和工具,用于监控和管理容器的运行状态。
      2. 用户可以使用 docker ps 查看正在运行的容器列表,使用 docker logs 查看容器日志,使用 docker stats 查看容器资源使用情况等。
    7. 停止和删除:
      1. 当应用程序完成任务或不再需要时,用户可以使用 docker stop 命令停止容器,使用 docker rm 命令删除容器。
      2. 如果不再需要使用的镜像,也可以使用 docker rmi 命令删除镜像。
  • 28
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值