制作ubuntu16.04的docker镜像
来自http://www.jianshu.com/p/029a1ed4fd64
背景
因为笔者是在vagrant转移到docker的玩家,所以对系统镜像情有独钟。如果你是windows、mac用户,那么你可能就需要一个干净的系统镜像,来使用docker(docker依赖于linux内核)。
而在linux下开发的话,则无需再安装任何系统镜像,直接使用docker即可。
在此背景下,那么一个干净的系统镜像,就有了必要的意义。笔者开始搜索有关docker打包Ubuntu镜像的资料,得到了一些思绪。
本文受 http://www.jb51.net/article/101509.htm 启发而做,笔者对linux不精通,只能依靠查阅的资料去实现,如有错误之处,请多多指教。
了解封装镜像的基本知识
因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具。根据这个思路,我们就可以构建一个自己的容器基础系统镜像。
rootfs 根文件系统
构建标准的 Linux rootfs 的方式有很多种方法,Redhat、Debian、SUSE等主流的发行版都有提供相应的工具支持,在Ubuntu中笔者使用的时debootstrap工具。
大致流程:
- 构建基础的 rootfs
- 配置基础系统参数
- 部署用户自定义软件
- 清理系统
- 打包为容器镜像
- 测试镜像
- 发布仓库
开始制作Ubuntu16.04系统镜像
- 安装 Debootstrap
sudo apt install debootstrap - 通过 Debootstrap 构建 Ubuntu 16.04 LTS 的 rootfs
- 创建 rootfs 存放的位置,如我们把新的 rootfs 存放在 /opt/new_os:
sudo mkdir -p /opt/new_os - 构建基础 Ubuntu 16.04 LTS 的 rootfs(Debootstrap 工具的参数使用 --help 查看)
sudo debootstrap --verbose --arch=amd64 xenial /opt/new_os http://mirrors.aliyun.com/ubuntu
- 创建 rootfs 存放的位置,如我们把新的 rootfs 存放在 /opt/new_os:
- 配置基础系统参数
切换到新 rootfssudo chroot /opt/new_os /bin/bash安装基础包(请根据实际需求安装)
apt -y update && apt -y upgrade && apt -y install vim locales配置系统字符集(根据提示进行)
dpkg-reconfigure locales配置时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime - 可选:配置第三方衍生系统版本信息(如:UbuntuKylin)
tee /etc/ubuntukylin-release <<-‘EOF'
DISTRIB_ID=Ubuntu Kylin
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu Kylin 16.04"
EOF - 清理系统
rm -Rf /tmp/* && apt clean - 退出当前 rootfs
exit - 打包并创建 Docker 镜像(前置条件:当前系统已经配置了 Docker 运行时环境)
sudo tar -C /opt/new_os/ -c . | sudo docker import - new_os - 测试
sudo docker run new_os cat /etc/lsb-release - 发布到仓库(以发布到官方仓库为例,私有仓库请自行上传)
sudo docker login shibingli@yeah.net
……
sudo docker tag new_os shibingli/new_os
sudo docker push shibingli/new_os 完成
补充,如果要把当前的系统环境打包为容器基础镜像,主要是 rootfs 的处理,可以参考以下命令
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf new_os.tar /
cat new_os.tar | docker import - new_os
或
sudo tar --numeric-owner --exclude=/proc --exclude=/sys -C / -c . | sudo docker import - new_os
制作ubuntu16.04的docker镜像的更多相关文章
- ubuntu16.04下docker安装和简单使用(转)
ubuntu16.04下docker安装和简单使用 转自:https://www.cnblogs.com/hupeng1234/p/9773770.html 前提条件 操作系统 docker-ce ...
- Ubuntu16.04 添加 Docker用户组
Ubuntu16.04 添加 Docker用户组 将用户添加到docker用户组就不用每次都 sudo了. ### 首先创建用户组 sudo groupadd docker 将用户加如组 sudo g ...
- Ubuntu16.04安装Docker、nvidia-docker
Ubuntu16.04安装Docker.nvidia-docker Docker安装 1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选) sudo cp /etc/apt/sources.l ...
- 制作nginx+php的docker镜像方法
制作nginx+php的docker镜像方法一.准备安装的工具工具:docker-17.06.0-ce.nginx-1.13.2.PHP-5.5.38 .supervisor配置思路:1.安装dock ...
- docker学习笔记(1)——ubuntu16.04安装docker(含如何彻底卸载docker,docker拉取镜像失败解决)
参考博客: 1.官网教程:https://docs.docker.com/engine/install/ 根据本机不同的信息选择不同的安装方式: https://docs.docker.com/ ...
- ubuntu16.04下docker安装和简单使用
前提条件 操作系统 docker-ce支持的ubuntu版本: Bionic 18.04 (LTS) Xenial 16.04 (LTS) Trusty 14.04 (LTS) 卸载旧版本docker ...
- Ubuntu16.04 下docker部署web项目
概念性的请戳 第一步:更新apt-get update 第二步:安装环境 apt-get install \ apt-transport-https \ ca-certificates \ curl ...
- ubuntu16.04中docker安装curl拒绝连接问题
在Ubuntu16.04中安装docker ce,安装步骤按照官网说明https://docs.docker.com/engine/installation/linux/docker-ce/ubunt ...
- ubuntu16.04安装docker CE
如需开始在 Ubuntu 上使用 Docker CE,请确保您满足先决条件,然后再安装 Docker. 如需安装 Docker 企业版 (Docker EE),请转至获取适用于 Ubuntu 的 Do ...
随机推荐
- Thread 多线程 同步
当多个线程,访问同一个对象,调用同一个方法或访问同一个对象时.有时,必须保证访问的同步性.比如,一个银行信用卡账户具有5000元的信用额度.用户除具有一张主卡外,还办有多张子卡.这些卡的累计消费金额, ...
- docker搭建jira-7.11.1 + 破解
几行命令教你搭建一个jira最新版.所有步骤必不可少.破解补丁需要的请在下面留言. pull docker 镜像: jira:7.11.1(目前的最新版本) mysql:5.7 docker ...
- HTTPS和HTTP的区别:
https协议需要到ca申请证书,一般免费证书很少,需要交费.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议http和https使用的是完全不同的连接方式用的 ...
- NSOperation 开发
目录 1.简介 2.Operation对象 3.自定义Operation对象 4.通过Operation Queues运行Operation对象 5.手动运行Operation对象 一.简介 Coco ...
- Redux & React & react-redux
Redux Redux & React & react-redux https://redux.js.org/ https://redux.js.org/api https://red ...
- 【bzoj3173】[Tjoi2013]最长上升子序列 Treap
题目描述 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数字,我们都想知道此时最长上升子序列长度是多少? 输入 第一行一个整数N,表示我们要 ...
- ESXI6.0 时间(时区)显示不一致
ESXI6.0 时间(时区)显示不一致 来源 http://blog.51cto.com/jdonghong/1957118 近日由于设置ESXI计划任务,无意间发现了esxi服务器客服端时间和系统显 ...
- BZOJ 2223 [Coci 2009]PATULJCI | 主席树练习 (好像是个权限题啊)
题目: 给个序列,问[l,r]区间内是否存在x>(r-l+1)>>1 题解: 好像大家都觉得这个题比较简单,没人写题解啊 先说BZOJ样例的格式应该是,第二个数是序列中数的范围(就是 ...
- Extend Html.EditorFor MVC
原文发布时间为:2011-09-07 -- 来源于本人的百度文章 [由搬家工具导入] http://aspadvice.com/blogs/kiran/archive/2009/11/29/Addin ...
- 日志组件Log4Net
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSec ...