Docker 面试知识点

news2024/12/30 3:16:54

Docker 是什么?

  • 是实现容器技术的一种工具
  • 是一个开源的应用容器引擎
  • 使用 C/S 架构模式,通过远程API 来管理 (我们本机是 C,docker 引擎是 S,实际的构建过程是在 docker 引擎下完成的)
  • 可以打包一个应用及依赖包到一个轻量级、可移植的容器中

Docker 有什么优势?

  • 资源占用少:每个容器都共享主机的资源,容器需要多少就用多少
  • 启动快:一条命令即可将容器启动,而容器启动时一般会将服务或应用一并启动

Docker 和 虚拟机 的区别?

在这里插入图片描述

什么是仓库、镜像、容器?

仓库存放镜像,主机通过仓库下载镜像,通过镜像创建容器
仓库

仓库

  • 存放镜像文件的地方,比如 DockerHub,可以将自己的镜像上传上去
  • 不同镜像可以有不同的标签
  • 主机可以从仓库下载镜像

镜像

  • 创建容器的模板
  • 同一个镜像可以创建多个不同的容器

容器

  • 通过镜像生成的运行实例
  • 不同容器之间是相互隔离,独立运行的
  • 通常一个容器就是一个应用或一个服务,也是我们常说的微服务

Docker 容器有几种在状态?

  • starting 运行状态
  • Exited 退出状态
  • Paused 暂停状态
  • healthy 健康状态
  • unhealthy 非健康状态

Docker 常用命令

docker pull 拉取镜像
docker create 创建容器
docker rm 删除容器
docker ps 列出正在运行的容器列表
docker run 创建容器并运行指定命令
docker start 启动容器
docker stop 停止运行容器
docker restart 重启容器
docker rm 删除容器
docker exec 进入容器内部,容器执行指定命令
docker rmi 删除镜像

docker pull ubuntu  //获取镜像
docker run -it ubuntu /bin/bash  //启动容器
docker start <容器 ID>  //启动一个已停止的容器 
docker stop <容器 ID>  //停止一个容器
docker rm -f <容器 ID>  //删除容器
docker ps  //查看正在运行的容器
runoob@runoob:~#  docker ps
CONTAINER ID        IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar
d3d5e39ed9d3        training/webapp     ...        0.0.0.0:32769->5000/tcp   xenodochial_hoov

更多:Docker 命令大全


Dockerfile 指令

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

FROM 构建镜像基于哪个镜像

MAINTAINER 镜像维护者姓名或邮箱地址

RUN 构建镜像时运行的指令

CMD 容器启动的命令,如果有多个则以最后一个为准,也可以为 ENTRYPOINT 提供参数

VOLUME 指定容器挂载点到宿主机自动生成的目录或其他容器

USER 为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户

WORKDIR 为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录

HEALTHCHECH 健康检查

ARG 构建参数,与 ENV 作用一致。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。

EXPOSE 声明容器的服务端口(仅仅是声明)

ENV 设置容器环境变量

ADD 拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压

COPY 拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能

ENTRYPOINT 运行容器时执行的 shell 命令

FROM cr.d.xm.net/container/xm_centos7:release

MAINTAINER ldz <ldz@xm.com>

RUN mkdir -p /home/work/bin/tmp

# 复制应用程序
COPY devsecops_backend /home/work/bin

# 复制配置文件
COPY config/local.toml /home/work/bin
COPY config/staging.toml /home/work/bin
COPY config/prod.toml /home/work/bin
COPY config/preview.toml /home/work/bin

# 暴露端口
EXPOSE 1416

# 打开工作目录
WORKDIR /home/work/bin

# 执行命令
ENTRYPOINT [""]

Docker 怎么用?

例如,制作一个 centos 镜像
1.编写 Dockerfile,文件命名为 mydockerfile-centos

FROM centos:7.9.2009
MAINTAINER ldz ldz@whu.edu.cn

ENV  MYPATH  /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE  80
 
CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

2.通过命令构建镜像 (最后有个 . )

// docker build -f dockerfile文件名  -t  镜像名:[tag] .
[root@ldz] docker build -f mydockerfile-centos  -t  mycentos:0.1 .

// 成功显示如下
Successfully built f29d77d79136
Successfully tagged mycentos:0.1

