展开

Dockerfile基础

最后发布时间 : 2024-03-06 09:38:16 浏览量 :

https://github.com/DrSnowbird/intellij-vnc-docker

创建镜像

FROM majiajue/jdk1.8:latest

ubuntu替换国内源

RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \

https://github.com/ONLYOFFICE/Docker-DocumentServer

docker run -it --rm --network=host --privileged hokiegeek2/slurm-single-node

https://github.com/hokiegeek2/slurm-cloud-integration

service --status -all

nginx

# Step 1: Build the app in image 'builder'
FROM node:12.0.0-alpine AS builder

RUN npm config set registry https://registry.npm.taobao.org
RUN npm config set unsafe-perm true
RUN npm install -g @angular/cli

WORKDIR /usr/src/app
COPY . .
RUN npm install
RUN npm run build

# Step 2: Use build output from 'builder'
FROM nginx:stable-alpine
LABEL version="1.0"

COPY nginx.conf /etc/nginx/nginx.conf

WORKDIR /usr/share/nginx/html
COPY --from=builder /usr/src/app/dist/tower-web/ .
Sending build context to Docker daemon  11.63MB
Step 1/13 : FROM node:12.0.0-alpine AS builder
 ---> 80a733d0cd8c
Step 2/13 : RUN npm config set registry https://registry.npm.taobao.org
 ---> Running in fda21dc65a43
Removing intermediate container fda21dc65a43
 ---> 6200f536b9d5
Step 3/13 : RUN npm config set unsafe-perm true
 ---> Running in 466863834a09
Removing intermediate container 466863834a09
 ---> 68be4424035b
Step 4/13 : RUN npm install -g @angular/cli
 ---> Running in 4e11e44c2727

docker 添加hosts

docker run --add-host myhost1:192.168.0.100 --add-host myhost2:192.168.0.200 myimage

docker 容器内普通用户使用root权限

在 Docker 容器内,普通用户默认是没有 root 权限的。然而,你可以通过不同的方式让普通用户在容器内获得 root 权限。下面介绍两种常见的方法:

在容器中安装 sudo,并将普通用户添加到 sudo 组中,从而允许其使用 sudo 命令以 root 权限执行特定的命令。以下是一个示例 Dockerfile:

FROM ubuntu:latest

# 安装 sudo
RUN apt-get update && apt-get install -y sudo

# 添加普通用户到 sudo 组
RUN useradd -m myuser && echo "myuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/myuser

# 切换到普通用户
USER myuser

# 在普通用户下执行需要 root 权限的命令
RUN sudo apt-get install -y package

另一种方法是在容器运行时使用 docker exec 命令以 root 用户身份执行命令。你可以在容器启动时使用 -u 参数指定要以哪个用户身份运行容器,然后使用 docker exec 命令以 root 身份进入容器进行操作。以下是一个示例:

docker run -u myuser -d myimage
docker exec -u root <container_id> <command>

如何在 Docker 中启用非特权用户的用户命名空间功能?

要在 Docker 中启用非特权用户的用户命名空间功能,你可以遵循以下步骤:

确保系统内核支持用户命名空间,并已启用相关配置。你可以检查 /proc/config.gz 或使用命令 zcat /proc/config.gz | grep CONFIG_USER_NS 来查看内核配置中是否启用了 CONFIG_USER_NS。

编辑 Docker 配置文件 /etc/docker/daemon.json(如果文件不存在则创建它),并添加以下内容:

{
  "userns-remap": "<username>"
}

替换为你想要用于非特权用户命名空间的用户名。这个用户名必须在系统中存在,并且不具有特权(不是 root 用户)。

保存并关闭 Docker 配置文件。

重新启动 Docker 服务以使更改生效。可以使用以下命令重启 Docker 服务: