1. 程式人生 > >DICOM:docker實現DICOM服務虛擬化

DICOM:docker實現DICOM服務虛擬化

var 博文 fadein blue 共享文件 ads ren split lines

背景:

docker,是一個開源的應用容器引擎,眼下大多應用在部署和運維領域,然而因為全然使用沙箱機制,相互之間能夠看做獨立的主機,且自身對資源的需求也十分有限。遠遠低於虛擬機。甚至非常多時候。能夠直接把容器當做應用本身也沒有不論什麽問題。因此最近正在嘗試將docker應用到傳統DICOM服務領域。


本文作為該系列開篇,主要記錄docker環境配置過程中遇到的奇葩問題,為興許更復雜、更全面的應用做準備。

docker中安裝jdk:

1. 下載docker鏡像

#因為docker官方鏡像網絡不穩定,此處採用時速雲的centos鏡像來演示
docker pull index.tenxcloud.com/tenxcloud/centos

通過docker images 查看本地下載的鏡像(此處使用-a參數羅列出鏡像的所有歷史,興許博文會具體介紹docker鏡像在本地的存儲)。


技術分享

2. 安裝jdk到docker中

(1)首先啟動docker鏡像,創建容器

#使用-v參數,創建共享文件夾,方便jdk包傳入docker容器內部
docker run -d -v /home/dockercluster/Downloads:/home/zssure --privileged=true IMAGE_ID

註:假設須要對/home/zssure文件夾進行拷貝、改動等操作,須要加入–privilleged=true來開啟權限
技術分享
(2)進入docker容器內部

docker exec -ti CONTAINER_ID /bin/bash

技術分享
(3)安裝jdk
進入docker內部。發現時速雲的centos鏡像是最精簡版,缺少非常多經常使用命令。諸如tar、vim、clear等。遇到這樣的問題須要使用yum install 安裝

#查找命令所在的安裝包
yum search COMMAND-NOT-FOUND
#直接安裝查找後的包
yum install search-result-package

技術分享
技術分享
技術分享

3. 提交鏡像,並重新啟動啟動

又一次啟動剛提交的鏡像,直接檢測java是否安裝。發現之前安裝的jdk失效。
技術分享
須要使用

#刷新環境變量
source /etc/profile

才幹使用jdk。

docker環境變量失效問題:

進到鏡像裏,查看/etc/profile,明明是有的。之前通過ssh進去也是能夠啟動的,這是為什麽呢?

linux的啟動過程裏。/etc/profile是在用戶登錄的時候運行。在命令行run的時候可能是不會進行登錄操作,所以沒有對應的環境變量。

可是我們啟動了ssh服務,從遠程是通過登錄進的系統,這時候就會有環境變量了。
解決方式:
(1)使用docker run中的-e參數。直接傳入環境變量
(2)使用Dockfile中的ENV綁定環境變量

FROM centos:latest
ENV JAVA_HOME /usr/local/java/jdk1.8.0_65
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib
ENV PATH $PATH:$JAVA_HOME/bin

方案摘自: How to source /etc/profile and save it in docker?
上述提到的兩種方案。第一種非常適合眼下我們遇到的問題。通過本博文已經找到了解決安裝jdk須要每次刷新環境變量的問題。興許會進一步介紹docker的VOLUME數據卷、網絡環境等細節,終於實現DICOM服務虛擬化部署。




作者:[email protected]
時間:2015-12-27

DICOM:docker實現DICOM服務虛擬化