Docke之数据卷管理容器——动静分离

一 、背景阐述

在实际的工作中我们通过容器实现应用程序的拆分,即将一个大的单体应用拆分成多个微服务进行解耦操作,DevOps、微服务化,现在已经成为烂大街的“潮词”。基于这个思路,我们再一次对单个微服务进行再次拆分解耦,实际上应用的拆分基本已经不能再拆了,那我拆什么呢?拆动态代码、拆配置文件、拆输出的日志,拆这个的目的也是受容器的隔离特性启发,我们将动态代码进行更新、配置文件修改,部署在容器外,然后挂在倒容器中使用,但是这样也给数据的安全性带来隐患,不便于维护与快速迁移,为此我借助容器的数据卷容器封装特性对动态代码、配置文件、输出日志进行挂载使用,一方面在服务被攻击后,攻击者即使修改程序配置等信息,他们也无法对运行在其他容器中的程序进行重启等操作,也就无法让修改的内容生效,解决了安全性的同时快速迁移也得到了解决;同时由于攻击者没有访问宿主机的权限,也就无法对服务器本身的配置产生影响或更为严重的后果。

二、通过SSH服务容器管理数据卷容器

由于数据卷容器中的数据卷不方便直接管理,因此,我们通过将数据卷容器的数据卷挂载到另外一个独立的容器中,再通过这个容器修改数据卷中的数据;如下所示:
通过SSH服务管理配置与代码
通过SSH服务容器管理数据,可以是安全性得到一定的提升;

二、实践案例

场景: 若对外提供一个基于Nginx 的Web服务,先将Nginx的配置和静态HTML文件代码分别存放于两个数据卷容器的数据卷中。再创建一个能够提供SSH 服务的容器,用来管理两个数据卷容器所提供的数据。

2.1 具体实现过程:

2.1.1 分别创建用于存放配置和代码的数据卷容器,以及它们提供的数据卷;

# 创建配置数据卷容器
[root@localhost SSHD]# docker create --name config -v /etc/nginx alpine:3.8 echo Nginx Configuration
# 创建静态HTML数据卷容器
[root@localhost SSHD]# docker create --name code -v /var/html alpine:3.8 echo Nginx Configuration

2.1.2 创建一个Nginx 应用程序容器;

只创建,不启动,因为我们是从数据卷容器中挂载配置,而现在存储配置的数据卷中还没有加入配置,所以还不能正确的启动Web 服务;

# 创建一个Nginx应用程序容器,只创建,不启动
[root@localhost SSHD]# docker create --name web --volumes-from code --volumes-from config -p 9081:80 nginx

2.1.3 创建SSH 服务容器实现配置加载和静态文件上传;

通过SSH 服务将配置加到存储配置的数据卷中。自己构建SSH服务镜像或到Docker Hub 上pull一个SSH镜像;

[root@localhost SSHD]# docker run -d -P --name mysshd --volumes-from code --volumes-from config  mydockerssh:v1

2.1.4 启动Nginx Web应用程序

[root@localhost SSHD]# docker start web 

2.1.5 访问Web服务

在这里插入图片描述

总结

安全的远程连接配置容器应用服务器的实践案例如上所示,该案例还可以扩展为对多容器化的应用迭代升级部署;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值