3.查看本地进行的变更历史(这一步骤可选)
在这里插入图片描述
4.启动容器

docker run -it mycentos:0.1

K8S 是什么?

Kubernetes 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用

没有 k8s 可以使用 docker 吗?

可以。实际上一些小型公司,在业务不太复杂的情况下都是直接使用 Docker。
尽管 k8s 有很多好处,但是众所周知它非常复杂,业务比较简单可以放弃使用 k8s。

没有 Docker 可以使用 k8s 吗?

k8s 只是一个容器编排器,没有容器拿什么编排?!
k8s 经常与 Docker 进行搭配使用,但是也可以使用其他容器,如RunC、Containerted 等。

Docker Swarm 和 k8s 怎么选?

选 k8s。
2019年底Docker Enterprise已经出售给Mirantis,Mirantis声明要逐步淘汰Docker Swarm,后续会将 k8s 作为默认编排工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/341667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hbase 数据迁移

Hbase 数据迁移 可选方案对比 l 已验证方案操作说明&#xff1a; n Export&import u 导出命令及示例 hbase org.apache.hadoop.hbase.mapreduce.Export “表名” 文件路径 导出至本地文件系统&#xff1a; ./bin/hbase org.apache.hadoop.hbase.mapreduce.Export ‘defa…

UnityBurst系统批量计算的插件入门

什麽是Burst系統做一些批量計算需要&#xff0c;比较难用&#xff0c;针无两头利如果不需要“密集”计算&#xff0c;就帧的不需要&#xff0c;到底什么是密集计算呢&#xff0c;for循环不密集么&#xff0c;while循环不密集么&#xff1f;安装Burst因为发现一个不错项目的插件…

Zookeeper实现分布式锁

文章目录ZK节点类型watch监听机制Zookeeper实现分布式锁锁原理创建锁的过程释放锁的过程ZK锁的种类代码实现Zookeeper是一个开源的分布式协调服务&#xff0c;是一个典型的分布式数据一致性解决方案。 分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅&#xff0c;负载均…

【C/C++基础练习题】简单指针与数组使用练习题

&#x1f349;内容专栏&#xff1a;【C/C要打好基础啊】 &#x1f349;本文内容&#xff1a;简单指针与数组练习题&#xff08;复习之前写过的实验报告&#xff09; &#x1f349;本文作者&#xff1a;Melon西西 &#x1f349;发布时间 &#xff1a;2023.2.12 目录 1.vector​编…

async thunk 解决 API 调用的依赖问题

async thunk 解决 API 调用的依赖问题 一句话节省看下面一堆内容的时间就是&#xff1a; async thunk 中可以使用 async/await 锁住其他的 action 操作 一般 API 之间存在三种情况&#xff1a; A 和 B 之间没有依赖关系 这样的情况下&#xff0c;A 和 B 可以各调用各的&#x…

最近大热的 chatGPT 会取代你的工作吗?

ChatGPT 由于其高效的自然语言处理能力&#xff0c;它最容易取代的领域可能是&#xff1a; 文本分类&#xff1a;ChatGPT 可以用作文本分类系统&#xff0c;对文本进行分类 聊天机器人&#xff1a;ChatGPT 可以制作聊天机器人&#xff0c;提供人性化的交互体验 文本生成&…

策略游戏与实践反馈

早上看到time&#xff08;李培楠&#xff09;居然击败maru得了IEM的冠军&#xff0c;加上即时战略游戏的没落&#xff0c;星际2的研发停止&#xff0c;以及最近曾经被大家膜拜的暴雪闹出的各种事情&#xff0c;各种百感交集吧&#xff0c;从2000年上手星际争霸1开始&#xff0c…

【SPSS】数据预处理基础教程(附案例实战)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

2.10、时间片轮转、优先级调度算法、多级反馈队列调度算法

Tips&#xff1a;各种调度算法的学习思路 算法思想 算法规则 这种调度算法是用于作业调度还是进程调度? 抢占式? 非抢占式? 优点和缺点 是否会导致饥饿\color{red}饥饿饥饿 某 进程/作业 长期得不到服务 1、时间片轮转&#xff08;RR, Round-Robin&#xff09; 1.1、例…

别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(2)

