服务器运行环境隔离方法(容器化)

服务器运行环境隔离方法(容器化)

一些环境隔离方法

  • 虚拟化: 使用虚拟化技术,如 VMware、VirtualBox 或 KVM,可以在物理服务器上创建多个虚拟服务器,每个虚拟服务器都有自己独立的操作系统和资源。这提供了强大的隔离,防止一个虚拟机的问题影响其他虚拟机。
  • 容器化: 使用容器技术,如 Docker,可以将应用程序及其依赖项打包成一个独立的容器。每个容器运行在独立的环境中,与主机和其他容器隔离。这提供了更轻量级的隔离,同时提高了灵活性和可移植性。
  • 操作系统级别的隔离: 使用操作系统级别的隔离技术,如 Linux 的容器(LXC)或 FreeBSD 的 jails。这些技术允许将进程和文件系统隔离开来,每个隔离的环境都有自己的文件系统和进程空间。

这里,综合考虑实验室设备情况以及管理实现难度,我们选择的容器化技术,通过Docker实现环境隔离,Docker是一种轻量级容器技术,通过将应用程序及其依赖项打包成独立的容器,提供了一致性和可移植性。Portainer是一个用于简化Docker容器管理的开源工具,提供直观的Web界面,使用户能够轻松查看、创建、启动和停止Docker容器。

alter-text
实验室容器化平台使用方式

Docker 简介

Docker 是一种开源的容器化平台,用于轻松地构建、打包、运输和运行应用程序。Docker 提供了一种将应用程序和其所有依赖项打包成一个独立的、可移植的容器的方法,这个容器可以在任何支持 Docker 的环境中运行,而不受底层系统的影响。

alter-text
Docker overview

Portainer 简介

Portainer 是一个开源的轻量级容器管理工具,主要用于简化 Docker 容器的管理。通过提供直观的图形用户界面,Portainer 能够让用户轻松地查看、创建、启动、停止和管理 Docker 容器以及相关资源。

alter-text
Portainer overview

配置环境过程

Ubuntu 22.04 LTS (GNU/Linux 5.15.0-25-generic x86_64)

Docker 安装

安装 Docker 在 Ubuntu 上可以通过官方的安装脚本或者通过 apt 包管理工具进行。以下是两种常见的方法:

方法一:使用官方安装脚本

  1. 更新 apt 软件包索引:

    sudo apt update
    
  2. 安装必要的依赖:

    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    
  3. 添加 Docker GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
  4. 设置稳定版 Docker 存储库:

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  5. 更新 apt 软件包索引:

    sudo apt update
    
  6. 安装 Docker 引擎:

    sudo apt install docker-ce docker-ce-cli containerd.io
    
  7. 验证 Docker 是否安装成功:

    sudo docker --version
    

方法二:使用 apt 安装

  1. 更新 apt 软件包索引:

    sudo apt update
    
  2. 安装 Docker 引擎:

    sudo apt install docker.io
    
  3. 启动 Docker 服务并设置开机自启:

    sudo systemctl start docker
    sudo systemctl enable docker
    
  4. 验证 Docker 是否安装成功:

    sudo docker --version
    

当前用户没有足够的权限来访问 Docker 守护程序的 Unix 套接字, 通常,解决这个问题的一种方法是将当前用户添加到 docker 组中,以便其具有访问 Docker 的权限。 以下是解决此问题的步骤:

  1. 将当前用户添加到 docker 组:

    sudo gpasswd -a $USER docker
    newgrp docker
    

    这会将当前用户添加到 docker 组中。请注意,这个变更在用户重新登录后才会生效。

  2. 重新登录: 退出当前终端窗口并重新登录,以确保组成员资格生效。

  3. 验证 Docker 权限: 在重新登录后,运行以下命令来验证 Docker 是否现在可以由当前用户访问:

    docker run hello-world
    

    如果你不再看到 “permission denied” 错误,说明问题已经解决。

请注意,为了应用组成员资格的更改,你可能需要重启 Docker 服务。你可以执行以下命令:

sudo systemctl restart docker

