经常使用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
至此,该容器已经可以正常工作了。
文章作者:沃航科技