Docker:搭建開發環境(執行Eclipse等圖形化介面程式)
Docker搭建開發環境
基本說明
兩個月前的時候自己提出想通過Docker來搭建開發環境(http://blog.csdn.net/zhaodedong/article/details/46549279),能方便地供實驗室的其他同學使用。我所謂的開發環境沒太複雜,只是能在一個docker映象中執行Mysql、Jdk、Eclipse等基本的軟體,但是Eclipse是需要能通過Docker啟動視覺化的介面。
最後這些功能的確能實現了,但是由於經常要在Windows中用PowerDesigner、Visio設計個數據庫畫個流程圖什麼的,Linux就不常作為桌面用了。因此對於Docker最初的設想就沒有使用,時隔兩個月,記錄一下之前的學習過程。
編寫Dockerfile
我使用了Dockerfile來描述開發環境,下面是我寫的一個只安裝Eclipse的Dockerfile,諸如mysql,jdk什麼的比較簡單就不再寫進來了。
FROM ubuntu:14.04
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y libgtk2.0-0 libcanberra-gtk-module
RUN apt-get install -y eclipse
# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/eclipse
Docker Build
不多做描述,網上有很多教程講Docker的基本操作。
docker build -t eclipse .
啟動視覺化的Eclipse
裡面有的引數我也不是特別熟悉,由於沒有深入研究Docker的各個引數,現在也只是處於知其然而不知其所以然的境界。
docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
eclipse
注意
中國的防火牆技術特別強大,但是網上的很多教程要不就是國外的要不就是國內拿過來隨便翻譯的,在這些教程裡面經常會出現RUN apt-get update
這樣的一個操作,這樣是行不通的…….
解決方式就是我在Dockerfile裡面寫的,自己來修改Ubuntu的源,由於是在學校,我用的是清華的源,效果還是不錯的。
總結
Docker是個很好玩的東西,對於比較喜歡新技術的人來說是一個非常值得嘗試的物件。但是有點遺憾,以後的學習和工作不一定能用到Docker了,因此再學習Docker也只能是自己的業餘愛好中玩一玩了。
最初中想在Docker中搭建一個Hadoop叢集的,但是發現如果固定了Docker的IP後,在Docker中安裝Hadoop其實和在虛擬機器中的操作沒什麼太大的區別,就沒有再花時間具體的操作。
倒是看到了一些有趣的開源專案,直接編寫的Dockerfile來配置和安裝一個Hadoop叢集,以後感興趣的話可能會具體地嘗試一下。
參考
國內在Docker方面的資料還有所欠缺,至少在6月份我找資料的時候在各大部落格網站中沒有找到我需要的資料,謹列出對我幫助最大的幾個。