-
docker镜像配置了entrypoint.sh脚本,无法直接进入容器
覆盖entrypoint启动容器,如:
1
docker run -ti --entrypoint "" hekai/centos7.9-slurm22 bash
-
将多个RUN指令合并为一个,能不能减少镜像体积
如果在一个 RUN 指令里进行了文件下载,另一个RUN里删除了文件,那么,镜像体积是会变大的 如:
1 2
RUN curl -O https://test.com/file RUN rm -rf file
如果在一个RUN里进行文件下载和删除,那么镜像体积是不变的 如:
1
RUN curl -O https://test.com/file && rm -rf file
shell中的&&用法:https://blog.csdn.net/u011630575/article/details/97613695
-
精简镜像体积
- 在同一个RUN指令中下载文件后,然后删除不用的文件
- 删除缓存,如
rm -rf /var/log/* /var/cache/* /tmp/*
- 删除不需要的软件包,如
yum autoremove -y
- 使用多阶段构建镜像
-
使用echo将脚本写入到文件
https://blog.csdn.net/xukai871105/article/details/35834703 https://zhuanlan.zhihu.com/p/451994783
1 2
hekai@00bafcjc-dUrwEMo9N5:~/Videos$ echo -e "#!/bin/bash\nexport JAVA_HOME=/usr/local/jdk\n" > a bash: !/bin/bash\nexport: event not found
是由于 H - histexpand 模式打开了导致。 命令行下,双引号里面用了 ! 的话,Shell 会以为要执行历史展开,从而导致报错。
解决方法,将双引号替换为单引号
1
echo -e '#!/bin/bash\nexport JAVA_HOME=/usr/local/jdk\n' > a