成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何構(gòu)建一個Docker鏡像

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

在井陘等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站建設(shè),外貿(mào)營銷網(wǎng)站建設(shè),井陘網(wǎng)站建設(shè)費(fèi)用合理。

8. 高級

本節(jié)我介紹如何自己構(gòu)建一個Docker鏡像,我們將構(gòu)建一個支持scala的運(yùn)行環(huán)境,并且對外開放SSH服務(wù)。

8.1. 構(gòu)建鏡像的兩種方法

構(gòu)建鏡像有兩種方法:

  1. 運(yùn)行并進(jìn)行一個基礎(chǔ)容器(如centos , docker run -it centos /bin/bash),然后安裝需要的環(huán)境,再用commit 將容器保存成新的鏡像

  2. 使用Dockerfile構(gòu)建,這也是推薦的做法

本節(jié)我們僅介紹第2種方法。

8.2. Dockerfile介紹

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

8.3. 構(gòu)建規(guī)劃

根據(jù)需求可以發(fā)現(xiàn)我們安裝的主要環(huán)境有三個:SSH服務(wù)、Java環(huán)境(Scala依賴它)、Scala環(huán)境,與軟件開發(fā)一樣,我們也可以分模塊構(gòu)建,即構(gòu)建三個鏡像:

  1. 只包含SSH服務(wù)的基礎(chǔ)鏡像

  2. 帶SSH及Java環(huán)境的鏡像

  3. 帶SSH、Java及Scala環(huán)境的鏡像

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 表示此鏡像是基于哪個鏡像構(gòu)建的
<2>MAINTAINER 開發(fā)者的信息
<3># 注釋
<4>RUN 常用命令,用于執(zhí)行Linux的命令,多用于安裝組件
<5>ENV 常用命令,用于設(shè)置環(huán)境變量
<6>EXPOSE 表明默認(rèn)對外暴露的端口(docker run -P)
<7>CMD 要執(zhí)行的服務(wù),多條CMD只執(zhí)行最后一條

RUN 參數(shù)的學(xué)問,Docker鏡像是分層的,一個鏡像可能由多個層組成,一次RUN實際上就產(chǎn)生了一層,在編譯Dockerfile的過程中可能出錯,重新編譯時我們會發(fā)現(xiàn)之前已成功編譯的層不會再次被編譯

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. 發(fā)布鏡像

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

  1. 使用 docker push 發(fā)布前要先登錄 docker login

  2. 使用github發(fā)布


介于國內(nèi)網(wǎng)絡(luò)環(huán)境惡劣,第1種方式失敗概率很高,因為它上傳的是生成的鏡像(幾百M(fèi)B到幾G不等),所以推薦使用第2種方式

請先注冊hub.docker.com 及 github.com 的賬號
8.9.1. 使用github發(fā)布鏡像

不要用IE操作,筆者使用IE11hub.docker.com上操作時發(fā)生過不小的困擾。
  • hub.docker.com 上建立github連接

    如何構(gòu)建一個Docker鏡像

  • github中設(shè)置權(quán)限

    如何構(gòu)建一個Docker鏡像

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

    如何構(gòu)建一個Docker鏡像

  • github中設(shè)置這個項目的權(quán)限

    如何構(gòu)建一個Docker鏡像

  • hub.docker.com 上建立自動構(gòu)建項目

    如何構(gòu)建一個Docker鏡像

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

    如何構(gòu)建一個Docker鏡像

  • hub.docker.com 上設(shè)置項目屬性

    如何構(gòu)建一個Docker鏡像

  • 不多時就構(gòu)建好了

    如何構(gòu)建一個Docker鏡像

到此,關(guān)于“如何構(gòu)建一個Docker鏡像”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

文章標(biāo)題:如何構(gòu)建一個Docker鏡像
當(dāng)前鏈接:http://jinyejixie.com/article40/ipiseo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)品牌網(wǎng)站設(shè)計、虛擬主機(jī)品牌網(wǎng)站建設(shè)、服務(wù)器托管、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
英吉沙县| 洛扎县| 新晃| 新乡市| 磐石市| 永平县| 景洪市| 宝丰县| 济阳县| 邢台县| 区。| 井研县| 德清县| 文水县| 武隆县| 通州市| 上思县| 孝义市| 旌德县| 衡阳县| 洛隆县| 保定市| 屏南县| 镇远县| 杂多县| 正宁县| 彰化市| 吉林市| 金平| 连山| 南江县| 荆州市| 奉新县| 卢湾区| 淳安县| 连南| 修文县| 长岭县| 佳木斯市| 黑龙江省| 榕江县|