Docker面试题
转载yongfit
Docker容器
1、docker的优点
提高服务器资源利用率、快速搭建新技术环境,不用学习复杂的部署环境、完美构建微服务部署环境、一次构建多次部署、快速部署、迁移、回滚、不依赖底层环境
相对于传统虚拟机,占用资源更少、启动更快、可移植性强,一次交付多次使用
2、docker的缺点
单纯用docker的话,网络是个问题,容器之间不能通信,排查问题比较麻烦
3、docker的网络模式
host:主机网络。docker容器和主机共用一个ip地址。
none:无指定网络。启动容器时,可以通过--network=none,docker容器不会分配局域网ip
container:指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。
bridge:网络桥接。默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应ip地址。
4、dockerfile
FROM 指定基础镜像
LABEL 为镜像指定标签
RUN 运行命令
ENV 设定环境变量
ADD 添加文件到容器: 压缩包 自动帮你解压
COPY 文件拷贝
WORKDIR 指定工作目录
EXPOSE 暴露端口
CMD 指定要运行的命令
通过dockerfile构建镜像的时候尽量把命令写到一行,因为dockerfile创建镜像是一层一层创建的,如果命令行太多,会导致镜像比较大,写在一行的话,能够减小镜像的大小
5、docker三大核心组件
docker registeries docker仓库
docker images docker镜像
docker containers docker容器
6、docker三大组成要素:
命名空间:命名空间保证了容器之间彼此互不影响。容器隔离,pid、net、mnt、user、hostname
资源限制:cgroups 资源(内存、cpu)
文件系统:overlay2
7、docker中的cmd和entrypoint的区别
CMD:如果在dockerfile中的CMD中有了[“/bin/bash”,”-c”],那么就不用再执行的时候在添加了,如果添加了参数的话就相当于要执行你添加的参数,默认的CMD中的参数就无效了。
ENTRYPOINT:dockerfile中有ENTRYPOINT[“tail”,”-f”,”/var/log/nginx/access.log”],那么启动的时候镜像就执行了这里面的内容,如果你像上面带参数的话就相当于在这个执行的内容后面再加入参数。
8、查看容器的cpu和内存情况
docker stats
9、查看容器的详细信息(包括镜像、、、)
docker inspect