Skip to content

Commit 4dc30dc

Browse files
Add files via upload
1 parent ed5099f commit 4dc30dc

20 files changed

+3204
-0
lines changed

Docker.md

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
### Docker
2+
3+
#### 1.什么Docker
4+
5+
Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。
6+
7+
#### 2.Docker与虚拟机有何不同
8+
9+
Docker不是虚拟化方法。它依赖于实际实现基于容器的虚拟化或操作系统级虚拟化的其他工具。为此,Docker最初使用LXC驱动程序,然后移动到libcontainer现在重命名为runc。Docker主要专注于在应用程序容器内自动部署应用程序。应用程序容器旨在打包和运行单个服务,而系统容器则设计为运行多个进程,如虚拟机。因此,Docker被视为容器化系统上的容器管理或应用程序部署工具。
10+
A 容器不需要引导操作系统内核,因此可以在不到一秒的时间内创建容器。此功能使基于容器的虚拟化比其他虚拟化方法更加独特和可取。
11+
B 由于基于容器的虚拟化为主机增加了很少或没有开销,因此基于容器的虚拟化具有接近本机的性能。
12+
C 对于基于容器的虚拟化,与其他虚拟化不同,不需要其他软件。
13+
D 主机上的所有容器共享主机的调度程序,从而节省了额外资源的需求。
14+
E 与虚拟机映像相比,容器状态(Docker或LXC映像)的大小很小,因此容器映像很容易分发。
15+
F 容器中的资源管理是通过cgroup实现的。Cgroups不允许容器消耗比分配给它们更多的资源。虽然主机的所有资源都在虚拟机中可见,但无法使用。这可以通过在容器和主机上同时运行top或htop来实现。所有环境的输出看起来都很相似。
16+
17+
#### 3.什么是Docker镜像
18+
19+
Docker镜像是Docker容器的源代码,Docker镜像用于创建容器。使用build命令创建镜像。
20+
21+
#### 4.什么是Docker容器
22+
23+
Docker容器包括应用程序及其所有依赖项,作为操作系统的独立进程运行。
24+
25+
#### 5.Docker容器有几种状态
26+
27+
四种状态:运行、已暂停、重新启动、已退出。
28+
29+
#### 6.DockerFile中最常见的指定是什么?
30+
31+
| 指令 | 备注 |
32+
| ----- | ---------------------- |
33+
| FROM | 指定基础镜像 |
34+
| LABEL | 功能为镜像指定标签 |
35+
| RUN | 运行指定命令 |
36+
| CMD | 容器启动时要运行的命令 |
37+
38+
#### 7、DockerFile中的命令COPY和ADD命令有什么区别?
39+
40+
COPY和ADD的区别时COPY的SRC只能是本地文件,其他用法一致。
41+
42+
#### 8.Docker的常用命令?
43+
44+
| 命令 | 备注 |
45+
| ------------- | -------------------- |
46+
| docker pull | 拉去或更新指定的镜像 |
47+
| docker push | 将镜像推送到远程仓库 |
48+
| docker rm | 删除容器 |
49+
| docker rmi | 删除镜像 |
50+
| docker images | 列出所有镜像 |
51+
| docker ps | 列出所有容器 |
52+
53+
#### 9.容器与主机之间的数据拷贝命令?
54+
55+
Docker cp命令用于穷奇与主机之间的数据拷贝
56+
57+
- 主机到哦容器:docker cp /www 96f7f14e99ab:/www/
58+
- 容器到主机:docker cp 96f7f14e99ab:/www /tmp
59+
60+
#### 10.启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令?
61+
62+
```
63+
Docker run -d -p --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx
64+
```
65+
66+
#### 11.如何使用 Docker 技术创建与环境无关的容器系统?
67+
68+
Docker 技术有三中主要的技术途径辅助完成此需求:
69+
70+
- 存储卷(Volumes)
71+
- 环境变量(Environment variable)注入
72+
- 只读(Read-only)文件系统
73+
74+
#### 12.有什么方法确定一个 Docker 容器运行状态
75+
76+
使用如下命令行命令确定一个 Docker 容器的运行状态
77+
78+
```
79+
$ docker ps –a
80+
```
81+
82+
这将列表形式输出运行在主机上的所有 Docker 容器及其运行状态。从这个列表中很容易找到想要的容器及其运行状态。
83+
84+
#### 13. Docker Image 和 Docker Layer (层) 有什么不同
85+
86+
Image :一个 Docker Image 是由一系列 Docker 只读层(read-only Layer) 创建出来的。
87+
Layer: 在 Dockerfile 配置文件中完成的一条配置指令,即表示一个 Docker 层(Layer)。
88+
如下 Dockerfile 文件包含 4 条指令,每条指令创建一个层(Layer)。
89+
90+
```
91+
FROM ubuntu:15.04
92+
COPY . /app
93+
RUN make /app
94+
CMD python /app/app.py
95+
```
96+
97+
重点,每层只对其前一层进行一(某)些进化。
98+
99+
#### 14.如何停止所有正在运行的容器?
100+
101+
使用docker kill $(sudo docker ps -q)
102+
103+
#### 15.如何清理批量后台停止的容器?
104+
105+
使用docker rm $(sudo docker ps -a -q)
106+
107+
#### 16.如何临时退出一个正在交互的容器的终端,而不终止它?
108+
109+
按Ctrl+p,后按Ctrl+q,如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。
110+
111+
#### 17.Docker 群(Swarm)是什么
112+
113+
Docker Swarm -- Docker 群 -- 是原生的 Docker 集群服务工具。它将一群 Docker 主机集成为单一一个虚拟 Docker 主机。利用一个 Docker 守护进程,通过标准的 Docker API 和任何完善的通讯工具,Docker Swarm 提供透明地将 Docker 主机扩散到多台主机上的服务。
114+
115+
#### 18.在使用 Docker 技术的产品中如何监控其运行
116+
117+
Docker 在产品中提供如 运行统计和 Docker 事件的工具。可以通过这些工具命令获取 Docker 运行状况的统计信息或报告。
118+
119+
Docker stats : 通过指定的容器 id 获取其运行统计信息,可获得容器对 CPU,内存使用情况等的统计信息,类似 Linux 系统中的 top 命令。
120+
Docker events :Docker 事件是一个命令,用于观察显示运行中的 Docker 一系列的行为活动。
121+
一般的 Docker 事件有:attach(关联),commit(提交),die(僵死),detach(取消关联),rename(改名),destory(销毁)等。也可使用多个选项对事件记录筛选找到想要的事件信息。
122+
123+
#### 19.什么是孤儿卷及如何删除它?
124+
125+
孤儿卷是未与任何容器关联的卷。在 Docker v。1.9 之前的版本中,删除这些孤儿卷存在很大问题。
126+
127+
#### 20.在 Windows 系统上可以运行原生的 Docker 容器吗?
128+
129+
在 'Windows Server 2016' 系统上, 你可以运行 Windows 的原生容器, 微软推出其映像是 'Windows Nano Server' , 一个轻量级的运行在容器中的 Windows 原生系统。 您可以在其中布署基于 .NET 的应用。
130+
131+
译注: 结合 Docker 的基本技术原理,参考后面的 问题 26 和 问题 27, 可推测, 微软在系统内核上开发了对 Docker 的支持, 支持其闭源系统的容器化虚拟技术。但译者认为, Windows 系统本就是闭源紧耦合的系统, 好像你在本机上不装 .NET 组件,各应用能很好运行似的。何必再弄个容器,浪费资源。这只是译者自己之孔见,想喷就喷! 另: Windows Server 2016 版本之后的都可支持这种原生 Docker 技术,如 Windows Server 2018 版。
132+
133+
#### 21.在 非 Linux 操作系统平台上如何运行 Docker ?
134+
135+
容器化虚拟技术概念可能来源于,在 Linux 内核版本 2.6.24 上加入的对 命名空间( namespace) 的技术支持特性。 容器化进程加入其进程 ID 到其创建的每个进程上并且对每个进程中的系统级调用进行访问控制及审查。 其本身是由系统级调用 clone () 克隆出来的进程, 允许其创建属于自己命名空间的进程实例,而区别于之前的,归属与整个本机系统的进程实例。
136+
137+
如果上述在 Linux 系统内核上的技术实现成为可能, 那么明显的问题是如何在 非 Linux 系统上运行容器化的 Docker 。过去, Mac 和 Windows 系统上运行 Docker 容器都使用 Linux 虚拟机(VMs) 技术, Docker 工具箱使用的容器运行在 Virtual Box 虚拟机上。 现在,最新的情况是, Windows 平台上使用的是 Hyper-V 产品技术,Mac 平台上使用的是 Hypervisor.framework (框架)产品技术。
138+
139+
#### 参考链接
140+
141+
https://www.cnblogs.com/xiaoyangjia/p/11388806.html
142+
143+
https://www.wkcto.com/article/detail/662
144+
145+
https://blog.csdn.net/qq_43286578/article/details/105160725
146+
147+
https://learnku.com/server/t/42179
148+
149+
https://www.jianshu.com/p/f11077d7b301

