首页 > 网站 > 建站经验 > 正文

详解制作各种docker镜像

2019-11-02 15:51:50
字体:
来源:转载
供稿:网友

做了一个星期的镜像,收货颇多,现在整理记录下来,当做工作笔记吧。把常用的几个镜像的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 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表