Docker
- 1.linux厂商不同,开发的函数库和依赖库也不同,但是内核是一样的。
- 2.docker:windows和linux版本是不兼容的,因为内核不同。
- 3.解决软件安装的依赖兼容问题:
- 4.解决不同系统环境的问题:
- 5.Docker(码头装卸工人)概念:dotCloud 公司出品的一款开源的应用容器引擎
- 6.镜像(Image):
- 7.容器(Container):
- 8.docker跟maven仓库类似:
- 9.通俗理解docker:
- 10.镜像会指定版本号:不写默认是最新版本。
- 11.搜索镜像仓库,推荐:https://hub.docker.com/
- 12.容器的状态:运行,停止,暂停。
- 13.外界想要访问容器(小型操作系统),需要容器在linux上映射一个端口。
- 14.centos等操作系统被称为宿主机。
- 15.如何区分当前是在容器或操作系统内部:看主机名是谁。
- 16.容器:相当于一个简单的操作系统(软件+软件需要的依赖库函数库+linux内核),只能用最基本的linux命令。
- 17.linux内核是由c和汇编来写的。
- 18.删除容器的话,需要先关闭容器。
- 19.命令-e和-d是什么意思:
- 20.容器的tomcat为了节约资源,欢迎页等静态资源被删除了,。
- 21.宿主机怎么复制文件到容器中:
- 22.什么是挂载?
- 23.数据卷的作用:
- 24.数据卷:
- 25.不在同网段不能连接数据库。
- 26.生产环境:可能一台Linux服务器上同时部署多个Tomcat
- 27.Docker镜像结构:简单理解为一个按层拆分的文件系统。
- 28.镜像分层的作用:有一些公共的镜像层只需要下载一次就可以了。节约资源。
- 29.私人定做镜像:在原有的层级上面再加一层。
- 30.tomcat是用java开发的嘛?
- 31.Dockerfile:是一个用于描述生产docker镜像的文件。
- 31.官网有软件的dockerfile文件。可以在官网的dockerfile的基础上,编辑自己的需求。写服务编排的时候也可以用到。
- 32.Docker服务编排:批处理部署操作。
- 33.Compose:通过一个配置文件(docker-compose.yml)来管理多个Docker容器。
- 34.docker-compose.yml文件:
- 35.`反引号有什么用?相当于函数调用。
- 36.Docker和VM对比(面试题):
- 37.云服务器可以安装虚拟机嘛?
- 38.虚拟机里面,可以再运行虚拟机,进行套娃嘛
- 39.APK是什么?
- 40.docker总结:
1.linux厂商不同,开发的函数库和依赖库也不同,但是内核是一样的。
2.docker:windows和linux版本是不兼容的,因为内核不同。
3.解决软件安装的依赖兼容问题:
- 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
- 将每个应用放到一个隔离
容器
去运行,避免互相干扰
4.解决不同系统环境的问题:
- Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
- Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行
5.Docker(码头装卸工人)概念:dotCloud 公司出品的一款开源的应用容器引擎
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。
- 容器是完全使用沙箱机制,相互隔离,且性能开销极低。
6.镜像(Image):
- Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
- 镜像可以用来创建docker容器。
- 镜像一般是只读的。
7.容器(Container):
-
镜像中的应用程序运行后形成的进程就是容器(容器是依赖于镜像的产生的),容器是相互隔离的,对外不可见。
-
镜像和容器的关系,images(镜像)和类一样,容器和对象一样。
8.docker跟maven仓库类似:
1)远程的镜像仓库(国外:DockerHub,国内网易云镜像库)
2)本地的镜像库。
3)docker也需要配置镜像加速。
9.通俗理解docker:
1)仓库: 别人做好的现成的镜像,都放在仓库里
2)镜像: 自己要用哪个镜像,就从仓库拉到本地来。
3)镜像就相当于还没激活的容器。
4)容器: 容器就是跑起来的镜像,就是一个完整的工作环境。
10.镜像会指定版本号:不写默认是最新版本。
11.搜索镜像仓库,推荐:https://hub.docker.com/
在docker网站找到对应的版本再下载。
12.容器的状态:运行,停止,暂停。
13.外界想要访问容器(小型操作系统),需要容器在linux上映射一个端口。
容器内的nginx-端口80,也得在linux上映射一个端口。来进行访问。
14.centos等操作系统被称为宿主机。
15.如何区分当前是在容器或操作系统内部:看主机名是谁。
1)itcast:conteos
2)a6827XXX是容器内部
16.容器:相当于一个简单的操作系统(软件+软件需要的依赖库函数库+linux内核),只能用最基本的linux命令。
17.linux内核是由c和汇编来写的。
18.删除容器的话,需要先关闭容器。
19.命令-e和-d是什么意思:
# 创建并启动容器
docker run -d -p 3306:3306 --name=mysql5.7 -e MYSQL_ROOT_PASSWORD=root mysql:5.7 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
1)-e是运行环境(指定编码格式等)。
2)-d是后台运行。
20.容器的tomcat为了节约资源,欢迎页等静态资源被删除了,。
21.宿主机怎么复制文件到容器中:
# 从宿主机复制文件到容器(docker cp 宿主机路径 容器名称:容器路径)
docker cp /tomcat/ROOT/ tomcat8.5:/usr/local/tomcat/webapps/
22.什么是挂载?
1)当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。
2)挂载,指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件
23.数据卷的作用:
数据卷:相当于快捷方式或共享文件夹。
容器可以对数据卷进行读写操作,容器和数据卷相当于同步的,容器删了数据卷也就删了。
1)持久化。
2)外部和容器通信:数据卷相当于宿主机和容器的共享文件夹。
3)容器间的数据交互:数据卷可以供多个容器来访问。
24.数据卷:
- 数据卷是宿主机中的一个目录或文件,它可以被挂载到容器中,在容器中对它的操作可以直接反应到宿主机上
- 一个容器可以被挂载多个数据卷,一个数据卷也可以被多个容器同时挂载(配置文件和项目目录都是分开挂载的)
25.不在同网段不能连接数据库。
26.生产环境:可能一台Linux服务器上同时部署多个Tomcat
27.Docker镜像结构:简单理解为一个按层拆分的文件系统。
是将应用程序需要的函数库、环境、配置、依赖打包而成的。
28.镜像分层的作用:有一些公共的镜像层只需要下载一次就可以了。节约资源。
比如:已经下载了jdk,下载tomcat时就不用下载jdk层了。
29.私人定做镜像:在原有的层级上面再加一层。
30.tomcat是用java开发的嘛?
c和java
1)apache tomcat=Apache http server + Tomcat
2)Apache http server 是由c语言开发,而Tomcat则是由java开发,这也就是为什么,部署Apache Tomcat的时候需要你安装java的原因。
31.Dockerfile:是一个用于描述生产docker镜像的文件。
里面是一条条的指令,每条指令都会对镜像产生一定影响。
31.官网有软件的dockerfile文件。可以在官网的dockerfile的基础上,编辑自己的需求。写服务编排的时候也可以用到。
32.Docker服务编排:批处理部署操作。
1)因为得先启动mysql和redis啥的服务器才能跑java项目。要有一个先后顺序。
2)这些容器需要同时启动,同时停止,如果我们一个个的去操作,就会变的很麻烦,这时候我们就需要一个批量操作容器的工具Compose。
33.Compose:通过一个配置文件(docker-compose.yml)来管理多个Docker容器。
使用步骤:
- 利用 Dockerfile 定义运行环境镜像
- 使用 docker-compose.yml 定义组成应用的各服务
- 运行 docker-compose up 启动应用
- compose down 停止并删除容器 (先批量的stop容器,再remove容器)
34.docker-compose.yml文件:
1)docker-compose.yml 里面其实就是编排好的,根据镜像创建容器的命令集合。
2)docker-compose.yml这个文件的名字是固定的。跟application.yml一个意思。
35.`反引号有什么用?相当于函数调用。
我们使用下面命令先停止并删除所有容器
docker stop `docker ps -q`
docker rm `docker ps -qa`
-q是id号。
36.Docker和VM对比(面试题):
1)虚拟机直接操作计算机硬件,linux虚拟机和windows属于是兄弟(竞争)关系了。
2)容器里面(软件和函数依赖库)(相当于一个进程,开销少。),依赖操作系统的内核,来申请资源。
相同:
容器和虚拟机具有相似的资源隔离和分配优势
不同:
- 容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。
- 传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统
应用场景不同:虚拟机模拟多个电脑环境,docker实现软件安装部署
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘占用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 较差 |
37.云服务器可以安装虚拟机嘛?
可以。
38.虚拟机里面,可以再运行虚拟机,进行套娃嘛
可以,KVM虚拟化(虚拟机装虚拟机,双重套娃)
39.APK是什么?
APK是AndroidPackage的缩写,即Android安装包(apk)。
Android应用程序的代码要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行。
40.docker总结:
- 数据卷挂载目录,实现数据的持久化
- 镜像:分层文件系统组成(复用)
- 制作镜像的二种方式(容器、dockerFile)
- docker服务编排(批处理工具)