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

[经验分享] docker 实战---安装一个基础镜像 (一)

[复制链接]

尚未签到

发表于 2015-10-13 07:11:53 | 显示全部楼层 |阅读模式
  泡了几天官网,对docker有了一点了解。准备着手搭建一个公司的开发测试环境,包括java、python。

环境介绍
  首先说明一下我的环境
  2台物理服务器(后面简称主机)
  主机A的配置如下:
  

[iyunv@opnvz ~]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.5 (Final)
Release:        6.5
Codename:       Final
[iyunv@opnvz ~]# uname -a
Linux opnvz 3.10.52-1.el6.elrepo.x86_64 #1 SMP Fri Aug 8 11:40:18 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
[iyunv@opnvz ~]# docker version
Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.2
Git commit (client): 63fe64c/1.0.0
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.2
Git commit (server): 63fe64c/1.0.0
主机B 今天还用不到,后面再介绍  
  


  

目标

创建一个基础镜像,要求具备以下功能:

  • 使用国内软件源
  • 安装进程管理工具supervisor管理启动进程
  • 可以使用ssh服务

安装步骤

从一个文件系统创建base镜像

创建镜像的方法有很多,官方推荐的是直接从官网仓库pull一个,但由于官网被墙的比较厉害,所以这里我选择从文件系统创建一个base镜像。详细方法见我的另外一片博文http://blog.iyunv.com/smallfish1983/article/details/38555827  
  这里以ubuntu14.04 为例,从openvz下载一个ubuntu14.04的模板
  wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64.tar.gz
  

cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:base

然后用docker images看下:
docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              base               05ac7c0b9383        17 seconds ago      215.5 MB
这样我们就建了一个基于openvz模板的ubuntu基础镜像。(虽然官方的镜像可能比这个更小,但一些基础的如ping这样的工具都没有安装,不是十分方便,推荐openvz的模板)
更改软件源、安装supervisor服务

可以使用docker的dockerfile来完成整个过程,不过个人觉的还是自己手工进去配置完之后更方便,dockerfile更适合分享你的创建过程给其他人。
这里我们执行 docker run -t -i ubuntu:base /bin/bash 进入虚拟机
编辑apt软件源vi /etc/apt/sources.list,删除里面的内容,粘帖上国内163的源
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

执行apt-get update更新
然后安装supervisor服务
apt-get supervisor
cp supervisord.conf conf.d/
cd conf.d/
vi supervisord.conf 修改该文件如下:
; supervisor config file
[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)
nodaemon=true                         ;(修改该软件的启动模式为非daemon,否则docker 在执行的时候会直接退出)
[include]
files = /etc/supervisor/conf.d/*.conf
[program:sshd]
command = /usr/sbin/sshd -D        ;(添加ssh服务)<span style=&quot;font-family:Arial;&quot;><span style=&quot;font-size: 14px; line-height: 26px;&quot;>
</span></span>

配置ssh服务

创建ssh的运行目录
mkdir /var/run/sshd
更改root密码 passwd
vi /etc/ssh/sshd_config 修改下面2个参数允许root登陆

PermitRootLogin yes
UsePAM no
退出 docker
root@f3c8005aa252:/etc/supervisor/conf.d# exit
exit
[iyunv@opnvz start]# docker commit f3c8  ubuntu
5c21b6cf7ab3f60693f9b6746a5ec0d173fd484462b2eb0b23ecd2692b1aff6b
[iyunv@opnvz start]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu                           latest              5c21b6cf7ab3        6 seconds ago       512 MB<span style=&quot;font-family:Arial;&quot;><span style=&quot;font-size: 14px; line-height: 26px;&quot;>
</span></span>

提交刚才的改变到新的image ubuntu上,如果不加冒号tag,默认的tag就是latest
现在新建一个目录
mkdir ubuntu
touch ubuntu/Dockerfile
vi ubuntu/Dockerfile添加如下内容
FROM ubuntu
EXPOSE  22
CMD [&quot;/usr/bin/supervisord&quot;]<span style=&quot;font-family:Arial;&quot;><span style=&quot;font-size: 14px; line-height: 26px;&quot;>
</span></span>

然后从这个文件创建image
[iyunv@opnvz start]# docker build -t ubuntu ubuntu/
Sending build context to Docker daemon  2.56 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
---> 5c21b6cf7ab3
Step 1 : EXPOSE  22
---> Running in 00a75d649b65
---> 0429a60c040d
Removing intermediate container 00a75d649b65
Step 2 : CMD [&quot;/usr/bin/supervisord&quot;]
---> Running in 49d505f56418
---> c5d51fba9226
Removing intermediate container 49d505f56418
Successfully built c5d51fba9226<span style=&quot;font-family:Arial;&quot;><span style=&quot;font-size: 14px; line-height: 26px;&quot;>
</span></span>

再看下images
[iyunv@opnvz start]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
ubuntu                           latest              c5d51fba9226        About a minute ago   512 MB
<none>                           <none>              66604abb62b1        38 minutes ago       570.3 MB<span style=&quot;font-family:Arial;&quot;><span style=&quot;font-size: 14px; line-height: 26px;&quot;>
</span></span>

刚才创建的ubuntu 被新的image给替代了,而之前的镜像我们如果要删掉的话,得先删除刚才我们执行的容器,然后再删除image
docker ps -a<span style=&quot;font-family:Arial;&quot;><span style=&quot;font-size: 14px; line-height: 26px;&quot;>
</span></span>找到刚才的容器
docker rm  f3c8005aa252docker rmi 66604abb62b1

再看下images
[iyunv@opnvz start]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
ubuntu                           latest              c5d51fba9226        About a minute ago   512 MB


docker run -p 301:22 -d --name test ubuntu /usr/bin/supervisord

然后我们就可以ssh 到301端口了


到这里,一个基础的ubuntu的基本镜像就创建完成了,后面将根据这个镜像来创建其他的服务






  

版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 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-125995-1-1.html 上篇帖子: DevOps 下篇帖子: 7条命令在docker中部署Mesos集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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