企业级docker应用注意事项

现在很多企业使用容器化技术部署应用,绕不开的docker技术,在生产环境docker常用操作总结。参考:https://juejin.cn/post/7259275893796651069

1. 尽可能使用官方镜像

在docker hub 官方 使用后面带有 DOCKER OFFICIAL IMAGE 标签的镜像,有更好的安全性保障。

2. 使用镜像指定版本

bash 复制代码
FROM ubuntu

默认使用latest标签,拉取最新镜像,镜像稳定性以及兼容性可能有问题,需要经过充分测试,才可以使用。

3. 构建镜像使用缓存,提高构建效率

bash 复制代码
FROM node:current-alpine3.18
WORKDIR /app
COPY myapp /app
RUN npm install --production
CMD ["node", "src/index.js"]

1)镜像每一层中都会被Docker缓存。当重新构建镜像时,如果Dockerfile没有更改,Docker将只使用缓存的层来构建镜像。

2)在 Docker 中一旦一个层发生变化,所有后续或下游的层也必须重新创建。

3)在 Dockerfile 中,将我们的命令按照从最不经常变化到最经常变化的顺序进行排序,以利用缓存并优化镜像构建速度。

4. docker的多阶段构建

一般来讲,

第一阶段:用于构建服务的编译环境,生成二进制文件

第二阶段:运行二进制文件,加载运行期间的配置文件以及其他依赖文件(例如证书)

5. 使用最低权限的用户

Dockerfile没有指定用户时,默认使用root用户运行,在容器内使用root用户运行应用程序将使攻击者更容易提升主机的权限。可以使用普同样用户权限。

bash 复制代码
...

# 创建demo 组和 demo 用户
RUN groupadd -r demo && useradd -g demo demo 
​
# 设置 demo 用户的权限
RUN chown -R demo:demo /app
​
# 切换用户
user demo
​
cmd node index.js

参考:https://juejin.cn/post/7259275893796651069

相关推荐
小尧嵌入式11 小时前
【Linux开发四】Linux中概念|MobaXterm和Filezilla软件使用|线程|互斥锁|读写锁
linux·运维·服务器·开发语言·数据结构
a努力。11 小时前
Spring Boot 4 全面拥抱 Jackson 3
java·运维·开发语言·spring boot·后端·spring·jenkins
TDengine (老段)11 小时前
初学者使用 docker 快速体验 TDengine 功能
大数据·物联网·docker·容器·时序数据库·tdengine
峥嵘life11 小时前
Android16 EDLA【GTS】GtsUnofficialApisUsageTestCases存在fail项
android·linux·运维·学习
德育处主任Pro11 小时前
『NAS』推荐几个绿联 NAS Docker 能用的镜像加速器
运维·docker·容器
fanruitian11 小时前
k8s 安装headlamp
云原生·容器·kubernetes
Hello.Reader11 小时前
Flink 2.2 从本地 Standalone 到 Docker/Kubernetes,把 Hive 批流打通,并在 SQL 里接入 OpenAI 推理
docker·flink·kubernetes
晚风吹长发11 小时前
初步了解Linux中的信号保存和简单使用
linux·运维·服务器·数据结构·后端·算法
va学弟12 小时前
Java 网络通信编程(1):服务器多任务连接+广播消息实现
java·运维·服务器