docker学习笔记2

网友投稿 247 2022-10-19

docker学习笔记2

修改容器时间为北京时间

容器内部创建Asia时区文件

echo Asia/Shanghai >/etc/timezone

localtime可以从宿主机拷贝到容器内部(exit退出容器,在宿主机上操作docker cp)

docker cp /usr/share/zoneinfo/Asia/Shanghai 容器id:/etc/localtime

# Update timezone

ENV  TIME_ZONE Asia/Shanghai

RUN cp /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && \

echo "${TIME_ZONE}" > /etc/timezone

=====================

1、使用docker history changed-ubuntu命令可以清楚地查看到changed-ubuntu镜像使用了哪些image layers

2、可以使用 docker volume ls 命令查看系统分配的全部卷。若想删除某个不再使用的卷,使用 docker volume rm。

3、docker system prune --volumes 命令。这个命令会删除所有不再使用的映像或卷,以及停止后依然在系统中的容器 ==

4 当你向 Dockerfile 中添加文件,或者修改其中的某一行时,那一部分的缓存就会失效,该缓存的后续步骤都会中断,需要重新构建。所以优化缓存的最佳方法是把不需要经常更改的行放到最前面,更改最频繁的行放到最后面。

5、只拷贝需要的文件,防止缓存溢出

6 每一个 ​​RUN​​ 指令都会被看作是可缓存的执行单元。太多的 RUN 指令会增加镜像的层数,增大镜像体积

7 删除包管理工具的缓存

包管理工具会维护自己的缓存,这些缓存会保留在镜像文件中,推荐的处理方法是在每一个 RUN 指令的末尾删除缓存。如果你在下一条指令中删除缓存,不会减小镜像的体积

8 尽量使用官方镜像  ;基础镜像尽量不要使用 ​​latest​​ 标签

9 使用多阶段构建来删除构建时的依赖项

多阶段构建可以由多个 FROM 指令识别,每一个 FROM 语句表示一个新的构建阶段,阶段名称可以用 ​​AS​​​ 参数指定。本例中指定第一阶段的名称为 ​​builder​​,它可以被第二阶段直接引用

本例是基于 Alpine 的最小 JRE 镜像。上一个构建阶段虽然会有大量的缓存,但不会出现在第二阶段中。为了将构建好的 jar 包添加到最终的镜像中,可以使用 ​​COPY --from=STAGE_NAME​​ 指令,其中 STAGE_NAME 是上一构建阶段的名称。

多阶段构建是删除构建依赖的首选方案。

10 启动进程正常退出或发生 OOM,此时 docker 会根据 --restart 的策略判断是否需要重启容器。但如果容器是因为执行 docker stop 或docker kill 退出,则不会自动重启

如果在启动容器时只指定 -m 而不指定 --memory-swap,那么 --memory-swap 默认为 -m 的两倍,比如:docker run -it -m 200M ubuntu 容器最多使用 200M 物理内存和 200M swap

与内存限额不同,通过 -c 设置的 cpu share 并不是 CPU 资源的绝对数量,而是一个相对的权重值

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:swarm 学习笔记
下一篇:剑指Offer之Java算法习题精讲N叉树的遍历及数组与字符串
相关文章

 发表评论

暂时没有评论,来抢沙发吧~