Dubbo.md

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
## Dubbo
2+
3+
4+
#### 1.Dubbo是什么?
5+
6+
Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。
7+
8+
#### 2.为什么要用Dubbo?
9+
10+
因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证了高性能高可用性。
11+
12+
使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。
13+
14+
#### 3.Dubbo 和 Dubbox 有什么区别?
15+
16+
Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如加了服务可 Restful 调用,更新了开源组件等。
17+
18+
#### 4.dubbo都支持什么协议,推荐用哪种?
19+
20+
dubbo://(推荐)
21+
22+
rmi://
23+
24+
hessian://
25+
26+
http://
27+
28+
webservice://
29+
30+
thrift://
31+
32+
memcached://
33+
34+
redis://
35+
36+
rest://
37+
38+
#### 5.Dubbo需要 Web 容器吗?
39+
40+
不需要,如果硬要用 Web 容器,只会增加复杂性,也浪费资源。
41+
42+
#### 6.Dubbo内置了哪几种服务容器?
43+
44+
Spring Container
45+
46+
Jetty Container
47+
48+
Log4j Container
49+
50+
#### 7.Dubbo默认使用什么注册中心,还有别的选择吗?
51+
52+
推荐使用 Zookeeper 作为注册中心,还有 Redis、Multicast、Simple 注册中心,但不推荐。
53+
54+
#### 8.Dubbo有哪几种配置方式?
55+
56+
1)Spring 配置方式
57+
2)Java API 配置方式
58+
59+
#### 9.在 Provider 上可以配置的 Consumer 端的属性有哪些?
60+
61+
1)timeout:方法调用超时
62+
2)retries:失败重试次数,默认重试 2 次
63+
3)loadbalance:负载均衡算法,默认随机
64+
4)actives 消费者端,最大并发调用限制
65+
66+
#### 10.Dubbo启动时如果依赖的服务不可用会怎样?
67+
68+
Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,默认 check="true",可以通过 check="false" 关闭检查。
69+
70+
#### 11.Dubbo推荐使用什么序列化框架,你知道的还有哪些?
71+
72+
推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。
73+
74+
#### 12.Dubbo默认使用的是什么通信框架,还有别的选择吗?
75+
76+
Dubbo 默认使用 Netty 框架,也是推荐的选择,另外内容还集成有Mina、Grizzly。
77+
78+
#### 13.注册了多个同一样的服务,如果测试指定的某一个服务呢?
79+
80+
可以配置环境点对点直连,绕过注册中心,将以服务接口为单位,忽略注册中心的提供者列表。
81+
82+
#### 14.Dubbo支持服务多协议吗?
83+
84+
Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。
85+
86+
#### 15.当一个服务接口有多种实现时怎么做?
87+
88+
当一个接口有多种实现时,可以用 group 属性来分组,服务提供方和消费方都指定同一个 group 即可。
89+
90+
#### 16.服务上线怎么兼容旧版本?
91+
92+
可以用版本号(version)过渡,多个不同版本的服务注册到注册中心,版本号不同的服务相互间不引用。这个和服务分组的概念有一点类似。
93+
94+
#### 17.Dubbo可以对结果进行缓存吗?
95+
96+
可以,Dubbo 提供了声明式缓存,用于加速热门数据的访问速度,以减少用户加缓存的工作量。
97+
98+
#### 18.Dubbo服务之间的调用是阻塞的吗?
99+
100+
默认是同步等待结果阻塞的,支持异步调用。
101+
102+
Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。
103+
104+
#### 19.Dubbo支持分布式事务吗?
105+
106+
目前暂时不支持,后续可能采用基于 JTA/XA 规范实现。
107+
108+
#### 20.Dubbo支持服务降级吗?
109+
110+
Dubbo 2.2.0 以上版本支持。
111+
112+
#### 21.Dubbo如何优雅停机?
113+
114+
Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。
115+
116+
#### 22.服务提供者能实现失效踢出是什么原理?
117+
118+
服务失效踢出基于 Zookeeper 的临时节点原理。
119+
120+
#### 23.如何解决服务调用链过长的问题?
121+
122+
Dubbo 可以使用 Pinpoint 和 Apache Skywalking(Incubator) 实现分布式服务追踪,当然还有其他很多方案。
123+
124+
#### 24.服务读写推荐的容错策略是怎样的?
125+
126+
读操作建议使用 Failover 失败自动切换,默认重试两次其他服务器。
127+
128+
写操作建议使用 Failfast 快速失败,发一次调用失败就立即报错。
129+
130+
#### 25.Dubbo必须依赖的包有哪些?
131+
132+
Dubbo 必须依赖 JDK,其他为可选。
133+
134+
#### 26.Dubbo的管理控制台能做什么?
135+
136+
管理控制台主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。
137+
138+
#### 27.说说 Dubbo 服务暴露的过程。
139+
140+
Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了 ApplicationListener 的 ServiceBean 类进行回调 onApplicationEvent 事件方法,Dubbo 会在这个方法中调用 ServiceBean 父类 ServiceConfig 的 export 方法,而该方法真正实现了服务的(异步或者非异步)发布。
141+
142+
143+
#### 参考资料
144+
145+
https://blog.csdn.net/moakun/article/details/82919804
146+

0 commit comments

Comments
 (0)