别具一格&#xff0c;原创唯美浪漫情人节表白专辑&#xff0c;(复制就可用)&#xff08;html5,css3,svg)表白爱心代码(2) 目录 ​​​​​​​款式二&#xff1a;心形实时显示认识多长时间桃花飞舞&#xff08;爱心&#xff09;款 1、拷贝完整源代码 2、拷贝完整js代码 3、…

漏洞修复 Zookeeper、MySQL、Elasticsearch

漏洞修复 一、HTTP漏洞修复 1.1 漏洞说明 1.2 漏洞修复 1.2.1 升级HTTPD到最新版本&#xff08;2.4.53&#xff09; 1.2.1.1 服务器有网的情况下执行以下操作&#xff1a; 安装CodeIT库 cd /etc/yum.repos.d wget https://repo.codeit.guru/codeit.el7.repo 更新httpd y…

解决需求变更难题的8大方案

需求变更8大原因为什么会出现需求变更&#xff0c;这是由于需求约束、规则有了新的变化、由于政策发生变化&#xff0c;客户、沟通方式、流程化、标准化的问题等导致。这里在在过去的项目经验中&#xff0c;提出了常见的8大需求变更的原因。政策发生变化&#xff1a;指由于国家…

牛客网Python篇数据分析习题(三)

1.现有一个Nowcoder.csv文件&#xff0c;它记录了牛客网的部分用户数据&#xff0c;包含如下字段&#xff08;字段与字段之间以逗号间隔&#xff09;&#xff1a; Nowcoder_ID&#xff1a;用户ID Level&#xff1a;等级 Achievement_value&#xff1a;成就值 Num_of_exercise&a…

华为OD机试 - 去除多余空格(Python)| 真题+思路+代码

去除多余空格 题目 去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。 条件约束: 不考虑关键词起始和结束位置为空格的场景;单词的的开始和结束下标保证涵盖一个完整的单词,即一个坐标对开…

flurry+atos crash代码定位

flurry 崩溃日志代码定位 用symbolicatecrash工具分析iOS Crash文件通过atos符号化崩溃报告 1.写测试crash代码&#xff08;方便检测最后crash是否定位正确 **MineViewController-xima方法-485行&#xff09; 2.代码中flurry sdk打开crash追踪&#xff08;默认为NO&#xff0…

Prometheus 告警规则

Prometheus 告警规则 Prometheus官方内置的第三方报警通知包括&#xff1a;邮件、 即时通讯软件&#xff08;如Slack、Hipchat&#xff09;、移动应用消息推送(如Pushover)和自动化运维工具&#xff08;例如&#xff1a;Pagerduty、Opsgenie、Victorops&#xff09; Promethe…

Allegro如何批量快速修改复用好的模块操作指导

Allegro如何批量快速修改复用好的模块操作指导 在做PCB设计的时候,相同模块可以用reuse复用的功能,可以大大提升效率,但是模块需要修改的时候,其它模块也要跟着修改,逐个再去复用一遍比较费时间,Allegro支持批量快速修改复用好的模块 前提是相同模块必须是相同的mdd文件…

Ray和极客们的创新之作,2月18日来发现

所在论坛&#xff1a;数据库技术创新&云原生论坛分享时段&#xff1a;2.18 10:30-11:00分享主题&#xff1a;云原生数据库PieCloudDB &#xff1a;Unbreakable安全特性剖析分享嘉宾&#xff1a;王淏舟&#xff0c;拓数派资深研发工程师 由中国开源软件推进联盟PostgreSQL分…

Ansible的部署和命令模块

Ansible的部署和命令模块目录一、ansible 的概述1.1ansible简介1.2官方网站1.3ansible 的特点1.4ansible的工作机制1.5ansible的组成模块二、ansible部署2.1环境准备2.2Asible的安装三、ansible 命令行模块3.1command 模块3.2shell 模块3.3cron 模块3.4user 模块3.5group 模块3…

【java】40 个 SpringBoot 常用注解(建议收藏)

本文目录一、Spring Web MVC 注解Spring Web MVC 注解RequestMappingRequestBodyGetMappingPostMappingPutMappingDeleteMappingPatchMappingControllerAdviceResponseBodyExceptionHandlerResponseStatusPathVariableRequestParamControllerRestControllerModelAttributeCross…