Merge branch 'master' of https://github.com/cxjava/docker_practice into cxjava-master

Conflicts:
	security/control_group.md
	security/daemon_sec.md
	security/kernel_capability.md
	security/kernel_ns.md
pull/15/head
Baohua Yang 2014-09-22 10:04:22 +08:00
commit 71f0f50f27
6 changed files with 7 additions and 8 deletions

View File

@ -24,7 +24,7 @@ root@ac6474aeb31d:~# ip a
valid_lft forever preferred_lft forever
```
这样就可以把这个网络看成是一个私有的网络通过nat 连接外网,如果要让外网连接到容器中,就需要做端口映射,即-p参数更多原理参见本文第六小节
如果在企业内部应用,或做多个物理主机的集群,可能需要将多个物理主机的容器组到一个物理网络中来,那么就需要将这个网桥桥接到我们指定的网卡上。
如果在企业内部应用,或做多个物理主机的集群,可能需要将多个物理主机的容器组到一个物理网络中来,那么就需要将这个网桥桥接到我们指定的网卡上。
###拓扑图
主机A和主机B的网卡一都连着物理交换机的同一个vlan 101,这样网桥一和网桥三就相当于在同一个物理网络中了而容器一、容器三、容器四也在同一物理网络中了他们之间可以相互通信而且可以跟同一vlan中的其他物理机器互联。

View File

@ -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目录启动即可。这样在公司内部的开发、测试基本就统一了不会出现开发部门提交的代码测试部门部署不了的问题。

View File

@ -1,5 +1,5 @@
##使用 Supervisor来管理进程
docker 容器在启动的时候开启单个进程比如一个ssh或apache 的daemon服务。但我们经常需要在一个机器上开启多个服务这可以有很多方法最简单的就是把多个启动命令方到一个启动脚本里面启动的时候直接启动这个脚本另外就是安装进程管理工具。
docker 容器在启动的时候开启单个进程比如一个ssh或apache 的daemon服务。但我们经常需要在一个机器上开启多个服务这可以有很多方法最简单的就是把多个启动命令方到一个启动脚本里面启动的时候直接启动这个脚本另外就是安装进程管理工具。
本小节将使用进程管理工具supervisor来管理容器中的多个进程。使用Supervisor可以更好的控制、管理、重启我们希望运行的进程。在这里我们演示一下如何同时使用ssh和apache服务。

View File

@ -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

View File

@ -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等。其它的业务服务都放到容器中去运行。

View File

@ -3,7 +3,7 @@ Docker容器和LXC容器很相似所提供的安全特性也差不多。当
名字空间提供了最基础也是最直接的隔离,在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用。
每个容器都有自己独有的网络栈意味着它们不能访问其他容器的sockets或接口。不过如果主机系统上做了相应的设置容器可以像跟主机交互一样的和其他容器交互。当指定公共端口或使用links来连接2个容器时容器就可以相互通信了可以根据配置来限制通信的策略
每个容器都有自己独有的网络栈意味着它们不能访问其他容器的sockets或接口。不过如果主机系统上做了相应的设置容器可以像跟主机交互一样的和其他容器交互。当指定公共端口或使用links来连接2个容器时容器就可以相互通信了可以根据配置来限制通信的策略
从网络架构的角度来看,所有的容器通过本地主机的网桥接口相互通信,就像物理机器通过物理交换机通信一样。