openeuler container 构建
1. 运行官方的docker镜像
docker run --name euler1 --network host -it openeuler/openeuler:22.03 /bin/bash
不指定 –network 的时候会连不上网,原因暂且未知,但是k8s起一个pod可以正常联网
2. 安装包
yum install -y openssh-server openssh-clients lsof passwd gdb make ncurses-devel flex bison openssl openssl-devel elfutils-libelf-devel binutils binutils-devel
3. 配置ssh
ssh-keygen -A
/usr/sbin/sshd
lsof -i:22
passwd //修改root密码为123456
4. 将kernel源码移入container内
docker cp ./kernel euler:/home/
5. 在内部复制一份内核文件。make clean 后进行make 确保make编译环境没有问题。
6. 内部头文件环境也完整
7. 导出镜像包
docker export euler1 -o /home/gohoy/docker-img/euler-container.tar
8. 导入镜像包,查看是否成功保存快照
cat /home/gohoy/docker-img/euler-container.tar | docker import - openeuler/container:v1
docker run --name euler_container --it openeuler/container:v1 /bin/bash
成功进入镜像中,且环境完整。
9. 最终镜像大小4.56gb 其中kernel源代码3.6gb
10. 脚本以及配置文件
apiVersion: v1
kind: Pod
metadata:
name: container
labels:
stl: container
spec:
containers:
- name: container
command:
- "/bin/bash"
- "-ce"
- "tail -f /dev/null"
lifecycle:
postStart:
exec:
command: ["/usr/sbin/sshd"] #启动container运行sshd
resources:
limits:
memory: 1G
cpu: 1
image: openeuler/container:v2
for (( i=1; i <= $1 ; i++ ))
do
container=($(kubectl get pods | sed -n '2,$p'| gawk '{print $1}'))
if echo "${container[@]}" | grep -wq "container-$i"
then
continue
else
((ssh=30000+$i))
sed -e "4s/service/service-$i/; 10s/30000/$ssh/; 13s/container/container-$i/" /home/gohoy/docker-img/service.yaml > /home/gohoy/docker-img/tmpservice.yaml #service
kubectl create -f /home/gohoy/docker-img/tmpservice.yaml
sed -e "4s/container/container-$i/; 6s/container/container-$i/; 9s/container/container-$i/" /home/gohoy/docker-img/pod.yaml > /home/gohoy/docker-img/tmppod.yaml #
kubectl apply -f /home/gohoy/docker-img/tmppod.yaml
fi
done
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 2738430398@qq.com