分享

docker 实战一:docker 安装基础镜像

desehawk 发表于 2014-8-31 14:54:25 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 22939
本帖最后由 desehawk 于 2014-8-31 15:49 编辑
问题导读
如何从一个文件系统创建base镜像?
如何更改软件源、安装supervisor服务?
docker有哪些操作?






泡了几天官网,对docker有了一点了解。准备着手搭建一个公司的开发测试环境,包括java、python。

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


  1. [root@opnvz ~]# lsb_release -a  
  2. 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  
  3. Distributor ID: CentOS  
  4. Description:    CentOS release 6.5 (Final)  
  5. Release:        6.5  
  6. Codename:       Final  
  7. [root@opnvz ~]# uname -a  
  8. 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  
  9. [root@opnvz ~]# docker version  
  10. Client version: 1.0.0  
  11. Client API version: 1.12  
  12. Go version (client): go1.2.2  
  13. Git commit (client): 63fe64c/1.0.0  
  14. Server version: 1.0.0  
  15. Server API version: 1.12  
  16. Go version (server): go1.2.2  
  17. Git commit (server): 63fe64c/1.0.0  
复制代码
主机B 今天还用不到,后面再介绍





目标创建一个基础镜像,要求具备以下功能:
  • 使用国内软件源
  • 安装进程管理工具supervisor管理启动进程
  • 可以使用ssh服务



安装步骤
从一个文件系统创建base镜像创建镜像的方法有很多,官方推荐的是直接从官网仓库pull一个,但由于官网被墙的比较厉害,所以这里我选择从文件系统创建一个base镜像。详细参考局域网部署docker--如何创建自己的docker私有仓库

这里以ubuntu14.04 为例,从openvz下载一个ubuntu14.04的模板
wget http://download.openvz.org/templ ... 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的源



  1. deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse  
  2. deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse  
  3. deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse  
  4. deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse  
  5. deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse  
  6. deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse  
  7. deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse  
  8. deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse  
  9. deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse  
  10. deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse  
复制代码


执行apt-get update更新

然后安装supervisor服务


  1. apt-get supervisor  
  2. cp supervisord.conf conf.d/  
  3. cd conf.d/  
  4. vi supervisord.conf   
复制代码

修改该文件如下:

  1. ; supervisor config file  
  2.   
  3. [unix_http_server]  
  4. file=/var/run/supervisor.sock   ; (the path to the socket file)  
  5. chmod=0700                       ; sockef file mode (default 0700)  
  6.   
  7. [supervisord]  
  8. logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)  
  9. pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)  
  10. childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)  
  11. nodaemon=true                         ;(修改该软件的启动模式为非daemon,否则docker 在执行的时候会直接退出)  
  12. [include]  
  13. files = /etc/supervisor/conf.d/*.conf  
  14.   
  15. [program:sshd]  
  16. command = /usr/sbin/sshd -D        ;(添加ssh服务)
复制代码



配置ssh服务
创建ssh的运行目录


  1. mkdir /var/run/sshd  
复制代码


更改root密码 passwd

vi /etc/ssh/sshd_config 修改下面2个参数允许root登陆


  1. PermitRootLogin yes  
复制代码
  1. UsePAM no  
复制代码

退出 docker

  1. root@f3c8005aa252:/etc/supervisor/conf.d# exit  
  2. exit  
  3. [root@opnvz start]# docker commit f3c8  ubuntu   
  4. 5c21b6cf7ab3f60693f9b6746a5ec0d173fd484462b2eb0b23ecd2692b1aff6b  
  5. [root@opnvz start]# docker images  
  6. REPOSITORY                       TAG                 IMAGE ID            CREATED             VIRTUAL SIZE  
  7. ubuntu                           latest              5c21b6cf7ab3        6 seconds ago       512 MB
复制代码


提交刚才的改变到新的image ubuntu上,如果不加冒号tag,默认的tag就是latest

现在新建一个目录


  1. mkdir ubuntu   
  2. touch ubuntu/Dockerfile  
  3. vi ubuntu/Dockerfile  
复制代码

添加如下内容


  1. FROM ubuntu  
  2.   
  3. EXPOSE  22  
  4. CMD ["/usr/bin/supervisord"]
复制代码

然后从这个文件创建image

  1. [root@opnvz start]# docker build -t ubuntu ubuntu/  
  2. Sending build context to Docker daemon  2.56 kB  
  3. Sending build context to Docker daemon   
  4. Step 0 : FROM ubuntu  
  5. ---> 5c21b6cf7ab3  
  6. Step 1 : EXPOSE  22  
  7. ---> Running in 00a75d649b65  
  8. ---> 0429a60c040d  
  9. Removing intermediate container 00a75d649b65  
  10. Step 2 : CMD ["/usr/bin/supervisord"]  
  11. ---> Running in 49d505f56418  
  12. ---> c5d51fba9226  
  13. Removing intermediate container 49d505f56418  
  14. Successfully built c5d51fba9226
复制代码

再看下images

  1. [root@opnvz start]# docker images  
  2. REPOSITORY                       TAG                 IMAGE ID            CREATED              VIRTUAL SIZE  
  3. ubuntu                           latest              c5d51fba9226        About a minute ago   512 MB  
  4. <none>                           <none>              66604abb62b1        38 minutes ago       570.3 MB
复制代码

刚才创建的ubuntu 被新的image给替代了,而之前的镜像我们如果要删掉的话,得先删除刚才我们执行的容器,然后再删除image

  1. docker ps -a
复制代码

找到刚才的容器

  1. docker rm  f3c8005aa252  
复制代码
  1. docker rmi 66604abb62b1  
复制代码

再看下images

  1. [root@opnvz start]# docker images  
  2. REPOSITORY                       TAG                 IMAGE ID            CREATED              VIRTUAL SIZE  
  3. ubuntu                           latest              c5d51fba9226        About a minute ago   512 MB  
复制代码


docker run -p 301:22 -d --name test ubuntu /usr/bin/supervisord
然后我们就可以ssh 到301端口了


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


下一篇:docker 实战二:部署tomcat\weblogic集群





没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条