运行docker需要的权限分析

要理解运行Docker需要的权限,需要考虑以下几个方面:

  1. Docker二进制文件所需的系统特权;
  2. 使用Docker需要的用户组;
  3. 容器中的进程在主机上的权限;

Docker二进制文件所需的系统特权

Docker需要Linux操作系统的一些系统特权来允许容器与主机内核进行交互。这些特权通常被称为Docker Daemon的安全特权。Docker Daemon是Docker引擎的核心,用于管理镜像和容器,以及触发创建和启动容器的事件。

Docker Daemon需要运行的系统特权包括:

  • CAP_SYS_ADMIN:允许Docker Daemon创建和操作Linux的命名空间。Docker Daemon使用namespace来提供应用程序隔离,其中包括容器与主机之间的IPC、UTS、PID、网络、挂载点和UTS等命名空间。
  • CAP_NET_ADMIN:允许Docker Daemon创建、修改和删除网络设备、子网、地址、接口和路由,以及配置网络命名空间的桥接器、路由器和VPN
  • CAP_DAC_OVERRIDE:允许Docker Daemon访问系统文件和目录,以便管理容器卷、日志和配置文件。
  • CAP_SETUID 和CAP_SETGID:允许Docker Daemon在创建容器时较细粒度地设置容器进程的UID和GID。

使用Docker需要的用户组

Docker Daemon需要在root或docker组用户的身份下运行。默认情况下,Docker安装程序将docker组添加到您的主机上。如果您想将一个非root用户添加到docker用户组中,可以运行以下命令:

sudo usermod -aG docker nonrootuser

运行该命令后,您需要注销并重新登录,以确保新的用户组生效。

容器中的进程在主机上的权限

容器中的进程是在宿主机操作系统之上启动的。因此,容器中的进程具有与宿主机上进程相同的所有权限。

Docker容器有两个主要的安全隔离特性:

  1. 应用程序隔离:每个容器可以看到的主机应用程序是固定的,容器与其他容器彼此独立,并具有自己的系统、网络和文件系统隔离。
  2. 文件系统隔离:文件系统隔离可以让容器以映像的方式运行,其中包含应用程序、依赖项和环境设置。

下面是两个示例说明:

示例1:部署Vue.js应用程序的Docker容器

如果您正在使用Docker在Linux上部署Vue.js应用程序,您需要确保Docker Daemon已经以root身份运行。如果Docker Daemon以非root用户身份运行,您可以按照上述用户组那样添加当前用户到docker组中。

在Dockerfile中使用以下指令:

# 安装系统软件包和Node.js
RUN apt-get update && \
    apt-get install -y curl git && \
    curl -sL https://deb.nodesource.com/setup_10.x | bash && \
    apt-get install -y nodejs

# 将应用程序复制到容器中
COPY . /app

# 切换到应用程序所在目录并安装依赖项
WORKDIR /app
RUN npm install

# 运行npm start命令以启动应用程序
CMD ["npm", "start"]

该示例中的Dockerfile使用apt-get安装curl、git和Node.js。然后,将当前目录中的应用程序复制到容器中,并使用npm install安装应用程序依赖项。最后,使用CMD指令运行npm start命令。

为了构建和运行此应用程序的Docker镜像,您可以使用以下命令:

# 构建Docker镜像
docker build -t my-vue-app .

# 运行Docker容器
docker run --rm --name my-vue-app -p 8080:8080 my-vue-app

示例2:使用Docker运行Jupyter Notebook

如果您正在使用Docker运行Jupyter Notebook,您需要先确保您的用户已经在docker用户组中(以root身份运行Docker Daemon除外)。

在启动Jupyter Notebook时,需要将其配置为接受来自远程主机的连接并且需要指定Jupyter Notebook的token。运行以下命令以启动Jupyter Notebook:

$ docker run --rm -it -p 8888:8888 -v "$PWD":/home/jovyan/work jupyter/base-notebook start-notebook.sh --NotebookApp.token=''

