先看一下Docker官网提示:In general, you’ll want to start with a working machine that is running the distribution you’d like to package as a parent image. 意思是你制作镜像的机器运行的系统版本要与你要制作的镜像的系统版本相同。

1、安装debootstrap

# aptitude update
# aptitude install -y debootstrap

2、查看帮助,debootstrap的使用方法

# debootstrap --help

debootstrap [OPTION]... <suite> <target> [<mirror> [<script>]]

--arch=A:set the architecture to install (use if no dpkg) [ --arch=powerpc ]
--include=A,B,C:adds specified names to the list of base packages
--no-check-gpg:avoid checking Release file signatures

3、建立debian系统到指定目录

# debootstrap --no-check-gpg --arch=amd64 --include=vim,ca-certificates,net-tools,iputils-ping,iputils-tracepath,iproute,bash,aptitude,locales-all,openssh-server,openssh-client jessie debian-jessie http://mirrors.ustc.edu.cn/debian

4、打包系统目录,并导入到docker(这里仅作测试,可以省略这一步)

# tar -C debian-jessie -c . | docker import - debian-jessie:0.0.1
sha256:10aad891ca3f1db689459b8a230146107eeb6e6f7264051b4adafff25303a3f1

5、打包系统目录,放到指定位置

# cd debian-jessie/
# tar cvzf ../jessie.tar.gz ./
# mkdir -pv /docker/imagesbuilder/opera/debian8-0.0.1/
# mv jessie.tar.gz /docker/imagesbuilder/opera/debian8-0.0.1/

6、编写dockerfile

