• docker学习笔记2


    修改容器时间为北京时间

    容器内部创建Asia时区文件

    echo Asia/Shanghai >/etc/timezone

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

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

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

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

    3、docker system prune --volumes 命令。这个命令会删除所有不再使用的映像或卷,以及停止后依然在系统中的容器
    =========参考资料:https://www.cnblogs.com/ryanyangcs/p/11160992.html

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

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

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

    7 删除包管理工具的缓存

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

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

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

    多阶段构建可以由多个 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 资源的绝对数量,而是一个相对的权重值

  • 相关阅读:
    linux父子进程问题
    Raft协议--中文论文介绍
    adb、pm命令操作apk包
    gradle配置
    命令行 更新Android sdk
    Gradle 脚本剪片---copy
    Java数组,去掉重复值、增加、删除数组元素
    注解Annotation 详解(转)
    MAC自带的SVN进行升级
    Android Studio 简单功能介绍
  • 原文地址:https://www.cnblogs.com/testzcy/p/8694369.html
Copyright © 2020-2023  润新知