久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何構建一個Docker鏡像

220次閱讀
沒有評論

共計 4663 個字符,預計需要花費 12 分鐘才能閱讀完成。

這篇文章主要介紹“如何構建一個 Docker 鏡像”,在日常操作中,相信很多人在如何構建一個 Docker 鏡像問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何構建一個 Docker 鏡像”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

8. 高級

本節我介紹如何自己構建一個 Docker 鏡像,我們將構建一個支持 scala 的運行環境,并且對外開放 SSH 服務。

8.1. 構建鏡像的兩種方法

構建鏡像有兩種方法:

運行并進行一個基礎容器(如 centos, docker run -it centos /bin/bash),然后安裝需要的環境,再用 commit  將容器保存成新的鏡像

使用 Dockerfile 構建,這也是推薦的做法

本節我們僅介紹第 2 種方法。

8.2. Dockerfile 介紹

Dokcerfile 是用于構建 Docker 鏡像的元文件,它的說明及語法見: http://docs.docker.com/engine/reference/builder/

8.3. 構建規劃

根據需求可以發現我們安裝的主要環境有三個:SSH 服務、Java 環境(Scala 依賴它)、Scala 環境,與軟件開發一樣,我們也可以分模塊構建,即構建三個鏡像:

只包含 SSH 服務的基礎鏡像

帶 SSH 及 Java 環境的鏡像

帶 SSH、Java 及 Scala 環境的鏡像

8.4. SSH 鏡像

FROM centos:centos7  1 
MAINTAINER gudaoxuri  2 
#---------------Use 163 mirrors---------------  3 
RUN yum install -y wget  \
 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup   \
 wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS7-Base-163.repo   \
 yum clean all   \
 yum makecache  4 
#---------------Install Common Tools---------------
RUN yum install -y sed curl tar gcc gcc-c++ make git passwd sudo
#---------------Modify Time Zone---------------
ENV TZ  Asia/Shanghai   5 
ENV TERM xterm
RUN yum install -y ntpdate   \
 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#---------------Support Chinese---------------
#RUN yum groupinstall -y  Fonts    \
# echo  LANG=\ zh_CN.UTF-8\    /etc/sysconfig/i18n
#---------------Install SSH---------------
RUN yum install -y openssh-server openssh-clients   \
 sed -i  s/UsePAM yes/UsePAM no/g  /etc/ssh/sshd_config   \
 echo  root:123456  | chpasswd   \
 ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key   \
 ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key   \
 mkdir /var/run/sshd
#---------------Setting Common Path---------------
RUN chmod 777 -R /opt/   \
 mkdir /opt/env/   \
 mkdir /opt/workspaces/
EXPOSE 22  6 
CMD [/usr/sbin/sshd ,  -D]  7

1 FROM  表示此鏡像是基于哪個鏡像構建的 2 MAINTAINER  開發者的信息 3 # 注釋 4 RUN  常用命令,用于執行 Linux 的命令,多用于安裝組件 5 ENV  常用命令,用于設置環境變量 6 EXPOSE  表明默認對外暴露的端口(docker run -P) 7 CMD  要執行的服務,多條 CMD 只執行最后一條
RUN  參數的學問,Docker 鏡像是分層的,一個鏡像可能由多個層組成,一次 RUN 實際上就產生了一層,在編譯 Dockerfile 的過程中可能出錯,重新編譯時我們會發現之前已成功編譯的層不會再次被編譯 8.5. 編譯 SSH 鏡像

root@ubuntu:/opt/test/dockerfile/ssh# ls
Dockerfile
root@ubuntu:/opt/test/dockerfile/ssh# docker build -t gudaoxuri/ssh .
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon 
Step 0 : FROM centos:centos7
Pulling repository centos
ce20c473cd8a: Download complete 
ce20c473cd8a: Pulling image (centos7) from centos 
168a69b62202: Download complete 
812e9d9d677f: Download complete 
4234bfdd88f8: Download complete 
Status: Downloaded newer image for centos:centos7
 ---  ce20c473cd8a
