- 什么是Docker?
Docker是一款可以解决运行环境和配置问题的软件容器引擎,
方便做持续集成并有助于整体发布的容器虚拟化技术
- 为什么需要Docker或者Docker的优势是什么?
1、交付物标准化
Docker是软件工程领域的“标准化”交付组件,最恰到好处的类比是“集装箱”。
集装箱将零散、不易搬运的大量物品封装成一个整体,集装箱更重要的意义在于它提供了一种通用的封装货物的标准,卡车、火车、货轮、桥吊等运输或搬运工具采用此标准,隧道、桥梁等也采用此标准。以集装箱为中心的标准化设计大大提高了物流体系的运行效率。
传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。Docker的标准化交付物称为“镜像”,它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。
2、一次构建,多次交付
类似于集装箱的“一次装箱,多次运输”,Docker镜像可以做到“一次构建,多次交付”。当涉及到应用程序多副本部署或者应用程序迁移时,更能体现Docker的价值。
3、应用隔离
集装箱可以有效做到货物之间的隔离,使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。
- Docker与虚拟机有何不同
- Docker是如何工作的?
- Docker中的镜像、容器、仓库分别是什么意思?
镜像:Docker的镜像实际上由一层一层的文件系统组成
容器:Docker容器是由Docker镜像创建的运行实例。
仓库:Docker 仓库是用来包含镜像的位置
- Docker容器有几种状态?
Dockerfile
用于创建image镜像的模板文件,出于管理和安全的考虑,docker官方建议所有的镜像文件应该由dockerfile来创建,而当前不少用户把docker当虚拟机来使用,甚至容器中安装SSH,从安全的角度,这是不恰当的。
Image
镜像文件,对比PC端的概念,我们可以把它理解为服务器端的可执行软件包。一旦打包生成,如存在安全问题,那这些问题也被一并打包,最后导致安全事件。
Container
运行起来的image文件就是容器了,从外来看就是一个应用,可对外提供服务了。
所以不难发现,docker容器的生命周期,就是一个镜像文件从产生、运行到停止的过程。
- 有没有办法识别Docker容器的状态?
查看所有doker状态:docker ps -a
查看容器(我的容器名tf-serving)的状态
docker stats tf-serving
停止和开启容器
docker stop -f 容器
docker start 容器、
- 能说几个Docker的常用命令吗?
启动容器,比如tomcat
1.docker run-itd-p 60001:8080 tomcat:9.0
2.docker run-p 60001:8080 docker.io/tomcat
进入容器目录下
docker exec-it containerId/bin/bash
将war复制到webapps目录下
docker cp xxx.war containerID:/usr/1ocal/tomcat/webapps/
- 什么是Dockerfile?
(1)Dockerfile是一个描述文件,里面包含若干条命令,每条命令都会对基础文件系统创建新的层次结构。
(2)dockerfile用于快速有序且直观地完成对镜像的定制。
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
- Dockerfile的常用指令有哪些?
FROM 基础镜像
COPY 复制文件
ADD 添加文件
RUN 要执行的命令
CMD 容器启动时要执行的命令
EXPOSE 默认向外暴漏端口
VOLUME 创建挂载点
WORKDIR 工作目录
USER 当前操作用户
- Docker的数据卷有了解过吗?它的作用是什么?
数据卷是一个可以供一个或多个容器使用的特殊目录。
可以达到以下目的:
1. 绕过“拷贝写”系统,以达到本地磁盘IO的性能,(比如运行一个容器,在容器中对数据卷修改内容,会直接改变宿主机上的数据卷中的内容,所以是本地磁盘IO的性能,而不是先在容器中写一份,最后还要将容器中的修改的内容拷贝出来进行同步。)
2. 绕过“拷贝写”系统,有些文件不需要在docker commit打包进镜像文件。
3. 在多个容器间共享目录
4. 在宿主和容器间共享目录
5. 在宿主和容器间共享一个文件。
- 容器与宿主机之间如何进行数据拷贝?
docker cp <containerId>:/file/path/within/container /host/path/target
- Docker的服务编排有过了解吗?如何实现?
- docker有3大核心:镜像、容器、仓库
15.Docker的思想:集装箱,标准化,隔离