docker面试问题

什么是docker?什么是docker镜像?

docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。 是docker容器的源代码,用于创建容器。使用build命令创建镜像。



什么是Docker镜像

一组环境的静态集合,类似操作系统镜像,Docker镜像用于创建容器。使用build命令创建镜像。

什么是Docker容器

Docker容器包括应用程序及其所有依赖项,作为操作系统的独立进程运行。
运行:

  • 支持以后台模式运行进程
  • 支持将容器内的端口映射到宿主机
  • 支持以挂载的形式和宿主机共享文件系统
  • 容器运行的程序退出后,容器随之退出;容器退出后可以再次打开

Dockerfile中最常见的指令是什么

FROM:指定基础镜像
LABEL:功能是为镜像指定标签
RUN:运行指定的命令
CMD:容器启动时要运行的命令

dokcer 常用命令

类型命令描述
镜像操作docker images显示存在的当前镜像
docker image prune删除无用的镜像(被更新的旧镜像)
docker rmi 镜像ID删除指定的镜像
docker build -t 镜像名称:tag dockerfile所在路径编译镜像
docker login登陆dockerhub
docker pull 镜像作者/镜像名称:tag从dockerhub拉取镜像
docker tag 镜像名称:tag 镜像作者/新名称:tag规范重命名镜像
docker push 镜像作者/镜像名称:tag推送镜像到dockerhub
容器操作docker ps -a显示当前所有容器
docker rm 容器ID删除指定容器,运行中容器不能删
docker start -ai 容器ID启动之前退出的容器
docker stop 容器ID停止指定容器
docker cp 宿主机文件绝对路径 容器ID:容器内绝对路径从宿主机拷贝文件到容器内
docker cp 容器ID:容器内绝对路径 宿主机文件绝对路径从容器内拷贝文件到宿主机
run命令docker run 参数 镜像名 执行程序名创建并运行容器
-d守护模式运行,适用服务,与ti参数互斥
-ti打开终端交换模式,适用应用程序,与-d互斥
-v 主机绝对路径:容器内绝对路径将宿主机路径挂载到容器内
-p 主机端口:容器内端口将容器内端口映射到宿主机端口
-e 环境变量名=环境变量值向容器内定义环境变量
–rm容器退出后自动删除,适用纯应用程序

在这里插入图片描述

dockerfile编写

编写思路

  1. 确定基础镜像
  2. 安装所需环境
  3. 定义执行点
指令描述
FROM 本地镜像名或dockerhub镜像名指定基础镜像
WORKDIR 容器内绝对路径指定后续容器内命令的执行路径
RUN 命令构建镜像过程中执行的命令,多条可以顺序书写
COPY 主机文件路径 容器内路径将主机文件拷贝到容器内,主机文件必须使用dockerfile所在路径的相对路径
EXPOSE 端口号定义要映射到主机的端口号,搭配run命令的-P参数可以随机映射
ENTRYPOINT [“程序”]脚本定义镜像执行点,定义后,run命令的最后字段会变成该命令的参数
CMD [“命令或参数”]若没有定义执行点,则该命令定义的是镜像创建后缺省的指向程序。若定义了执行点,则该命令定义的是执行点的参数。run命令的最后字段会替换该命令的值

Dockerfile中的命令COPY和ADD命令有什么区别

COPY与ADD的区别COPY的SRC只能是本地文件,其他用法一致

a.二者都是只复制目录中的文件,而不包含目录本身。
b.COPY能干的事ADD都能干,甚至还有附加功能。
c.ADD可以支持拷贝的时候顺带解压缩文件,以及添加远程文件(不在本宿主机上的文件),COPY的只能是本地文件
d.只是文件拷贝的话可以用COPY,有额外操作可以用ADD代替。
e.docker官方建议当要从远程复制文件时,尽量用curl/wget命令来代替ADD。因为用ADD的时候会创建更多的镜像层。镜像层的size也大。

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

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

如何在生产中监控Docker

Docker提供docker stats和docker事件等工具来监控生产中的Docker。我们可以使用这些命令获取重要统计数据的报告。
Docker统计数据:当我们使用容器ID调用docker stats时,我们获得容器的CPU,内存使用情况等。它类似于Linux中的top命令。
Docker事件:Docker事件是一个命令,用于查看Docker守护程序中正在进行的活动流。
一些常见的Docker事件是:attach,commit,die,detach,rename,destroy等。我们还可以使用各种选项来限制或过滤我们感兴趣的事件

Docker如何在非Linux系统中运行容器

通过添加到Linux内核版本2.6.24的名称空间功能,可以实现容器的概念。容器将其ID添加到每个进程,并向每个系统调用添加新的访问控制检查。它由clone()系统调用访问,该调用允许创建先前全局命名空间的单独实例。
如果由于Linux内核中可用的功能而可以使用容器,那么显而易见的问题是非Linux系统如何运行容器。Docker for Mac和Windows都使用Linux VM来运行容器。Docker Toolbox用于在Virtual Box VM中运行容器。但是,最新的Docker在Windows中使用Hyper-V,在Mac中使用Hypervisor.framework。

CI(持续集成)服务器的功能是什么?

CI功能就是在每次提交之后不断地集成所有提交到存储库的代码,并编译检查错误

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值