mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 04:14:38 +00:00
style: apply global formatting fixes (struct, spacing, zhlint)
This commit is contained in:
@@ -1,13 +1,17 @@
|
||||
## 7.11 USER 指定当前用户
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 基本语法
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```docker
|
||||
USER <用户名>[:<用户组>]
|
||||
USER <UID>[:<GID>]
|
||||
```
|
||||
|
||||
`USER` 指令切换后续指令(RUN、CMD、ENTRYPOINT)的执行用户。
|
||||
`USER` 指令切换后续指令 (RUN、CMD、ENTRYPOINT) 的执行用户。
|
||||
|
||||
---
|
||||
|
||||
@@ -34,8 +38,12 @@ flowchart LR
|
||||
|
||||
### 基本用法
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
#### 创建并切换用户
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```docker
|
||||
FROM node:20-alpine
|
||||
|
||||
@@ -60,6 +68,8 @@ CMD ["node", "server.js"]
|
||||
|
||||
#### 使用 UID/GID
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```docker
|
||||
## 也可以使用数字
|
||||
|
||||
@@ -84,6 +94,10 @@ RUN useradd -r -s /bin/false appuser
|
||||
USER appuser
|
||||
```
|
||||
|
||||
#### 概述
|
||||
|
||||
总体概述了以下内容。
|
||||
|
||||
#### 创建用户的方式
|
||||
|
||||
**Debian/Ubuntu**:
|
||||
@@ -112,7 +126,9 @@ RUN addgroup -g 1001 -S appgroup && \
|
||||
|
||||
### 运行时切换用户
|
||||
|
||||
#### 使用 gosu(推荐)
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
#### 使用 gosu (推荐)
|
||||
|
||||
在 ENTRYPOINT 脚本中切换用户时,不要使用 `su` 或 `sudo`,应使用 [gosu](https://github.com/tianon/gosu):
|
||||
|
||||
@@ -205,7 +221,11 @@ CMD ["node", "server.js"]
|
||||
|
||||
### 最佳实践
|
||||
|
||||
#### 1. 始终使用非 root 用户
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
#### 1。始终使用非 root 用户
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```docker
|
||||
## ✅ 推荐
|
||||
@@ -219,7 +239,7 @@ CMD ["myapp"]
|
||||
CMD ["myapp"] # 以 root 运行
|
||||
```
|
||||
|
||||
#### 2. 使用固定 UID/GID
|
||||
#### 2。使用固定 UID/GID
|
||||
|
||||
便于在宿主机和容器间共享文件:
|
||||
|
||||
@@ -231,7 +251,9 @@ RUN addgroup -g 1000 -S appgroup && \
|
||||
USER 1000:1000
|
||||
```
|
||||
|
||||
#### 3. 多阶段构建中的 USER
|
||||
#### 3。多阶段构建中的 USER
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```docker
|
||||
## 构建阶段可以用 root
|
||||
@@ -255,7 +277,9 @@ CMD ["node", "server.js"]
|
||||
|
||||
### 常见问题
|
||||
|
||||
#### Q: 权限被拒绝
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
#### Q:权限被拒绝
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -269,12 +293,12 @@ permission denied: '/app/data.log'
|
||||
RUN mkdir -p /app/data && chown appuser:appuser /app/data
|
||||
```
|
||||
|
||||
#### Q: 无法绑定低于 1024 的端口
|
||||
#### Q:无法绑定低于 1024 的端口
|
||||
|
||||
非 root 用户无法绑定 80、443 等端口。
|
||||
|
||||
**解决**:
|
||||
1. 使用高端口(如 8080)
|
||||
1. 使用高端口 (如 8080)
|
||||
2. 在运行时映射端口:`docker run -p 80:8080`
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user