从网上整理的Docker面经

您所在的位置:网站首页 爱快docker插件 从网上整理的Docker面经

从网上整理的Docker面经

2023-03-10 22:47| 来源: 网络整理| 查看: 265

什么是Docker

Docker是一种高级容器引擎,它可以简化创建、管理、运行和分发应用程序的过程。

Docker和虚拟机的不同

Docker的系统是依赖于宿主机的系统,而虚拟机是一个虚拟出来的系统。并且Docker仅仅只有能够运行某个镜像最小需要的部分,而虚拟机有额外的许多东西。综上Docker的镜像会比较小,并且启动会比虚拟机快。

Dockerfile 什么是Dockerfile

Dockerfile是一个文本文件,用来自动构建Docker镜像。由于docker镜像采用了联合文件系统,所以其实在Dockerfile中每一条命令就会构建一层,并且每一条指令本质上就是在描述该层如何构建。

Dockerfile常用的指令 FROM 使用FROM为后续指令建立基础镜像。在所有有效的Dockerfile中,FROM是第一条指令 LABEL 用户组织项目映像,模块,许可等。在自动化部署方面LAVEL也有很大用处。在 LABEL 中指定一组键值对,可用于程序化配置或布署 Docker 。 CMD 指定容器启动后要干的事情 Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换 它和RUN命令的区别 CMD是在docker run时运行 RUN是在docker build时运行 MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 容器构建是需要运行的命令 两种格式 shell格式 exec格式 RUN是在docker build时运行 EXPOSE 当前容器对外暴露的端口 WORKDIR 指定在创建容器后,终端默认登陆进来的工作目录,一个落脚点 USER 指定该镜像以什么样的用户去执行,如果都不指定,默认是root ENV 用来在构建镜像过程中设置环境变量 例如JAVA_HOME ADD 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包 COPY 与ADD相似,只不过ADD会进行一些处理,而COPY不会 VOLUME 指定容器数据卷,用于数据保存和持久化工作 ENTRYPOINT 也是用来指定一个容器启动时要运行的命令 类似CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当做参数送给ENTRYPOINT指令指定的程序 说明 ENTRYPOINT可以和CMD一起用,一般是变参才 会使用CMD,这里的CMD等于是在给ENTRYPOINT传参。 当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给ENTRYPOINT指令,他两个组合会变成 "" 虚悬镜像 是什么

仓库名和标签名都会的镜像,一般这种镜像都是失去存在价值的镜像,不建议使用。推荐删除掉虚悬镜像

批量删除方法

docker image prune

docker-compose 是什么

docker compose是一种.yml格式的文本文件,用来统一管理多个docker容器组成一个应用。并且它能够帮助我们按顺序启动容器,也能够帮助我们一键启动,一键停止,而且能够通过这份文件做自动化部署。

使用docker-compose时要如何保证容器A先于容器B运行?

在docker-compose文件中,有一个depends_on属性,在要部署的某个服务中,可以用该属性指定哪些服务要先于该服务运行(依赖关系)。

一个完整的Docker的组成部分 DockerClient 客户端 Docker Daemon 守护进程 Docker image 镜像 DockerContainer 容器 Docker容器的生命周期 创建 运行 暂停 取消 启动 停止 重启 杀死(kill) 销毁 Docker常用网络模式 网桥(bridge):默认模式 主机(host):与主机共用ip与端口 自定义模式:仅仅直接创建的话,是网桥模式的升级版,允许容器之间以服务名ping对方。 Docker配置文件的位置 Ubuntu:/etc/default/docker CentOS:/etc/sysconfig/docker Docker的优点 1.部署方便

只需要将镜像拉取到本地之后,执行一些命令就能启动,省去许多繁杂的配置

2.环境容易统一

我们经常遇到每个人的配置和环境都不太一样的情况,正常情况下,可能不会出现问题。但是一旦出现问题,将要耗费很多的人力物力去解决这些配置、环境、依赖的问题。但是使用了docker之后,可以很方便的统一环境和版本,而这仅需要一个相同的镜像。

3.隔离性好

不管是开发还是生产,往往我们一台机器上可能需要跑多个服务,而服务各自需要的依赖配置不尽相同,假如说两个应用需要使用同一个依赖,或者两个应用需要的依赖之间会有一些冲突,这个时候就很容易出现问题了。最好还是将其隔离起来。而容器在这方面有天生的优势,每一个容器就是一个隔离的环境

4.管理成本低

随着大环境的发展,docker等容器的使用和学习的成本也是愈发降低

什么是Docker Hub

Docker Hub是类似与GitHub的网站,GitHub是托管代码的平台,而Docker Hub是托管镜像的平台。

Dockerfile中ADD和COPY的区别(再强调一下)

COPY仅仅是把你需要的文件简简单单拷贝进去镜像一份,而ADD会将拷贝进去的压缩包进行解压。

一个Docker容器能够同时运行多个应用吗

可以,但是一般不推荐。前面提到docker有一个隔离性的优点,如果在容器中同时运行多个,那会导致整个优点消失。不过如果一定得运行多个应用的话,有其他的解决方案,比如:可以用过额外的进程管理机制

希望我的整理能够帮助到大家



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3