该命令将启动带有Python、R和Julia内核的Jupyter Notebook,并将容器中的/home/jovyan/work映射到主机的当前目录。使用 --NotebookApp.token=''可以避免使用 token 认证,连接时不需要输入口令。

在此示例中,-p参数将容器中的端口8888映射到主机上的同一端口。在Jupyter Notebook中,将端口设为8888,即可通过浏览器打开:http://localhost:8888,在浏览器中执行Jupyter Notebook。

希望这篇文章能够帮助您更好地理解运行Docker需要的权限分析。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:运行docker需要的权限分析 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • docker gitlab意外强制关机导致gitlab启动后报错unexpected end of JSON input

    报错如下 2019-03-20_09:49:06.47576 level=error ts=2019-03-20T09:49:06.475516078Z caller=main.go:624 err=”opening storage failed: block dir: \”/var/opt/gitlab/prometheus/data/01D5NZDASZ…

    Docker 2023年4月13日
    00
  • docker<容器数据卷-v>对容器内数据持久化详解(备份)

    Docker容器数据卷(v)对容器内数据持久化详解(备份) 什么是Docker容器数据卷 Docker容器数据卷是一个可供容器使用的目录,位于容器的文件系统之外。容器可以读取和写入数据卷中的文件,而无需将数据复制到容器本身的文件系统中。这使得数据卷允许容器之间共享数据,同时也可以让容器在不删除其数据卷的情况下被删除和重新创建。 创建数据卷 使用以下命令创建一…

    Docker 2023年5月15日
    00
  • k8s 与docker空间使用分析与清理方法

    k8s 与 Docker 空间使用分析与清理方法 1. 使用 kubectl 进行 k8s 集群空间分析 首先需要登录到你的 k8s 集群的 master 节点上,然后使用 kubectl 命令行工具进行命令操作。 1.1 查看 k8s 集群 Pods 空间使用情况 通过以下命令可以查看 k8s 集群中所有 Pods 的空间使用情况: kubectl get…

    Docker 2023年5月16日
    00
  • 使用docker-compose运行springcloud项目

    前言:   学习Docker的过程中,一直想使用Docker运行SpringCloud程序,今天就将搭建过程记录下来,以作总结。 一、Docker安装   这里因为一些原因,被迫写了个Centos下的Docker安装脚本。至于为什么被迫,这里先埋下一个伏笔。 #!/bin/bash # Centos新版本Docker安装:https://www.cnblog…

    Docker 2023年4月11日
    00
  • docker的安装方式有哪些

    本篇内容主要讲解“docker的安装方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“docker的安装方式有哪些”吧! docker的安装方式 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也…

    Docker 2023年4月10日
    00
  • Docker部署脚本

    实现 1、检查内核版本 2、检查docker是否已安装 3、安装docker,如因网络等原因失败循环安装至安装完成 #!/bin/bash #file:docker_install.sh #From:suminem function docker_choice() {   echo “检查内核版本……”   yum -y install bc &am…

    Docker 2023年4月12日
    00
  • docker快速搭建kafka集群

    本文介绍如何在linux下利用docker快速搭建kafa单机集群 2.项目 地址:https://github.com/wurstmeister/kafka-docker 3.环境安装 3.1 安装docker-compose 1)安装Python3 参考Python系列 2)安装相关lib Ubuntu: sudo apt install -y libf…

    Docker 2023年4月13日
    00
  • docker-创建容器常见选项

    1. docker run创建容器常见选项 1.1 创建容器 选项 描述 -i,-interactive 交互式 -t,-tty 分配一个伪终端 -d,-detach 运行容器到后台 -e,-env 设置环境变量 -p(小写),-publish list 发布容器端口到主机 -P(大写),-publish -all 发布容器所有EXPOSE的端口到宿主机随机…

    Docker 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部