DICOM:docker實現DICOM服務虛擬化
背景:
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服務虛擬化