Docker自测题(基础、容器、镜像等)(下)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 什么是 Docker ?Go 语言开发,容器虚拟化技术,C/S 架构,具有隔离、快速、轻便的特点。

如何查看镜像支持的环境变量?

sudo docker run IMAGE env

如何批量清理临时镜像文件?

sudo docker rmi $(sudo docker images -q -f danging=true)

其中,dangling=true表示虚悬镜像。

虚悬镜像(dangling image): 镜像没有仓库名或没有标签

查询显示虚悬镜像:docker images -f dangling=true

谈谈 Docker Storage Driver(存储驱动)

每个 Docker 容器都有一个本地存储空间,用于保存层叠的镜像层(Image Layer)以及挂载的容器文件系统。

默认情况下,容器的所有读写操作都发生在其镜像层上或挂载的文件系统中,所以存储是每个容器的性能和稳定性不可或缺的一个环节。

以往,本地存储是通过存储驱动(Storage Driver)进行管理的,有时候也被称为 Graph Driver。

虽然存储驱动在上层抽象设计中都采用了栈式镜像层存储写时复制(Copy-on-Write)的设计思想,但是 Docker 在 Linux 底层支持几种不同的存储驱动的具体实现,每一种实现方式都采用不同方法实现了镜像层和写时复制。

虽然底层实现的差异不影响用户与 Docker 之间的交互,但是对 Docker 的性能和稳定性至关重要。

  • 在 Linux 上,Docker 可选择的一些存储驱动包括 AUFS(最原始也是最老的)、Overlay2(可能是未来的最佳选择)。
  • Docker 在 Windows 操作系统上只支持一种存储驱动,即 Windows Filter

存储驱动的选择是节点级别的。这意味着每个 Docker 主机只能选择一种存储驱动,而不能为每个容器选择不同的存储驱动。

在 Linux 上,可以通过修改 /etc/docker/daemon.json 文件来修改存储引擎配置,修改完成之后需要重启 Docker 才能够生效。

下面的片段展示了如何将存储驱动设置为 Overlay2

{ "storage-driver": "overlay2" }
复制代码


容器相关


Docker容器是什么?

Docker容器是一个具体的镜像实例,Docker容器包括应用程序所有的依赖项,作为操作系统的独立进程运行。

解释容器编排以及我们为什么需要使用它?

容器编排有助于管理大型环境中运行的容器。

容器编排可以控制和自动化以下任务:

  • 容器的供应和部署
  • 负载均衡
  • 容器之间的资源分配
  • 监控容器和主机的健康状况
  • 容器的缩放

Docker容器有几种状态?

  • created:已经被创建(使用 docker ps -a 命令可以列出)但是还没有被启动 (使用 docker ps 命令无法列出)
  • running:运行中
  • paused:容器的进程被暂停了
  • restarting:容器的进程正在重启过程中
  • exited:表示容器之前运行过但是现在处于停止状态(要区别于 created 状态,它是指一个新创建出的尚未运行过的容器),可以通过 start 命令使其重新进入 running 状态
  • destroyed:容器被删除了,再也不存在了

网络异常,图片无法展示
|


容器与主机之间的数据拷贝命令?

docker cp命令用于容器与主机之间的数据拷贝

  • 主机到容器:docker cp /www 96f7f14e99ab:/www/
  • 容器到主机:docker cp 96f7f14e99ab:/www /tmp

如何监控运行的Docker容器?

Docker提供docker statsdocker events等工具来监控生产中的docker。我们可以使用这些命令获取重要统计数据的报告。

  • docker stats:获得容器的CPU,内存等资源使用情况,默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c,如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态。
  • docker events:用于打印出实时的系统事件。

启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令?

docker run -d -p --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx

容器退出后,通过docker ps 命令查看不到,数据会丢失么?

容器退出后会处于 终止(exited) 状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过 docker start 来启动,只有删除容器才会清除数据。

如何停止所有正在运行的容器?

docker kill $(sudo docker ps -q)

如何清理批量后台停止的容器?

docker rm $(sudo docker ps -a -q)

如何临时退出一个正在交互的容器的终端,而不终止它?

docker 以交互式的方式启动容器后,如果使用exit退出交互界面后,整个容器都会exit(按Ctrl+c会使容器内的应用进程终止,进而会使容器终止)。但是如何使我们退出交互模式的同时不关闭容器呢,那就是在要退出交互模式时不使用exit还是使用命令 Ctrl+P+Q (先按Ctrl+p,后按Ctrl+q)。

如何退出容器时候自动删除?

使用 -rm 选项,例如:sudo docker run -rm -it ubuntu

怎么快速查看本地的镜像和容器?

  • 通过docker images来快速查看本地镜像。
  • 通过docker ps -a快速查看本地容器。

很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?

使用docker logs,后面跟容器的名称或者ID信息。

可以在一个容器中同时运行多个应用进程吗?

一般不推荐在同一个容器内运行多个应用进程

如果有类似需求,可以通过额外的进程管理机制。比如,supervisord来管理所运行的进程。

其他

仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?

  • 仓库:存放一组关联镜像的集合,比如同一个应用的不同版本的镜像。
  • 注册服务器:存放实际的镜像的地方。
  • 注册索引:负责维护用户的账号,权限,搜索,标签等管理。

注册服务器利用注册索引来实现认证等管理。

Docker能在非Linux平台(Windows+MacOS)上运行吗?

可以

如何将一台宿主机的docker环境迁移到另外一台宿主机?

  1. 停止Docker服务
  2. 将整个docker存储文件复制到另外一台宿主机上。
  3. 然后调整另外一台宿主机的配置即可。

Docker 与 虚拟机有何不同?

  • 相比于虚拟机,Docker更快速(秒级启动)、轻便(联合文件系统)。
  • Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统
  • Docker是一个系统进程;虚拟机是在操作系统中的操作系统。
  • Docker:体积小、启动速度快、性能好;虚拟机:体积大、启动速度慢、性能一般。

Docker 与 LXC(Linux Container)有何不同?

Linux Container 容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,LXC 利用 Linux 上相关技术实现容器。

Docker 则在如下的几个方面进行了改进:

  • 移植性:通过抽象容器配置,容器可以实现一个平台移植到另一个平台;
  • 镜像系统:基于 AUFS 的镜像系统为容器的分发带来了很多的便利,同时,共同的镜像层只需要存储一份,实现高效率的存储;
  • 版本管理:类似于 GIT 的版本管理理念,用户可以更方面的创建、管理镜像文件;
  • 仓库系统:仓库系统大大降低了镜像的分发和管理的成本;
  • 周边工具:各种现有的工具(配置管理、云平台)对 Docker 的支持,以及基于Docker 的 Pass、CI 等系统,让 Docker 的应用更加方便和多样化。
相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
23 2
|
3天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
4天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
5天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
5天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
7天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
7天前
|
NoSQL Redis Docker
【赵渝强老师】使用Docker Compose管理容器
Docker Compose 通过 YAML 文件管理多个容器,简化复杂系统的部署和管理。本文介绍了 Docker Compose 的基本概念,并通过一个包含 Redis DB 和 Python Web 模块的示例,展示了如何使用 Docker Compose 部署和管理多容器应用。手动部署和 Docker Compose 部署的对比突显了 Docker Compose 在系统复杂度增加时的优势。
|
2月前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
|
1月前
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令