lxc和docker都类似,但实际应用场合不一样

docker,更强调的是以应用为中心,打包的镜像也是应用程序运行环境,不一定非要整个操作系统,而且docker起来基本上只会运行一个应用。

lxc,更强调以操作系统为中心,打包的镜像包含完整的操作系统,运行的时候,和普通操作系统一样可能启动多个进程。

但实际docker这样的以应用为中心的的容器,容器本身已经是比较基础的了,应用编排比如docker  swarm, k8s这样的平台才是重心了。

lxc镜像可以从零去制作,这个留待后面研究,LXC安装完后有一些模板,默认有一个模板就是支持OCI格式的镜像模板,可以直接从doker的registry拉镜像在本地生成LXC镜像。

但实际项目上大多是离线环境,拿到的docker镜像也是docker save这样导出来的tar文件,可以直接创建lxc。

lxc-create -n centos-from-docker -t oci -- --url docker-archive:/root/centos.tar

但前提是有几个工具系统得具备 skopeo,umoci,jq

其中centos8里面skopeo jq都有,umoci可以从官网下载编译好的二进制

:: umociDocumentation for umoci -- a tool for modifying OCI images.https://umo.ci/

当然arm平台的就得自己编译一下了。

其实我自己看了下lxc-create出来的目录,例如ubuntu1这个lxc容器

路径再/var/lib/lxc/ubuntu1

主要生效的是config这个文件 

[root@localhost ubuntu1]# cat /var/lib/lxc/ubuntu1/config 
# Template used to create this container: /usr/share/lxc/templates/lxc-ubuntu
# Parameters passed to the template:
# For additional config options, please look at lxc.container.conf(5)

# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)


# Common configuration

# Container specific configuration
lxc.rootfs.path = dir:/var/lib/lxc/ubuntu1/rootfs
lxc.uts.name = ubuntu1
lxc.arch = amd64

# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = virbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:db:9b:08

主要定义了容器rootfs 网络配置等.

按照其他容器的config文件修改,自己准备好rootfs,就可以手工创建容器镜像了。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