安装:
curl -sL https://raw.githubusercontent.com/slimtoolkit/slim/master/scripts/install-slim.sh | sudo -E bash -
打包现有docker镜像:(fikker是正在运行的镜像名称)
docker commit -m 'fikker原版镜像' -a 'admin' fikker bt
进行镜像压缩:(如果镜像已经存在,可以忽略上面的打包过程,比如centos:centos7或者centos:centos7.9.2009)
slim build --target bt --tag fikker --http-probe=false
等运行完,执行docker images,可以看到原始镜像bt容积774M,压缩后的fikker镜像7.98M,压缩后的镜像不管是迁移或者重建,都非常方便,可以使用docker save -o /root/fikker.tar fikker 进行打包,在新的机器里面,执行docker load < /root/fikker.tar 就可以加载镜像,执行docker run -itd --restart=always --name fikker -p 80:80 -p 443:443 -p 1988:1988 --privileged=true fikker就可以运行镜像了,速度也非常快!
PS:slim似乎对应冷门程序需要添加打包路径,包括程序执行的依赖库,对于fikker需要这样打包:
slim build --target bt --tag fikker --http-probe=false --include-path=/fikker/ --include-path=/usr/lib64/
由于不清楚fikker具体依赖lib64下哪个文件,整体打包还是比较大,体积达到124MB,原始镜像约498MB,运行压缩后的镜像:
docker run -itd --restart=always --name fikker -p 80:80 -p 443:443 -p 1988:1988 --privileged=true fikker && docker exec fikker /bin/bash -c 'cd /fikker && ./fikkerd.sh start'
补充一个本地镜像发送到远程php接收保存的代码,远程php:
<?php
$target_dir = "files/";
$filename = basename($_FILES["file"]["name"]);
$allowed_types = ['tar'];
$file_extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
if (!in_array($file_extension, $allowed_types)) {
die("不允许的文件类型。");
}
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_dir . $filename)) {
echo "文件上传成功。";
} else {
die("上传失败。");
}
?>
本地curl代码:curl -X POST -F "file=@/root/fikker.tar" http://远程链接/dockersave.php