DICOM:试玩Docker发布C-STORE SCP服务

背景:

还记得博客中很久之前写过一篇Windows环境下试玩Docker的水文,当时自然是出于好奇心态,对Docker略知一二。近两年随着dotCloud公司推出Docker并围绕之创建了生态体系,Docker容器虚拟化技术已经火遍了整个互联网。
加之近期邮箱收到了多封诸如灵雀云、时速云的推广邮件,又重新燃起了试玩Docker的冲动。此次当然依然是不求甚解,仅仅把Docker当做虚拟机来使用。由于Docker自身资源需求低,启动和停止十分快速,这里我们直接把Docker容器当做应用本身来看待。简而言之,Docker就是我们开发应用的一个托管容器,是高于进程之上的一种隔离方式

下面以我专栏中常常介绍的DICOM服务为例,介绍一下Docker容器的使用。这里为了演示,以灵雀云为例进行介绍(注:绝无打广告的意思,之所以使用灵雀云仅仅是因为收到的第一份关于Docker的推广邮件是来自于灵雀云的,另外平台中第一个容器实例免费^_^。)
PS:关于Docker技术的底层研究,后续有时间也会钻研一下,以便更好的应用于实际环境中。

Docker中部署C-STORE服务:灵雀云容器服务

1. 灵雀云部署交互功能的Ubuntu14.04服务:

关于Docker细节的东西这里不讲,因为自己也不甚了解。简单的当做虚拟机来用。那么使用虚拟机之前自然需要一个操作系统的镜像(类似于VMWare中使用的iso镜像文件)。参考灵雀云官方文档第三章 像用物理机一样 一个具有交互功能的ubuntu服务,我们创建一个Docker容器实例:
DICOM:试玩Docker发布C-STORE SCP服务_第1张图片
灵雀云部署的ubuntu镜像默认值开启了SSH等于的22端口,用于远程登录。通过更新ubuntu服务,开启一个direct-endpoint端口(此处设为11112),用于我们远程登录灵雀云主机时转发请求到内部的Ubuntu容器内。(详情参考第五章 与外界通信 给服务配置端口和域名)。
开启后查看我们的容器服务如下多出了一个端口:
DICOM:试玩Docker发布C-STORE SCP服务_第2张图片

2. 灵雀云容器中安装storescp服务:

  1. 安装jdk环境:

    apt-cache search jdk
    apt-get install openjdk-6-jdk
    java -version//测试安装是否完成

  2. 下载dcm4che工具包:

    apt-get install wget//安装网路下载工具
    apt-get install unzip//安装解压工具,因为dcm4che用zip压缩的
    wget http://jaist.dl.sourceforge.net/project/dcm4che/dcm4che3/3.3.7/dcm4che-3.3.7-bin.zip//下载dcm4che-3.3.7二进制包
    unzip dcm4che-3.3.7-bin.zip

  3. 启动storescp服务:

    cd ./dcm4che-3.3.7
    cd ./bin
    ./storescp -b STORESCP@localhost:11112//使用之前开放的11112端口,否则无法接收到外部的请求

3. 请求灵雀云容器的storescp服务:

DICOM:试玩Docker发布C-STORE SCP服务_第3张图片
查看灵雀云主机内容器11112端口对外映射的端口号,如上图为44690。启动cmd命令行,输入:

storescu -c [email protected]:44690 1.dcm

4. 服务端和客户端日志:

storescp服务端日志:
DICOM:试玩Docker发布C-STORE SCP服务_第4张图片
storescp服务端ubuntu1404容器内的数据:
DICOM:试玩Docker发布C-STORE SCP服务_第5张图片
storescu客户端日志:
DICOM:试玩Docker发布C-STORE SCP服务_第6张图片

总结:

至此,我们使用Docker容器来发布DICOM的C-STORE服务端的尝试已经完成,通过托管在灵雀云中的Docker容器实例,我们获得了一个公网接收DICOM文件存储的简易服务器,随时随地可以上传数据到我们的云主机。当然这里还未考虑到Docker容器与宿主主机间数据卷的绑定端口的映射等等技术细节,后续会逐步补充完善该Docker容器实例,最终会搭建一个安全便捷的医学图像存储服务。




作者:[email protected]
时间:2015-10-24

你可能感兴趣的:(docker,DICOM,C-STORE)