Step 1 : MAINTAINER gudaoxuri
 ---  Running in 889ea744c458
 ---  5b1151e6cb0b
Removing intermediate container 889ea744c458
Step 10 : CMD /usr/sbin/sshd -D
 ---  Running in ce563073b686
 ---  b61a4adad85f
Removing intermediate container ce563073b686
Successfully built b61a4adad85f
root@ubuntu:/opt/test/dockerfile/ssh# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
gudaoxuri/ssh latest b61a4adad85f 10 minutes ago 966 MB
...

8.6. Java 鏡像

FROM gudaoxuri/ssh:latest  1 
MAINTAINER gudaoxuri
#---------------Install Java---------------
RUN wget -P /opt/env/ --no-check-certificate --no-cookies --header  Cookie: oraclelicense=accept-securebackup-cookie  http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz   \
 tar -xzf /opt/env/jdk-8u60-linux-x64.tar.gz -C /opt/env/   \
 rm /opt/env/jdk-8u60-linux-x64.tar.gz   \
 mv /opt/env/jdk1.8.0_60 /opt/env/java   \
 echo  export JAVA_HOME=/opt/env/java    /etc/profile
ENV JAVA_HOME /opt/env/java
RUN echo  PATH=$PATH:$JAVA_HOME/bin    /etc/profile
ENV PATH $PATH:$JAVA_HOME/bin

1 gudaoxuri/ssh:latest  就是我們之前編譯的鏡像 8.7. Scala 鏡像

FROM gudaoxuri/java:latest
MAINTAINER gudaoxuri
#---------------Install Scala---------------
RUN wget -P /opt/env/ http://downloads.typesafe.com/scala/2.10.6/scala-2.10.6.tgz   \
 tar -xzf /opt/env/scala-2.10.6.tgz -C /opt/env/   \
 rm /opt/env/scala-2.10.6.tgz   \
 mv /opt/env/scala-2.10.6 /opt/env/scala   \
 echo  export SCALA_HOME=/opt/env/scala    /etc/profile
ENV SCALA_HOME /opt/env/scala
RUN sed /^PATH=/d /etc/profile   /etc/profile   \
 echo  PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin    /etc/profile
ENV PATH $PATH:$JAVA_HOME/bin:$SCALA_HOME/bin

8.8. 編譯 Java/Scala 鏡像

過程同上,略

8.9. 發布鏡像

有了新的鏡像后我們希望把這個鏡像發布到 hub.docker.com 上去分享,有兩種方式:

使用  docker push  發布前要先登錄  docker login

使用 github 發布

介于國內網絡環境惡劣,第 1 種方式失敗概率很高,因為它上傳的是生成的鏡像(幾百 MB 到幾 G 不等),所以推薦使用第 2 種方式
請先注冊 hub.docker.com  及  github.com  的賬號 8.9.1. 使用 github 發布鏡像
不要用 IE 操作,筆者使用 IE11 在 hub.docker.com 上操作時發生過不小的困擾。

在 hub.docker.com  上建立 github 連接

在 github 中設置權限

在 github 中建一個開源項目,注意要包含 Dockerfile 文件

在 github 中設置這個項目的權限

在 hub.docker.com  上建立自動構建項目

在 hub.docker.com  上選擇 github 上的項目

在 hub.docker.com  上設置項目屬性

不多時就構建好了

到此,關于“如何構建一個 Docker 鏡像”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計4663字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 肇州县| 固安县| 凉城县| 容城县| 长子县| 金坛市| 扎鲁特旗| 兰西县| 乌鲁木齐县| 南皮县| 深水埗区| 徐闻县| 东方市| 东辽县| 咸阳市| 讷河市| 广河县| 仁布县| 晋州市| 高要市| 三江| 盘锦市| 高州市| 商丘市| 黄冈市| 瓮安县| 吉隆县| 博罗县| 惠州市| 龙南县| 晋江市| 铜山县| 红桥区| 大兴区| 林西县| 白银市| 吴川市| 藁城市| 云梦县| 子洲县| 平顺县|