# cd /docker/imagesbuilder/opera/debian8-0.0.1/
# tree
.
├── Dockerfile
├── jessie.tar.gz
└── source
├── authorized_keys
├── autoboot.sh
├── oupeng-alias.sh
├── oupeng-history.sh
├── sources.list
└── sshd_config # vim Dockerfile
FROM scratch
MAINTAINER KeithTt shengyongp@oupeng.com ADD jessie.tar.gz /
ADD source/sources.list /etc/apt/
ADD source/sshd_config /etc/ssh/
ADD source/authorized_keys /root/.ssh/
ADD source/oupeng-alias.sh /etc/profile.d/
ADD source/oupeng-history.sh /etc/profile.d/
ADD source/autoboot.sh /root/bin/autoboot.sh ENTRYPOINT /root/bin/autoboot.sh && /bin/bash
# cat autoboot.sh
#!/bin/bash
. /etc/profile.d/oupeng-alias.sh
. /etc/profile.d/oupeng-history.sh
services=($(grep 'Default-Start' /etc/init.d/* | grep -v '^[ ]*#' | awk -F: '{print $1":"$NF}' |sed -e 's/[\t ]\+//g'))
for((i=0;i<${#services[@]};i++))
do
levels=$(echo ${services[$i]} | awk -F: '{print $2}')
if [[ $(echo $levels |grep -c '3') -eq 0 ]];then
continue
fi
service=$(echo ${services[$i]} | awk -F: '{print $1}')
if [[ -x $service ]];then
echo "$service" >> /$$
fi
done
for p in $(cat /$$)
do
$p start
done
rm -f /$$

7、build镜像

# docker build -t oupeng/debian8:0.0.1 .
# docker images

8、启动镜像,安装项目所需要的基础程序包

# docker run -it oupeng/debian8:0.0.1
# aptitude update
# aptitude install -y lrzsz vim bash-completion nagios-nrpe-server nagios-plugins-basic supervisor nginx libc6-dev
# aptitude clean

9、安装好基础环境后,提交一个新的镜像

# docker commit -a "KeithTt <shengyongp@oupeng.com>" -m "debian-jessie-transcoder" tender_bardeen oupeng/o12_transcoder:0.1.0
# docker images
# docker save -o o12_transcoder.0.1.0.tar oupeng/o12_transcoder:0.1.0

10、将镜像加载到线上环境

# scp o12_transcoder.0.1.0.tar 117.119.33.166:/root/
# ssh 117.119.33.166
# docker load -i o12_transcoder.0.1.0.tar

11、启动容器,分配IP

# docker run -it -v /proc:/wproc -v /docker/vdisk/v01:/data -m 8G -h $(hostname)-v08 --name $(hostname)-v08 --net=none oupeng/o12_transcoder:0.1.0
# /root/bin/mkipinner.sh uy-s-123-v08 192.168.10.179 20 192.168.1.248
# ssh 192.168.10.179
# aptitude install -y locales-all

这样,一个docker虚拟机就运行起来了。

参考:

https://docs.docker.com/develop/develop-images/baseimages/

https://github.com/KingBing/blog-src/blob/master/使用 debootstrap 建立完整的 Debian 系統.org

https://www.jianshu.com/p/47c4a06a84a4

使用debootstrap制作debian-jessie系统docker镜像的更多相关文章

  1. 制作nginx+php的docker镜像方法

    制作nginx+php的docker镜像方法一.准备安装的工具工具:docker-17.06.0-ce.nginx-1.13.2.PHP-5.5.38 .supervisor配置思路:1.安装dock ...

  2. 制作基于Buildbot的自动化测试系统Docker镜像

    Buildbot in Docker 前言 最近使用Buildbot做了一个自动测试的框架,为了部署方便,可以把测试框架做成Docker镜像,方便部署.这里记录下过程,供大家参考. 项目介绍 项目是一 ...

  3. 制作ubuntu16.04的docker镜像

    来自http://www.jianshu.com/p/029a1ed4fd64 背景 因为笔者是在vagrant转移到docker的玩家,所以对系统镜像情有独钟.如果你是windows.mac用户,那 ...

  4. 基于vue+springboot+docker网站搭建【七】制作后端spring-boot的docker镜像部署

    制作spring-boot的docker镜像并部署 一.下载后端项目:https://github.com/macrozheng/mall 二.修改mall-admin项目的配置文件 修改applic ...

  5. 制作ssh互信的docker镜像

    Dockerfile FROM ubuntu:16.04 # package RUN apt-get update; apt-get -y install ssh COPY ssh_config /e ...

  6. BI系统打包Docker镜像及容器化部署的具体实现

    在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理:或者是没用过,但听过它的大名:也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼熟.作 ...

  7. Docker容器技术-优化Docker镜像

    一.优化Docker镜像 1.降低部署时间 一个大的Docker应用是如何影响在新Docker宿主机上的部署时间. (1)编写Dockerfile创建一个大Docker镜像 [root@bogon ~ ...

  8. NodeJS 服务 Docker 镜像极致优化指北

    这段时间在开发一个腾讯文档全品类通用的 HTML 动态服务,为了方便各品类接入的生成与部署,也顺应上云的趋势,考虑使用 Docker 的方式来固定服务内容,统一进行制品版本的管理.本篇文章就将我在服务 ...

  9. 技术分享 | 自制GreatSQL Docker镜像

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 近期打算制作一个GreatSQL的docker镜像,方便社区用户使用GreatSQL. 制作docker镜像的环境基于Ce ...

随机推荐

  1. DELL升级bios方式

    升级过程其实很简单 1.官网下载exe文件,放入U盘 2.重启电脑F12选择升级bios 3.选择U盘里面的升级文件 4.重点来了!!! boot options 是什么? 就是boot设置里面自己自 ...

  2. python实现微信自动回复机器人

    一 简单介绍 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计等功能. 总而言之,可用 ...

  3. flask-socketio笔记

    Flask-SocketIO使Flask应用程序可以访问客户端和服务器之间的低延迟双向通信. 客户端应用程序可以使用Javascript,C ++,Java和Swift中的任何SocketIO官方客户 ...

  4. SNMP基础知识

    注:本篇博客并非原创,仅是学习笔记 1. 概述1.1 诞生背景1.2 SNMP简介1.3 版本1.4 术语1.5 网络结构1.6 MIB简介2. Linux的SNMP安装 1. 概述 1.1 诞生背景 ...

  5. Linux下性能调试工具运维笔记

    作为一名资深的linux运维工程师,为方便了解和追求服务器的高性能,如cpu.内存.io.网络等等使用情况,要求运维工程师必须要熟练运用一些必要的系统性能调试工具,liunx下提供了众多命令方便查看各 ...

  6. python-深浅copy-18

    # 赋值运算l1 = [1,2,3]l2 = l1l1.append('a')print(l1,l2) # [1, 2, 3, 'a'] [1, 2, 3, 'a'] #copyl1 = [1,2,3 ...

  7. Python-dict-12

    字典 Why:咱们目前已经学习到的容器型数据类型只有list,那么list够用?他有什么缺点呢? 1. 列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢. 2. 列表只能按照顺序存 ...

  8. poj1426 Find The Multiple(c语言巧解)

    Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36335   Accepted: 151 ...

  9. 总结and规划

    不知不觉中又过去了一年,马上就要读研究生了,因此有必要对自己进行必要的总结,以及对自己有个良好的规划. 首先,描述自己当前的心情——对未来充满了恐惧和焦虑. 马上大学就要毕业了,回首经历的大学生涯,似 ...

  10. c#词频统计命令行程序

    这里将用c#写一个关于词频统计的命令行程序. 预计时间分配:输入处理3h.词条排序打印2h.测试3h. 实际时间分配:输入处理1h.词条排序打印2h.测试3h.程序改进优化6h. 下面将讲解程序的完成 ...