Portainer 是一个用于管理 Docker 容器的开源工具,提供用户友好的 Web 界面。以下是在 Docker 中安装 Portainer 的步骤:

  1. 创建一个 Docker 网络(可选): 这一步是可选的,但它有助于隔离 Portainer 的网络。执行以下命令:

    docker network create portainer-net
    
  2. 运行 Portainer 容器:

    docker run -d -p 9000:9000 --name portainer --network portainer-net -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer --restart=always 
    
    • -d: 在后台运行容器。
    • -p 9000:9000: 将容器的 9000 端口映射到主机的 9000 端口。
    • --name portainer: 为容器指定一个名称,这里是 “portainer”。
    • --network portainer-net: 将容器连接到之前创建的网络(如果有的话)。
    • -v /var/run/docker.sock:/var/run/docker.sock: 允许 Portainer 访问 Docker 守护程序的 Unix 套接字。
    • portainer/portainer: 使用 Portainer 的官方 Docker 镜像。
    • --restart=always: 断电自启动
  3. 访问 Portainer Web 界面: 打开浏览器,访问 http://localhost:9000,你将会看到 Portainer 的登录页面。

  4. 设置管理员密码: 在首次访问时,你需要设置一个管理员账户的密码。选择 “Manage the Docker instance where Portainer is running” 以连接到本地 Docker 守护程序。

  5. 选择 Docker 环境: 在 “Endpoint” 部分,选择 “Docker” 以连接到本地 Docker 守护程序。

  6. 完成安装: 设置完成后,点击 “Connect”,你将进入 Portainer 的仪表板,可以在其中管理 Docker 容器、镜像、网络等。

安装NVIDIA Container Toolkit (如果你不是GPU服务器或者没有GPU虚拟化需求跳过这一步)

添加 NVIDIA Docker 的软件包存储库并在系统上安装 NVIDIA Container Toolkit。该工具包对将 NVIDIA GPU 与 Docker 容器集成有用。

让我们分解一下你提供的命令:

  1. 添加软件包存储库:

    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    
    • 第一行获取发行版信息。
    • 第二行获取 NVIDIA Docker GPG 密钥并将其添加到系统中。
    • 第三行根据你的发行版获取 NVIDIA Docker 存储库信息,并将其追加到 apt 源中。
  2. 更新软件包列表并安装 NVIDIA Container Toolkit:

    sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
    
    • sudo apt-get update:刷新软件包列表以包括新添加的 NVIDIA Docker 存储库。
    • sudo apt-get install -y nvidia-container-toolkit:安装 NVIDIA Container Toolkit。
  3. 重新启动 Docker:

    sudo systemctl restart docker
    
    • 重新启动 Docker 服务以应用通过安装 NVIDIA Container Toolkit 所做的更改。
Related posts

Related Posts

编译Alluxio源代码

编译Alluxio源代码

0. 编译环境构建 (ssh dcache@xxxxxx)这个服务器已经构建了编译环境,如果如果只需要重编译alluxio直接从1小节开始。 编译Alluxio源代码 - Alluxio v2.9.3 (stable) 安装alluxio build https://hub.

Read More
分布式缓存集群下数据分配策略

分布式缓存集群下数据分配策略

Data Location Awareness: Optimize Performance and Lower Cost with Tiered Locality Ref

Read More
冠词

冠词

冠词的基本含义 冠词是用来修饰名词的一类词,主要用于指出名词的泛指或特指状态。在中文中没有冠词,但在英文等许多其他语言中,冠词是非常重要的语法成分。英文中的冠词主要有两种类型:定冠词和不定冠词。 不定冠词(an, a):用于泛指某一类人或事物。表示“一个(任意一个)”,常用语系列词后的单数名词(可数名词作表语)前,表示某人、某物属于哪个类别,用于泛指某人、某物或指某一类人或某一类物中的任何一个。例如,“a book” 表示“一本书”,泛指任何一本书。“an” 用于元音音开头的单词前,如 “an apple”。 定冠词(the):用于特指某个已知的人或事物。表示特指某一个或者某一些,而不是任何一个或者任何一些。例如,“the book” 表示“那本书”,指特定的一本书。 冠词的使用注意 某可数名词单数首次出现时,通常先用不定冠词。第二次在提到时就改用定冠词。 Boys often like dogs very much.

Read More