zoukankan      html  css  js  c++  java
  • 【Docker】Dockerfile 最佳实践-USER

    参考教程:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

    环境

    1. virtual box 6.1
    2. centos 7.8
    3. docker 19.03

    USER

    If a service can run without privileges, use USER to change to a non-root user. Start by creating the user and group in the Dockerfile with something like RUN groupadd -r postgres && useradd --no-log-init -r -g postgres postgres.

    如果服务可以在没有特权的情况下运行,请使用 USER 更改为非 root 用户。首先在 Dockerfile 中创建用户和组,类似于 RUN groupadd -r postgres && useradd --no-log-init -r -g postgres postgres

    Consider an explicit UID/GID

    Users and groups in an image are assigned a non-deterministic UID/GID in that the “next” UID/GID is assigned regardless of image rebuilds. So, if it’s critical, you should assign an explicit UID/GID.

    考虑一个明确的 UID/GID

    为镜像中的用户和组分配了不确定的 UID/GID,因为无论镜像重建如何,都将分配“下一个” UID/GID。因此,如果有必要,您应该分配一个明确的 UID/GID。

    Due to an unresolved bug in the Go archive/tar package’s handling of sparse files, attempting to create a user with a significantly large UID inside a Docker container can lead to disk exhaustion because /var/log/faillog in the container layer is filled with NULL () characters. A workaround is to pass the --no-log-init flag to useradd. The Debian/Ubuntu adduser wrapper does not support this flag.

    由于 Go 软件包处理稀疏文件时出现未解决的错误,试图在 Docker 中创建具有非常大的 UID 的用户容器可能会导致磁盘耗尽,因为容器层中的 /var/log/faillog 用 NULL () 字符填充。一种解决方法是将 --no-log-init 标志传递给 useradd。 Debian/Ubuntu adduser包装器不支持该标志。

    Avoid installing or using sudo as it has unpredictable TTY and signal-forwarding behavior that can cause problems. If you absolutely need functionality similar to sudo, such as initializing the daemon as root but running it as non-root, consider using “gosu”.

    避免安装或使用 sudo,因为它具有不可预测的 TTY 和信号转发行为,可能会导致问题。如果您绝对需要类似于 sudo 的功能,例如将守护进程初始化为 root,但将其作为非 root 运行,请考虑使用 “gosu”

    Lastly, to reduce layers and complexity, avoid switching USER back and forth frequently.

    最后,为了减少层次和复杂性,请避免频繁地来回切换 USER

    总结

    介绍了 Dockerfile 的 USER 指令的最佳实践。

  • 相关阅读:
    WebAPI下的如何实现参数绑定
    MYSQL主从不同步延迟原理
    mysql的limit经典用法及优化
    ASP.NET MVC中的模型绑定
    使用EF实现数据库的增删改查
    NoSQL数据库技术特性解析之文档数据库
    MySQL 缓存 Query Cache
    Loadrunner test web service which need username and password
    vb写文件时报'Invalid procedure call or argument'
    Shell 笔记
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/14218229.html
Copyright © 2011-2022 走看看