为何瘦身?
docker的镜像大小起初并不被技术人员重视
但是越来越多的镜像出现在企业的仓库中的时候,大家发现仓库的容量越来越小
对预算有限的公司来说 , 小的docker镜像可以节省开支
所以-> 如何把docker的镜像降低下来呢?
这就出现了docker -slim的需求
docker-slim下载
这个要特别注意。有一些服务需要去保存一些文件
由于武功有限,所以我们得上武当山去学习真功夫,才能翻阅一座座高山达到docker的故乡
那么我们要选择去拉取一下瘦身秘诀slim
wget https://downloads.dockerslim.com/releases/1.40.3/dist_linux.tar.gz
解压
我们要把这个包解压一下 进行配置
tar -zxvf dist_linux.tar.gz
cd dist_linux
mv * /usr/local/bin
docker-slim -version
#关闭防火墙规则,如果你不知道是什么规则就这么做 产线经验
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -L -n
docker-slim的压缩大小影响因素
为什么有的镜像压缩的不是特别多
有的镜像却一下子压得都快没有了?
# 原因是 docker-slim 得镜像是不一样的
# 镜像有的是 系统镜像,有的是服务镜像
系统级别镜像压缩情况
这块拿archlinux:latest做一下实验
docker pull archlinux:latest
我们来压缩他看一看
slim build --target archlinux:latest --tag archlinux:curl --http-probe=false --exec "curl checkip.amazonaws.com"
我们看看能不能用
docker run archlinux:curl curl checkip.amazonaws.com #官方的测试
服务类我们在测试一个Ubuntu
docker pull ubuntu:14.04
slim build --target ubuntu:14.04 --tag ubuntu:slim --http-probe=false
docker run -itd --name ubuntu-test ubuntu:slim /bin/bash
是可以用的
测试一下编程语言压缩
docker pull golang
slim build --target golang:latest --tag golang:slim --http-probe=false
docker run -itd --name golang-test golang:slim
测试一个mysql压缩
docker pull mysql
slim build --target mysql:latest --tag mysql:slim --http-probe=false
docker run -itd --name mysql-test mysql:slim
#但是这个docker 容器 跑不起来
提示
这块也可以用dockerfile去做
docker build -t httpd:v1 .
注意 上面的命令 默认的 -f 是dockerfile 如果没有dockerfile的话
他是创建失败的
怎么让Mysql压缩之后跑起来呢?
我们可以看到mysql压缩了之后 是缺少了一些必要的文件的
所以我们可以用slim 的Include 命令将其包含在内,这样我们就可以实现mysql容器的启动了
先将原来的Mysql 删除
docker rm -f id
slim build --http-probe=false --include-path=/var/lib/mysql-files --include-path=/etc/mysql --include-path=/1ogs --include-path=/var/lib/mysq1 --include-path=/var/run/mysqld --target mysql:5.7 --tag mysql:5.7-slim
docker run -itd --name mysql mysql:5.7-slim 也跑不起来
用了老师的这个也是失败了
可能是虚拟机存在一些问题
我们用了自己的和老师的都没跑起来