物联网

利用debootstrap制作完整的dokcer debian镜像

2019-12-28 17:22:23

经常使用docker的用户应该都知道,docker hub上提供了各种各样的linux系统镜像包,但是这些系统镜像包,往往都是精简版,去掉了系统运行的中央组件,仅仅保留了运行软件的基本环境,很多系统组件都被去掉了。在运行一些特定的软件时容易出现各种各样的问题。小沃最近在研究如何在docker中安装kvm,就遇到了这样的问题。因此小沃将如何创建一个完整的linux环境方法告知大家。

一、安装工具debootstrap

apt-get install debootstrap

二、运行基础环境生成命令

debootstrap --arch=amd64 stable debian10full http://mirrors.huaweicloud.com/debian

参数说明:

--arch=amd64为选择系统架构为amd64系统架构,也就是我们最熟悉的64位系统架构

stable为选择最新的稳定版操作系统,小沃编辑这篇文章时为10.2版本

debian10full为生成的文件夹,里面拥有所有的下载下来的文件

http://mirrors.huaweicloud.com/debian为下载的镜像地址,这里我们选择从华为云下载,大家也可以根据自己的实际网络情况选择阿里云,腾讯云,或是其他下载地址

三、打包成为tar文件包

cd debian10full
tar -cvf ../debian10full.tar *
cd ..

执行完毕后就会生成一个debian10full.tar的文件,这个文件是可以直接导入成为docker的镜像的。

四、导入docker

docker import debian10full.tar debian10:10.2

这个命令为docker导入自定义镜像的命令,最后的debian10:10.2可以任意修改,这里只是由于我创建的时间点,所以我起的名字。

五、创建容器

docker run -itd --privileged debian10:10.2 /sbin/init

这里大家要注意的是要想拥有类似完整linux的运行效果,必须加上参数--privileged,另外启动命令应为/sbin/init,而不是大家熟悉的/bin/bash。

六、关闭agetty服务

由于使用了--privileged参数,容器拥有了类似宿主机的权限,可以申请只有宿主机才能申请的设备资源。因此会发生与宿主机抢占资源的情况,使cpu出现100%的情况,所以要关闭相关的服务。

systemctl stop getty@tty1.service
systemctl mask getty@tty1.service

systemctl stop getty@tty2.service
systemctl mask getty@tty2.service

systemctl stop getty@tty3.service
systemctl mask getty@tty3.service

systemctl stop getty@tty4.service
systemctl mask getty@tty4.service

systemctl stop getty@tty5.service
systemctl mask getty@tty5.service

systemctl stop getty@tty6.service
systemctl mask getty@tty6.service

至此,该容器已经可以正常工作了。


文章作者:沃航科技

优秀解决方案推荐:物联网

上一篇:超高性能的vpn软件 --- wfvpn

下一篇:mysql命令方式新建数据库

鄂ICP备16014230号-1