浸泡了几天的官方网站,正确docker有了更好的理解。准备着手建立一个公司的开发和测试环境,包含java、python。

环境介绍

首先说明一下我的环境

2物理server(以后简称为主机)

主机A配置,如下面:

[root@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
[root@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
[root@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.csdn.net/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="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

配置ssh服务

创建ssh的执行文件夹
mkdir /var/run/sshd
更改rootpassword passwd 
vi /etc/ssh/sshd_config 改动以下2个參数同意root登陆
PermitRootLogin yes
UsePAM no

退出 docker

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

提交刚才的改变到新的image ubuntu上。假设不加冒号tag。默认的tag就是latest

如今新建一个文件夹
mkdir ubuntu
touch ubuntu/Dockerfile
vi ubuntu/Dockerfile

加入例如以下内容

FROM ubuntu

EXPOSE  22
CMD ["/usr/bin/supervisord"]<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

然后从这个文件创建image

[root@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 ["/usr/bin/supervisord"]
---> Running in 49d505f56418
---> c5d51fba9226
Removing intermediate container 49d505f56418
Successfully built c5d51fba9226<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

再看下images

[root@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="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

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

docker ps -a<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

找到刚才的容器

docker rm  f3c8005aa252
docker rmi 66604abb62b1
再看下images
[root@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 到301port了


这里,粉底ubuntu基本的图像创建完毕,这背后图像的基础上创造其他服务




docker 真实---安装基本映像 (一)的更多相关文章

  1. Docker CE安装

    #添加账户docker useradd docker passwd docker (密码docker) #设置sudo权限 visudo root ALL=(ALL) ALL 后添加一行: docke ...

  2. Centos + docker,Ubuntu + docker介绍安装及详细使用

    docker笔记 常用命令 设置docker开机自启:sudo chkconfig docker on 查所有镜像: docker images 删除某个镜像:docker rmi CONTAINER ...

  3. Docker的安装和使用说明——Docker for Windows

    一.Docker安装 1.1官方方法 官方下载页面:http://www.docker.com/products/docker#/windows 官方下载地址:https://download.doc ...

  4. docker实战 (1) 关于docker的安装

    docker定义: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...

  5. CentOS6下docker的安装和使用

    CentOS6下docker的安装和使用 Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.利用Linux的LXC.AUFS.Go语言.cgroup ...

  6. CentOS6.5下docker的安装及遇到的问题和简单使用(已实践)

    转载自 CentOS6下docker的安装和使用 Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.利用Linux的LXC.AUFS. Go语言.c ...

  7. Docker容器安装配置SQLServer服务(Linux)

    一:前言 随着不断的对Docker容器的实践和学习,越来越觉得容器的强大,把 SQL Server 数据库服务放在docker容器中,比你自己在宿主服务器上面安装配置一个SQL Server服务器是要 ...

  8. Docker 的安装与使用

    账号:xcj26密码:X*c*j*5**6**邮箱:**j26@126.com   账号:xichji密码:X*c*j*5**6**邮箱:45*666***@qq.com   摘自:https://b ...

  9. (1)RabbitMQ在Docker上安装

    1.简介 在来学习RabbitMQ时候,我觉得很有必要先把它的环境先搭建起来,这样后面的示例才能进行.因为之前自己手动在Linux服务器上搭建过Elasticsearch,当时踩过太多坑了,浪费太多时 ...

随机推荐

  1. [置顶] Android常用适配器控件

    Android常用适配器控件 列表控件用于显示数据集合,Android不是使用一种类型的控件管理显示和数据,而是将这两项功能分布用列表控件和适配器来实现.列表控件扩展了android.widget.A ...

  2. bzoj 3519: [Zjoi2014] 消棋子 题解

    [序言]在大家怀疑的眼光下,我做了一个中午和半个下午.调了一个晚上的题目总算A了! [原题] 消棋子是一个有趣的游戏.游戏在一个r * c的棋盘上进行.棋盘的每一个格 子.要么是空,要么是一种颜色的棋 ...

  3. HighChart学习-更新数据data Series与重绘

    一:HighChart介绍 基于JQuery的纯JavaScript的图标库,支持各种图表显示,同时还支持Mootools 与Prototype详细版本支持在这里: JQuery 1.3.2 - 1. ...

  4. 用链表实现栈----《数据结构与算法分析----C语言描述》

    一.头文件: #ifndef _STACK_LINK_H_ #define _STACK_LINK_H_ struct stack_record; typedef struct stack_recor ...

  5. SAE开发一个应用(不仅仅是建站)

    参考http://jingyan.baidu.com/user/npublic/?un=944615045 http://sae.sina.com.cn/ 激活sae账户 登陆新浪云计算官方网站,网址 ...

  6. Oracle大数据量查询实际分析

    Oracle数据库: 刚做一张5000万条数据的数据抽取,当前表同时还在继续insert操作,每分钟几百条数据. 该表按照时间,以月份为单位做的表分区,没有任何索引,当前共有14个字段,平均每个字段3 ...

  7. vim ctl+v批量添加/删除

    vim编辑器---批量注释与反注释 在使用vim编写代码的时候,经常需要用到批量注释与反注释一段代码.下面简要介绍其操作. 方法一 块选择模式 插入注释: 用v进入virtual模式 用上下键选中需要 ...

  8. 在TextView中加入图片

    TextView是一个非常强大的控件,有时须要在一个控件中同一时候显示图片和文字,使用TextView非常easy实现. 方法一: 聊天软件比方QQ一般都会有发送表情的功能,使用SpannableSt ...

  9. 《深入浅出 Java Concurrency》—锁紧机构(一)Lock与ReentrantLock

    转会:http://www.blogjava.net/xylz/archive/2010/07/05/325274.html 前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最 ...

  10. 关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方式

    近日開始将项目移植到cocos2dx 3.0版本号,出现了一些问题,UI方面眼下就发现UITextField控件不能响应退格键或者删除键,在Windows以下调试如此,我開始以为是平台支持不好,后来公 ...