设为首页 收藏本站
查看: 1949|回复: 0

[经验分享] 制作Docker镜像

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-27 08:50:58 | 显示全部楼层 |阅读模式
有两种方式可以制作docker镜像。
一、使用docker commit命令制作docker镜像1. pull一个centos6.6的基础镜像,并运行一个docker container,然后在其中进行定制化(安装、配置服务等);
[iyunv@localhost ~]# docker pull centos:6.6           
Pulling repository centos            
8b44529354f3: Download complete            
f1b10cd84249: Download complete            
Status: Downloaded newer image for centos:6.6                    
[iyunv@localhost ~]# docker images            
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE            
centos              6.6                 8b44529354f3        4 days ago          202.6 MB            
centos              centos6.6           8b44529354f3        4 days ago          202.6 MB            
[iyunv@localhost ~]# docker run -i -t centos:6.6 bash            
[iyunv@b42c1ba929a9 /]# ls            
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var            
[iyunv@b42c1ba929a9 /]# mkdir /tmp/test.txt            
[iyunv@b42c1ba929a9 /]# exit            
exit
接下来,查看一下container的改动:
[iyunv@localhost ~]# docker ps -a           
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS               NAMES            
b42c1ba929a9        centos:6.6          "bash"              About a minute ago   Exited (0) 22 seconds ago                       berserk_mcclintock   
804a56ce8008        f1b10cd84249        "/bin/echo hello"   22 minutes ago                                                       test                 
[iyunv@localhost ~]# docker diff b42c1ba929a9            
C /tmp            
A /tmp/test.txt            
C /root            
A /root/.bash_history

2. 执行docker commit命令创建一个镜像:
[iyunv@localhost ~]# docker commit -m "new container" b42c1ba929a9 yuanhuan/newcontainer1           
07b146e0be9e98c253122784c3837dd1604f7692e794f3601dad747d41901cd4            
[iyunv@localhost ~]# docker images            
REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE            
yuanhuan/newcontainer1   latest              07b146e0be9e        43 seconds ago      202.6 MB            
centos                   6.6                 8b44529354f3        4 days ago          202.6 MB            
centos                   centos6.6           8b44529354f3        4 days ago          202.6 MB

3. 登录docker,并将该镜像push到docker仓库:
[iyunv@localhost ~]# docker login           
Username: yuanhuan            
Password:            
Email: yuanhuan_2005@126.com            
Login Succeeded            
[iyunv@localhost ~]# docker push yuanhuan/newcontainer1            
The push refers to a repository [yuanhuan/newcontainer1] (len: 1)            
Sending image list            
Pushing repository yuanhuan/newcontainer1 (1 tags)            
f1b10cd84249: Image already pushed, skipping            
8b44529354f3: Image already pushed, skipping            
07b146e0be9e: Image successfully pushed            
Pushing tag for rev [07b146e0be9e] on {https://cdn-registry-1.docker.io ... tainer1/tags/latest}

成功之后,就可以登录docker页面,查看到刚刚制作的镜像了。
wKiom1U8vdrCXWYKAADhUCdiGfM960.jpg

二、使用dockerfile制作镜像创建dockerfile文件:dockerfile.txt,内容如下:
FROM centos           
MAINTAINER YH,        
RUN yum install passwd openssl openssh-server -y            
RUN echo '123456' | passwd --stdin root            
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''            
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''            
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd            
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh            
EXPOSE 22            
CMD ip addr ls eth0 | awk '{print $2}' | egrep -o '([0-9]+\.){3}[0-9]+';/usr/sbin/sshd -D
简要说明:该dockerfile的主要目的是开启sshd服务,以便可以ssh登录,并且设置了root用户的密码。
然后执行下面的命令制作一个镜像:
docker build -t centos:autosshd - < dockerfile.txt
成功之后就可以用docker images查看镜像列表了。

两种方式比较:
使用commit命令比较简单,相当于docker根据container内部执行的命令自动生成了dockerfile,并进行了build,比较适合对dockerfile不熟悉的用户;
而dockerfile的方式显得稍有点复杂,但是比较适合批量处理的场景。dockerfile一次写入,多次运行

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60974-1-1.html 上篇帖子: CentOS 7搭建Docker私有仓库 下篇帖子: 2015炙手可热的Docker容器虚拟化 制作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表