本文最后更新于68 天前,其中的信息可能已经过时,如有错误请发送邮件到3082654005@qq.com
云计算基础(5 题)
- 题目:什么是云计算?它的核心特点是什么?
答案:云计算是通过网络(通常是互联网)提供按需分配的计算资源(如服务器、存储、数据库等)的服务模式。核心特点包括:按需自助服务、广泛的网络访问、资源池化、快速弹性伸缩、可计量的服务。 - 题目:云计算的三种主要服务模式(IaaS、PaaS、SaaS)分别指什么?
答案:- IaaS(基础设施即服务):提供底层 IT 基础设施(如服务器、存储、网络),例如阿里云 ECS、AWS EC2。
- PaaS(平台即服务):提供开发和运行应用的平台(如数据库、中间件、开发工具),例如阿里云 RDS、Google App Engine。
- SaaS(软件即服务):直接提供可使用的软件应用(如在线办公软件、CRM 系统),例如钉钉、Salesforce。
- 题目:公有云、私有云、混合云的区别是什么?
答案:- 公有云:由第三方服务商提供,资源共享给多个用户,例如阿里云、腾讯云。
- 私有云:仅为单个组织服务,部署在组织内部或托管,例如企业自建的云平台。
- 混合云:结合公有云和私有云,可在两者间灵活迁移数据和应用,兼顾安全性和扩展性。
- 题目:云计算中的 “弹性伸缩” 指什么?有什么作用?
答案:弹性伸缩是指根据业务需求自动调整计算资源(如增加 / 减少服务器数量)。作用是:高峰期保证服务稳定,低峰期减少资源浪费,降低成本。 - 题目:虚拟化技术在云计算中的作用是什么?
答案:虚拟化技术能将物理硬件资源(如服务器)抽象为多个虚拟资源,实现资源的高效利用和隔离,是云计算实现资源池化、按需分配的基础。
二、Docker 容器基础(10 题)
- 题目:什么是 Docker?它与传统虚拟机的区别是什么?
答案:Docker 是一个开源的容器化平台,能将应用及其依赖打包成轻量级容器。与传统虚拟机的区别:- 容器共享宿主机内核,启动快、资源占用少;虚拟机需要完整操作系统,启动慢、资源占用多。
- 容器隔离性低于虚拟机,但更轻量、效率更高。
- 题目:Docker 镜像(Image)和容器(Container)的关系是什么?
答案:镜像是静态的模板(包含应用及依赖),容器是镜像的运行实例。可以理解为:镜像 = 类,容器 = 对象。 - 题目:Docker 常用的基本命令有哪些(至少列举 3 个)?
答案:docker pull [镜像名]:拉取镜像。docker run [镜像名]:创建并启动容器。docker ps:查看运行中的容器(-a查看所有容器)。docker stop [容器ID/名称]:停止容器。docker rm [容器ID/名称]:删除容器。
- 题目:如何查看本地已有的 Docker 镜像?如何删除一个镜像?
答案:- 查看本地镜像:
docker images或docker image ls。 - 删除镜像:
docker rmi [镜像ID/名称](需先停止并删除依赖该镜像的容器)。
- 查看本地镜像:
- 题目:Dockerfile 的作用是什么?它的基本结构包含哪些部分?
答案:Dockerfile 是用于构建 Docker 镜像的文本文件,包含一系列构建指令。基本结构包括:基础镜像(FROM)、维护者信息(MAINTAINER)、构建命令(RUN)、端口暴露(EXPOSE)、启动命令(CMD/ENTRYPOINT)等。 - 题目:
docker run -d -p 8080:80 nginx命令中,-d和-p参数的含义是什么?
答案:-d:让容器在后台(守护进程模式)运行。-p 8080:80:端口映射,将宿主机的 8080 端口映射到容器的 80 端口(外部通过宿主机 8080 访问容器内 80 端口的服务)。
- 题目:Docker 容器的数据如何持久化?常用方式有哪些?
答案:容器删除后数据会丢失,持久化方式包括:- 数据卷(Volume):Docker 管理的宿主机文件系统目录,独立于容器生命周期。
- 绑定挂载(Bind Mount):将宿主机任意目录直接挂载到容器。
- 题目:什么是 Docker Registry?Docker Hub 是什么?
答案:Docker Registry 是存储和分发 Docker 镜像的仓库。Docker Hub 是官方公共 Registry,提供大量开源镜像(如 nginx、mysql),用户可上传 / 下载镜像。 - 题目:如何进入正在运行的 Docker 容器内部?
答案:使用docker exec -it [容器ID/名称] /bin/bash(-it表示交互式终端,/bin/bash是进入容器后执行的命令)。 - 题目:
CMD和ENTRYPOINT在 Dockerfile 中的区别是什么?
答案:两者都用于指定容器启动命令。CMD:命令可被docker run后的参数覆盖(例如docker run nginx echo "hello"会覆盖默认 CMD)。ENTRYPOINT:命令不可被覆盖,docker run后的参数会作为其附加参数(更适合固定启动命令的场景)。
三、Docker 下数据库一主二从配置(7 题)
- 题目:数据库 “一主二从” 架构的作用是什么?
答案:主库(Master)负责写操作,两个从库(Slave)负责读操作。作用是:分担读压力(读写分离)、提高数据可用性(从库可作为主库的备份)。 - 题目:MySQL 主从复制的基本原理是什么?
答案:- 主库将写操作记录到 binlog(二进制日志)。
- 从库通过 IO 线程读取主库的 binlog,写入本地 relay log(中继日志)。
- 从库的 SQL 线程解析 relay log,执行相同操作,实现数据同步。
- 题目:在 Docker 中部署 MySQL 主库时,需要配置哪些关键参数(至少 2 个)?
答案:server-id:主从集群中每个节点的唯一标识(主库需设置,如server-id=1)。log_bin:开启 binlog(如log_bin=/var/lib/mysql/mysql-bin),主库必须开启。binlog_do_db(可选):指定需要同步的数据库。
- 题目:Docker 中启动一个 MySQL 主库容器的命令大致是什么样的(举例说明)?
答案:bashdocker run -d --name mysql-master -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /path/to/master/data:/var/lib/mysql \ mysql:8.0 \ --server-id=1 \ --log_bin=/var/lib/mysql/mysql-bin - 题目:从库如何连接主库进行同步?关键步骤是什么?
答案:关键步骤:- 在主库创建用于同步的用户(如
create user 'repl'@'%' identified by 'repl123';)并授权(grant replication slave on *.* to 'repl'@'%';)。 - 在从库执行
change master to命令,指定主库 IP、端口、同步用户及密码、binlog 文件名和位置。 - 启动从库同步(
start slave;)。
- 在主库创建用于同步的用户(如
- 题目:如何检查 MySQL 主从复制是否正常运行?
答案:在从库执行show slave status\G;,查看两个线程状态:Slave_IO_Running: Yes(IO 线程正常)。Slave_SQL_Running: Yes(SQL 线程正常)。两者都为 Yes 则表示同步正常。
- 题目:Docker 中 “一主二从” 的三个 MySQL 容器如何实现网络互通?
答案:可通过 Docker 网络实现:- 创建自定义网络(
docker network create mysql-net)。 - 启动三个容器时都加入该网络(
--network mysql-net)。 - 容器间可通过容器名(如
mysql-master)相互访问(无需暴露端口到宿主机)。
- 创建自定义网络(
四、Docker Compose 容器编排(8 题)
- 题目:什么是 Docker Compose?它的作用是什么?
答案:Docker Compose 是 Docker 官方的编排工具,通过 YAML 文件定义多个容器的配置(如网络、卷、依赖关系),可一键启动 / 停止所有关联容器,简化多容器应用的部署。 - 题目:Docker Compose 配置文件的默认名称是什么?如何指定其他名称的配置文件?
答案:默认名称是docker-compose.yml。指定其他文件使用docker-compose -f [文件名] up(如docker-compose -f my-compose.yml up)。 - 题目:Docker Compose 配置文件中,
services、networks、volumes三个顶级节点分别表示什么?
答案:services:定义需要启动的容器服务(如 mysql、nginx),包含每个服务的镜像、端口、环境变量等配置。networks:定义自定义网络,用于服务间通信。volumes:定义数据卷,用于服务的数据持久化。
- 题目:Docker Compose 的常用命令有哪些(至少 3 个)?
答案:docker-compose up:创建并启动所有服务(-d后台运行)。docker-compose down:停止并删除所有服务、网络、卷。docker-compose ps:查看所有服务的状态。docker-compose logs [服务名]:查看指定服务的日志。
- 题目:在 Docker Compose 中,如何定义一个依赖关系(例如:web 服务依赖于 db 服务启动)?
答案:使用depends_on关键字,例如:yamlservices: web: image: my-web depends_on: - db # web服务会在db服务启动后再启动 db: image: mysql - 题目:如何通过 Docker Compose 为服务配置环境变量?
答案:两种方式:- 直接在
environment中定义:yamlservices: db: image: mysql environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=mydb - 通过
.env文件定义,Compose 会自动读取该文件中的变量。
- 直接在
- 题目:Docker Compose 中,如何将宿主机目录挂载到容器中?
答案:使用volumes配置,例如(将宿主机./data目录挂载到容器/var/lib/mysql):yamlservices: db: image: mysql volumes: - ./data:/var/lib/mysql # 宿主机目录:容器目录 - 题目:使用 Docker Compose 启动服务后,如何单独重启其中一个服务(如 db 服务)?
答案:使用命令docker-compose restart db(db是服务名)