叫板OpenStack:八步用Docker实现私有云
看到各大厂商的云主机,会不会觉得高大上?目前大公司的主流方案是OpenStack,比如某个公司的私有云
其实,我们可以通过Docker可以很容易实现自己的私有云。 下面进入正题。
假设你所在的公司拥有一台功能强悍的服务器,假设是centos,但开发人员,测试人员如果都在这一台主机上进行开发,测试,后果是灾难性的,但由于只有一 台服务器,你们老板甚至还想把这剩余的性能榨取出来搭建一些服务卖给大众...以往的话,开发,测试人员肯定要摔键盘了,这不是坑爹么?但如果你会 Docker,就能很容易实现这一目标,升职加薪,当上总经理,出任CEO,赢取白富美,迎来人生的巅峰呢!
是不是有点小激动了?来吧,哥教你怎么做。 一.升级Centos内核
官方推荐内核使用3.8以上,那我们升到长期稳定版的3.10.
1. [root@iZ2893wjzgyZ ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elre
po.org 2.
3. [root@iZ2893wjzgyZ ~]# rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.
noarch.rpm 4.
5. [root@iZ2893wjzgyZ ~]# yum --enablerepo=elrepo-kernel install kernel-lt -y [root@iZ2893wjzgyZ ~]# vim /etc/grub.conf default=1 改为
default=0 [root@iZ2893wjzgyZ ~]# reboot [root@iZ2893wjzgyZ ~]# uname -a Linux iZ2893wjzgyZ 3.10.65-1.el6.elrepo.x86_64 #1 SMP Sat Jan 17 10:36:35 EST 2015 x86_64 x86_64 x86_64 GNU/Linux
二.安装docker
1. [root@iZ2893wjzgyZ ~]# yum install http://mirrors.yun-idc.com/epel/6/x86_64/epel-r
elease-6-8.noarch.rpm 2.
3. [root@iZ2893wjzgyZ ~]# yum install docker-io
三.启动docker
1. [root@iZ2893wjzgyZ ~]# service docker start Starting cgconfig service
: [ OK ] Starting docker: [ OK ]
四.获取镜像
由于镜像仓库在国内,国内慢的令人发指,推荐有import方式使用镜像(此例采用的此种镜像方案可以很容易安装ssh服务),在
http://openvz.org/Download/templates/precreated中有很多压缩的镜像文件,可以将这些文件下载后采用import方式使用镜像
1. # wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz 2.
3. # cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.0
4 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 MB
这样我们就可以使用这个镜像作为自己的Base镜像 五.实现sshd,在Base镜像基础上生成一个新镜像
1. #docker run -t -i ubuntu:base /bin/bash 2.
3. root@050f6efc5ed6:/# vim /etc/apt/sources.list 4.
5. deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse 6.
7. deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse 8.
9. deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse 10.
11. deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse 12.
13. deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse 14.
15. deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse 16.
17. deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse 18.
19. deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse 20.
21. deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse 22.
23. deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse 24.
25. root@050f6efc5ed6:/# apt-get update 26.
27. 安装supervisor服务 28.
29. root@050f6efc5ed6:/# apt-get supervisor 30.
31. root@050f6efc5ed6:/# cp supervisord.conf conf.d/ 32.
33. root@050f6efc5ed6:/# cd conf.d/ 34.
35. root@050f6efc5ed6:/# vi supervisord.conf 36.
37. ; supervisor config file 38.
39. [unix_http_server] 40.
41. file=/var/run/supervisor.sock ; (the path to the socket file) 42.
43. chmod=0700 ; sockef file mode (default 0700) 44.
45. [supervisord] 46.
47. logfile=/var/log/supervisor/supervisord.log ; (main log file;default
$CWD/supervisord.log) 48.
49. pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default super
visord.pid) 50.
51. childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEM
P) 52.
53. nodaemon=true ;(修改该软件的启动模式为非daemon,否则docker 在执行的时候会直接
退出) 54.
55. [include] 56.
57. files = /etc/supervisor/conf.d/*.conf 58.
59. [program:sshd] 60.
61. command = /usr/sbin/sshd -D ; 62.
63. root@050f6efc5ed6:/# mkdir /var/run/sshd 64.
65. root@050f6efc5ed6:/# passwd root 66.
67. root@050f6efc5ed6:/# vi /etc/ssh/sshd_config 68.
69. root@050f6efc5ed6:/# exit 70.
71. 退出之后自动生成一个容器,接下来把容器commit生成封装了sshd的镜像 72.
73. # docker commit f3c8 ubuntu 74.
75. 5c21b6cf7ab3f60693f9b6746a5ec0d173fd484462b2eb0b23ecd2692b1aff6b 76.
77. [root@iZ2893wjzgyZ tmp]# docker images 78.
79. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 80.
81. ubuntu sshd 02c4391d40a0 47 minutes ago 661.4 MB
六.开始分配容器
1. [root@iZ2893wjzgyZ tmp]# docker run -p 301:22 -d --name test ubuntu /
usr/bin/supervisord 2.
3. [root@iZ2893wjzgyZ tmp]# docker run -p 302:22 -d --name dev ubuntu /u
sr/bin/supervisord 4.
5. [root@iZ2893wjzgyZ tmp]# docker run -p 303:22 -d --name client1 ubunt
u /usr/bin/supervisord 6.
7. ....... 8.
9. [root@iZ2893wjzgyZ tmp]# docker run -p xxxxx:22 -d --name clientN ubu
ntu /usr/bin/supervisord
相关推荐: