做了一個星期的鏡像,收貨頗多,現在整理記錄下來,當做工作筆記吧。把常用的幾個鏡像的Dockerfile分享下。
制作基礎docker鏡像第一步:設置Docker鏡像源
復制代碼 代碼如下:
yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6第二步:安裝 docker-io febootstrap,用來制作centos鏡像,到時候會生成個centos的鏡像。
yum -y install docker-io;如果沒有安裝docker,則需要先安裝docker service docker start ;啟動docker yum -y install febootstrap;制作docker鏡像工具
第三步:作CentOS鏡像文件centos6-image目錄
復制代碼 代碼如下:
febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim -i openssh-server -i openssh-clients -i tar -i gzip centos6 centos6-image http://mirrors.aliyun.com/centos/6/os/x86_64/上一步執行后會生成一個centos6-image文件目錄,上面命令中參數 -i 后面的都是基礎鏡像中安裝的一些服務。如果你不想要這么多服務(因為把所有服務安裝后鏡像會變的非常大)可以只安裝一些基本的,必不可少的服務。centos6是指版本,centos6-image是生成的目錄名稱。
第四步:這時root目錄下沒有任何文件,也不沒有隱藏的點文件,如:.bash_logout .bash_profile .bashrc如果這時制作出來的鏡像使用ssh登錄,會直接進入根目錄下,而一般鏡像都是進入root目錄下的,所以可以在centos6-image目錄的root目錄把.bash_logout .bash_profile .bashrc這三個文件設置一下。
cd centos6-image && cp etc/skel/.bash* root/
第五步:生成最基礎的base鏡像
cd centos6-image && tar -c .|docker import - centos6-base
第六步:查看鏡像,也可以直接進入centos6-base查看
docker images ;這個是查看所有生成的鏡像 docker run -i -t centos:centos6 /bin/bash;進終端(沒有ssh服務),-i 分配終端,-t表示在前臺執行,-d表示在后臺運行
根據基礎鏡像制作ssh的docker鏡像
制作ssh登錄鏡像,最主要的就是Dockerfile(當然這里說的就是Dockerfile這種方法),在某個目錄中新建一個Dockerfile文件(命名一定要為Dockerfile)。
下面來分析下Dockerfile文件:
#Dockerfile FROM centos6-base #表示把某個鏡像作為基礎鏡像,相當于面向對象語言中繼承,表示生成的鏡像里面包含了基礎鏡像的一些服務 MAINTAINER yzh #這是個鏡像作者信息 RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh #上面幾行都是配置ssh登錄目錄和登錄驗證的,而ssh的安裝是在基礎鏡像centos6-base中完成的(-i openssh-server -i openssh-clients) EXPOSE 22 #表示開啟哪個端口號,22號端口是給ssh服務使用的;如果不需要端口號可以注釋掉這行 RUN echo 'root:redhat' | chpasswd #這是修改root密碼,其實這種方法不是很好,因為這是設置root密碼,不是更改 RUN yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 RUN yum install tar gzip gcc vim wget -y #上面是安裝些工具和源 ENV LANG en_US.UTF-8 ENV LC_ALL en_US.UTF-8 #設置環境 CMD /usr/sbin/sshd -D #設置開啟的服務,每個鏡像只能有一個CMD有效 #End
新聞熱點
疑難解答