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

[经验分享] Docker入门——image制作

[复制链接]

尚未签到

发表于 2015-4-17 10:01:06 | 显示全部楼层 |阅读模式
  制作初始模板
  模板的制作在之前的一篇已经简单介绍过了,下边是这两天遇到的比较蛋疼的问题和收获的经验,分享给大家避免走弯路。
  所谓的模板就是一个通用的底层,其他应用都可以以最小修改的方式完成应用的部署,当然模板也需要轻便和精简。



mount /dev/sr0 /mnt
febootstrap -i iputils -i vim-common -i openssh-server -i yum -i passwd -i wget -i git -i telnet rhel redhat file:///mnt/   #这个软件包需要epel的,需要fakeroot支持,fedora的貌似不是一样的工具
  我选了几个比较重要的包,在使用中经常需要安装
  打包上传到docker上,基本的任务就算完成了。



tar -c . | docker import - rhel65
  查看一下上传好的images



[iyunv@craft redhat]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
rhel65              latest              9feee56f6c68        48 seconds ago      385.4 MB
  其实网上有许多已经成型各种应用的模板可以下载,通过



[iyunv@craft redhat]# docker search nginx
NAME                                     DESCRIPTION                                     STARS     OFFICIAL   TRUSTED
walm/nginx                               Nginx 1.4.3                                     0                    
dockerfile/nginx                         Trusted Nginx (http://nginx.org/) Build         3                    [OK]
bconklin/nginx                           Test nginx module                               0                    
stapelberg/nginx                         nginx 1.4.4-1 from Debian                       0                    
yoshiso/nginx                            centos6.5 with nginx works on port 80           0                    
mguymon/nginx                            Basic nginx container for Ubuntu 13.04          1                    [OK]
michaloo/nginx                           This is nginx compiled on ubuntu base image.    0                    
mmckeen/nginx                            Nginx application image based on an openSU...   0                    [OK]
.....................
  但是因为docker的服务器在墙外。。。可以通过http代理完成下载,不过我还是认为很多东西必须自己做 才有意义,才放心使用。
  上传之后发现一个比较蛋疼的问题,我之前做基础包的时候都是讲yum源配好的,现在已经上传完了,但yum源还没有配置,是不是要重新打包上传呢?
  答案是no,no,no!
  我们先启动一个容器(还是叫VM比较习惯,下边统称为VM)



docker run -t -i -v /mnt/:/mnt/ rhel65 bash   #-t 伪终端   -i标准输出   -v 目录重定向   rhel65 是images的名字   bash是启动VM执行的命令
  启动一个无名氏虚拟机(因为没有指定--name参数)(-i参数是shell终端直接进入到vm的终端,所以需要重启起一个终端才能查看)



[iyunv@craft ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2e3537df5275        rhel65:latest       bash                37 seconds ago      Up 36 seconds                           sharp_archimede
  VM此时的状态



bash-4.1#
  因为我们在定制虚拟机模板的时候已经安装好了ssh服务,所以可以直接启动



bash-4.1# /etc/init.d/sshd start
Generating SSH1 RSA host key:                              [  OK  ]
Generating SSH2 RSA host key:                              [  OK  ]
Generating SSH2 DSA host key:                              [  OK  ]
Starting sshd:                                             [  OK  ]
bash-4.1# ifconfig    #通过ifconfig 我们可以看到虚拟机的ip地址为172.17.0.2 通过宿主用ssh可以直接连接。
eth0      Link encap:Ethernet  HWaddr F2:38:51:9B:15:F4  
inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
inet6 addr: fe80::f038:51ff:fe9b:15f4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:368 (368.0 b)  TX bytes:368 (368.0 b)
  使用ssh连接到VM(记得要先修改虚拟机的密码)



[iyunv@craft ~]# ssh 172.17.0.2
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
RSA key fingerprint is f2:8b:83:3d:8f:34:8a:28:7c:88:4e:12:35:ab:03:24.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.0.2' (RSA) to the list of known hosts.
root@172.17.0.2's password:
Connection to 172.17.0.2 closed.
  连接错误了,此时需要修改ssh的配置文件,将PAM禁用



bash-4.1# sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config   #修改sshd配置文件
bash-4.1# /etc/init.d/sshd restart                    #重启sshd服务
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
  再尝试连接



[iyunv@craft ~]# ssh 172.17.0.2
root@172.17.0.2's password:
Last login: Thu Jan 16 01:38:27 2014 from 172.17.42.1
-bash-4.1#
  发现终端很丑有木有,因为没有执行/etc/bashrc 生成环境变量
  我们将宿主的bash脚本拷贝到VM中



[iyunv@craft ~]# scp .bash* 172.17.0.2:/root/
root@172.17.0.2's password:
.bash_history                                                                                                                                                                                100%   16KB  15.9KB/s   00:00   
.bash_logout                                                                                                                                                                                   100%   18     0.0KB/s   00:00   
.bash_profile                                                                                                                                                                                  100%  176     0.2KB/s   00:00   
.bashrc                                                                                                                                                                                        100%  176     0.2KB/s   00:00   

  重新连接ssh即可。
  下边配置下yum源



bash-4.1# cat > /etc/yum.repos.d/base.repo        
[local]
name=local
baseurl=file:///mnt/
enabled=1
gpgcheck=0
  基本的配置已经做好了,我们将配置信息推送回模板,这样等下次需要一个VM时就不需要以上麻烦的初始化了。



[iyunv@craft ~]# docker ps      #查看一下VM的信息,Container id
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2e3537df5275        rhel65:latest       bash                15 minutes ago      Up 15 minutes                           sharp_archimede     
[iyunv@craft ~]# docker commit 2e rhel65-new  #执行合并命令,2e是VM container id的简写,可以直接识别到虚拟机 rhel65-new是合并新模板的名字,也可以覆盖原有模板
78efa95a25888cac0b7f98e325c465bcf14f7008e62b09f80287091c882fdd93
[iyunv@craft ~]# docker images    #查看所有的模板,现在有两个模板
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
rhel65-new          latest              78efa95a2588        13 seconds ago      385.4 MB
rhel65              latest              9feee56f6c68        23 minutes ago      385.4 MB
  通过新模板启动一个VM



[iyunv@craft ~]# docker run -i -t -p 22 rhel65-new bash  # -p是将VM的22端口指向到宿主机,如果没有指定,则会随机分配一个。
bash-4.1# ls -a    #查看下刚才修改过的地方,发现已经生效了
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
  使用ssh连接到VM,首先需要在VM启动sshd服务



[iyunv@craft ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
cf34cd94a055        rhel65-new:latest   bash                5 minutes ago       Up 5 minutes        0.0.0.0:49153->22/tcp   kickass_turing      
2e3537df5275        rhel65:latest       bash                24 minutes ago      Up 24 minutes                               sharp_archimede


Xshell:\> ssh 192.168.91.142 49153  #是宿主机的ip 和端口
  如果不希望启动一个VM后直接进入到VM的终端,而是希望后台运行,通过ssh服务连接的话可以尝试下



[iyunv@craft ~]# docker run -t -d  rhel65-new /usr/sbin/sshd -D
9710b69c0fafdea8b1790b2406fe664e85a45038675c3feeb31880fd20d6c602
[iyunv@craft ~]# docker inspect 97 | grep IPAddress
"IPAddress": "172.17.0.5",
[iyunv@craft ~]# ssh 172.17.0.5
The authenticity of host '172.17.0.5 (172.17.0.5)' can't be established.
RSA key fingerprint is f2:8b:83:3d:8f:34:8a:28:7c:88:4e:12:35:ab:03:24.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.0.5' (RSA) to the list of known hosts.
root@172.17.0.5's password:
Last login: Thu Jan 16 01:41:08 2014 from 172.17.42.1
[iyunv@9710b69c0faf ~]#
  或者直接通过端口转发



[iyunv@craft ~]# docker run -t -d  -p 10010:22 rhel65-new /usr/sbin/sshd -D
e0568b009603143c7838cf2afe1771de77a570ccacfcd27de3a75d2f47b360f6
[iyunv@craft ~]# ssh 192.168.91.142 -p 10010
The authenticity of host '[192.168.91.142]:10010 ([192.168.91.142]:10010)' can't be established.
RSA key fingerprint is f2:8b:83:3d:8f:34:8a:28:7c:88:4e:12:35:ab:03:24.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.91.142]:10010' (RSA) to the list of known hosts.
root@192.168.91.142's password:
Last login: Thu Jan 16 01:41:08 2014 from 172.17.42.1
[iyunv@e0568b009603 ~]#
  
  
  最后值得提醒的是 记得宿主上要关闭selinux。
  
  下一次会分享,通过Dockerfile 创建VM
  欢迎加入 Docker部落:345819364
  

运维网声明 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-58035-1-1.html 上篇帖子: docker 安装hadoop 下篇帖子: docker底层技术概览
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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