diff --git a/cases/container_connect.md b/cases/container_connect.md index b20ae47..6b0c30d 100644 --- a/cases/container_connect.md +++ b/cases/container_connect.md @@ -24,7 +24,7 @@ root@ac6474aeb31d:~# ip a valid_lft forever preferred_lft forever ``` 这样就可以把这个网络看成是一个私有的网络,通过nat 连接外网,如果要让外网连接到容器中,就需要做端口映射,即-p参数(更多原理参见本文第六小节) -如果在企业内部应用,或则做多个物理主机的集群,可能需要将多个物理主机的容器组到一个物理网络中来,那么就需要将这个网桥桥接到我们指定的网卡上。 +如果在企业内部应用,或者做多个物理主机的集群,可能需要将多个物理主机的容器组到一个物理网络中来,那么就需要将这个网桥桥接到我们指定的网卡上。 ###拓扑图 主机A和主机B的网卡一都连着物理交换机的同一个vlan 101,这样网桥一和网桥三就相当于在同一个物理网络中了,而容器一、容器三、容器四也在同一物理网络中了,他们之间可以相互通信,而且可以跟同一vlan中的其他物理机器互联。 diff --git a/cases/environment.md b/cases/environment.md index 6450e37..7edb479 100644 --- a/cases/environment.md +++ b/cases/environment.md @@ -7,7 +7,7 @@ ![企业应用结构](../_images/enterprise_usage.png) -Docker占用资源小,在一台E5 128G内存的服务器上部署100个容器都绰绰有余,可以单独抽一个容器或则直接在宿主物理主机上部署samba,利用samba的home分享方案将每个用户的home目录映射到开发中心和测试部门的windows机器上。 +Docker占用资源小,在一台E5 128G内存的服务器上部署100个容器都绰绰有余,可以单独抽一个容器或者直接在宿主物理主机上部署samba,利用samba的home分享方案将每个用户的home目录映射到开发中心和测试部门的windows机器上。 针对某个项目组,由架构师搭建好一个标准的容器环境供项目组和测试部门使用,每个开发工程师可以拥有自己单独的容器,通过`docker run -v` 将用户的home目录映射到容器中。需要提交测试时,只需要将代码移交给测试部门,然后分配一个容器使用`-v` 加载测试部门的home目录启动即可。这样,在公司内部的开发、测试基本就统一了,不会出现开发部门提交的代码,测试部门部署不了的问题。 diff --git a/cases/supervisor.md b/cases/supervisor.md index cb08b36..6e7a5a1 100644 --- a/cases/supervisor.md +++ b/cases/supervisor.md @@ -1,5 +1,5 @@ ##使用 Supervisor来管理进程 -docker 容器在启动的时候开启单个进程,比如,一个ssh或则apache 的daemon服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令方到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具。 +docker 容器在启动的时候开启单个进程,比如,一个ssh或者apache 的daemon服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令方到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具。 本小节将使用进程管理工具supervisor来管理容器中的多个进程。使用Supervisor可以更好的控制、管理、重启我们希望运行的进程。在这里我们演示一下如何同时使用ssh和apache服务。 diff --git a/cases/tomcat.md b/cases/tomcat.md index 1bb8b16..c50b697 100644 --- a/cases/tomcat.md +++ b/cases/tomcat.md @@ -68,8 +68,8 @@ docker run -d -v -p 206:22 -p 7005:8080 -v /home/data:/opt/data --name tm3 tomca * 部署一个集群应用程序,只需要安装一次应用到集群上即可 缺点是: * docker配置复杂了 -* 没办法自动扩展集群的计算容量,如需添加节点,需要在administrator上先创建节点,然后再配置心的容器supervisor启动脚本,然后再启动容器 -另外种方法是将所有的程序都安装在adminiserver上面,需要扩展的时候,启动多个节点即可,它的优点和缺点和上一中方法恰恰相反。(目前我使用这种方式来部署开发和测试环境) +* 没办法自动扩展集群的计算容量,如需添加节点,需要在administrator上先创建节点,然后再配置新的容器supervisor启动脚本,然后再启动容器 +另外种方法是将所有的程序都安装在adminiserver上面,需要扩展的时候,启动多个节点即可,它的优点和缺点和上一种方法恰恰相反。(目前我使用这种方式来部署开发和测试环境) ``` docker run -d -v -p 204:22 -p 7001:7001 -v /home/data:/opt/data --name node1 weblogic /usr/bin/supervisord docker run -d -v -p 205:22 -p 7002:7001 -v /home/data:/opt/data --name node2 weblogic /usr/bin/supervisord diff --git a/security/daemon_sec.md b/security/daemon_sec.md index 3c128f3..eae03cd 100644 --- a/security/daemon_sec.md +++ b/security/daemon_sec.md @@ -7,7 +7,7 @@ 为了加强对服务端的保护,Docker的REST API(客户端用来跟服务端通信)在0.5.2之后使用本地的Unix套接字机制替代了原先绑定在127.0.0.1上的TCP套接字,因为后者容易遭受跨站脚本攻击。现在用户使用Unix权限检查来加强套接字的访问安全。 -用户仍可以利用HTTP提供REST API访问。建议使用安全机制,确保只有可信的网络或VPN,或证书保护机制(例如受保护的stunnel和ssl认证)可以进行访问。此外,还可以使用HTTPS和证书来加强保护。 +用户仍可以利用HTTP提供REST API访问。建议使用安全机制,确保只有可信的网络或VPN,或证书保护机制(例如受保护的stunnel和ssl认证)下的访问可以进行。此外,还可以使用HTTPS和证书来加强保护。 最近改进的Linux名字空间机制将可以实现使用非root用户来运行全功能的容器。这将从根本上解决了容器和主机之间共享文件系统而引起的安全问题。 @@ -16,4 +16,3 @@ * 允许Docker服务端在非root权限下运行,利用安全可靠的子进程来代理执行需要特权权限的操作。这些子进程将只允许在限定范围内进行操作,例如仅仅负责虚拟网络设定或文件系统管理、配置操作等。 最后,建议采用专用的服务器来运行Docker和相关的管理服务(例如管理服务比如ssh 监控和进程监控、管理工具nrpe、collectd等)。其它的业务服务都放到容器中去运行。 - diff --git a/security/kernel_ns.md b/security/kernel_ns.md index 739f211..af11312 100644 --- a/security/kernel_ns.md +++ b/security/kernel_ns.md @@ -3,7 +3,7 @@ Docker容器和LXC容器很相似,所提供的安全特性也差不多。当 名字空间提供了最基础也是最直接的隔离,在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用。 -每个容器都有自己独有的网络栈,意味着它们不能访问其他容器的sockets或接口。不过,如果主机系统上做了相应的设置,容器可以像跟主机交互一样的和其他容器交互。当指定公共端口或则使用links来连接2个容器时,容器就可以相互通信了(可以根据配置来限制通信的策略)。 +每个容器都有自己独有的网络栈,意味着它们不能访问其他容器的sockets或接口。不过,如果主机系统上做了相应的设置,容器可以像跟主机交互一样的和其他容器交互。当指定公共端口或使用links来连接2个容器时,容器就可以相互通信了(可以根据配置来限制通信的策略)。 从网络架构的角度来看,所有的容器通过本地主机的网桥接口相互通信,就像物理机器通过物理交换机通信一样。