热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

详解Docker容器基础系统镜像打包

这篇文章主要介绍了详解Docker容器基础系统镜像打包,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具。根据这个思路,我们就可以构建一个自己的容器基础系统镜像。

构建标准的 Linux rootfs 的方式有很多种方法,Redhat、Debian、SUSE等主流的发行版都有提供相应的工具支持。

大概的流程如下:

构建基础的 rootfs —> 配置基础系统参数 —> 部署用户自定义软件 —> 清理系统 —> 打包为容器镜像 —> 测试镜像 —> 发布仓库

以 Ubuntu 16.04.01 LTS 版为例,制作一个 Ubuntu 16.04 LTS 的 Docker 基础系统镜像:

1、安装 Debootstrap :

sudo apt install debootstrap

2、通过 Debootstrap 构建 Ubuntu 16.04 LTS 的 rootfs :

1)、创建 rootfs 存放的位置,如我们把新的 rootfs 存放在 /opt/new_os:

 sudo mkdir -p /opt/new_os

2)、构建基础 Ubuntu 16.04 LTS 的 rootfs(Debootstrap 工具的参数使用 --help 查看):

sudo debootstrap --verbose --arch=amd64 xenial /opt/new_os http://mirrors.aliyun.com/ubuntu

3)、配置基础系统参数:

a、切换到新 rootfs :

sudo chroot /opt/new_os /bin/bash

 b、安装基础包(请根据实际需求安装):

 apt -y update && apt -y upgrade && apt -y install vim locales

c、配置系统字符集(根据提示进行):

dpkg-reconfigure locales

d、配置时区:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 e、可选:配置第三方衍生系统版本信息(如:UbuntuKylin)

    
            tee /etc/ubuntukylin-release <<-‘EOF'
            DISTRIB_ID=Ubuntu Kylin
            DISTRIB_RELEASE=16.04
            DISTRIB_CODENAME=xenial
            DISTRIB_DESCRIPTION="Ubuntu Kylin 16.04"
            EOF

f、清理系统:

 rm -Rf /tmp/* && apt clean

g、 退出当前 rootfs

 exit

4)、打包并创建 Docker 镜像(前置条件:当前系统已经配置了 Docker 运行时环境):

sudo tar -C /opt/new_os/ -c . | sudo docker import - new_os

 5)、测试

sudo docker run new_os cat /etc/lsb-release

3、发布到仓库(以发布到官方仓库为例,私有仓库请自行上传)

sudo docker login shibingli@yeah.net
……
sudo docker tag new_os shibingli/new_os
sudo docker push shibingli/new_os

4、完成。

5、补充,如果要把当前的系统环境打包为容器基础镜像,主要是 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Docker从安装到入门到项目部署
    容器化的时代你怎么可 ... [详细]
  • centos卸载不必要的程序_在 Linux 中移除从源代码安装的程序的一种简单的方法...
    不是所有的程序都可以在官方或者第三方库中找到,因此你不能使用常规的包管理来安装它们。有时你不得不从源代码中手动构建这些程序。就如你已经知道的一样,当你从 ... [详细]
  • Docker基础和常用命令详解_docker
    这篇文章主要介绍了Docker基础和常用命令方法的相关资料, ... [详细]
  • linux系统关掉网卡命令_如何关闭Linux系统?
    linux系统关掉网卡命令IamnewtoLinuxandIhaveinstalledsomeLinuxdistributions.Itrytolearnbashcommands. ... [详细]
  • Ubuntu16.0464位安装armlinuxgcc交叉编译器以及samba服务器
    交叉编译器是嵌入式开发的必要工具,但是由于目前大多数人使用64位ubuntu,在照着很多教程做的时候,就会失败,失败原因是64位ubuntu需要额外安装32位的兼容包。以arm-l ... [详细]
  • 不同方式实现集群的可行性 && 部分不建议踩的坑
    路标1.Systemhasnotbeenbootedwithsystemdasinitsystem(PID1).Can’toperate.2.CannotconnecttotheD ... [详细]
  • Ununtu 12.04 x64位安装docker
    什么是DockerDocker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。项目后来加入了Linux基 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在Docker容器技术中限制容器对CPU的使用的方法,包括使用-c参数设置容器的内存限额,以及通过设置工作线程数量来充分利用CPU资源。同时,还介绍了容器权重分配的情况,以及如何通过top命令查看容器在CPU资源紧张情况下的使用情况。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • (九)Docker常用安装
    一、总体步骤1、搜索镜像2、拉取镜像3、查看镜像4、启动镜像5、停止镜像6、移除镜像二、安装tomcat1、dockerhub上面查找tomcat镜像 dockersearchto ... [详细]
author-avatar
_cristal_500
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有