使用 Toolbox 构建容器中的开发环境(无需 root 权限)

发布于 2023-03-19 22:39:47 字数 2530 浏览 69 评论 0

Toolbox 允许你基于容器创建相互独立的开发环境,它与 Docker 不同之处在于,它的底层通过 podman 来实现(因此无需 root 权限)而且它会尝试将容器与现有的主机环境无缝整合起来。

安装 Toolbox

ArchLinux 上可以通过AUR来安装 Toolbox

yaourt -S toolbox

为当前用户创建用户命名空间的映射

podman 底层使用了 Linux 的用户命名空间来创建非 root 容器,因此我们还需要为当前用户创建用户命名空间的映射

sudo touch /etc/subuid
sudo usermod --add-subuids 10000-65535 $(whoami)
sudo touch /etc/subgid
sudo usermod --add-subgids 10000-65535 $(whoami)

这个时候你若执行 toolbox create 尝试创建容器时会得到错误提示:toolbox: failed to call org.freedesktop.Flatpak.SessionHelper.RequestSession

该错误信息告诉我们 toolbox 还依赖于 Flatpak

安装 Flatpak

sudo pacman -S flatpak

创建容器

执行 toolbox create --container 容器名 会下载一个 OCI 镜像(默认为 Fedora),并据此创建一个容器

lujun9972:~/ $ toolbox create --container dev1
No toolbox containers found. Create now? [y/N] y
Image required to create toolbox container.
Download registry.fedoraproject.org/f30/fedora-toolbox:30 (500MB)? [y/N]: y
Created container: dev1  
Enter with: toolbox enter --container dev1

进入容器进行环境配置

执行 toolbox enter --container 容器名 进入容器中,这时你会发现之前安装的许多软件都不见了,但是 $HOME 目录没有变化。

lujun9972:~/ $ emacs
bash: emacs: command not found
lujun9972:~/ $ ls |head
 1.txt
 2.mp4
'BOINC Manager-lujun9972'
 Child
 CodeLibrary
 Desktop
 Documents
 Downloads
 EAGET

你可以使用 dnf 来进行软件安装

lujun9972:~/ $ sudo dnf install gvim

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

No read/execute access in current directory, moving to /
Fedora Modular 30 - x86_64                    527 kB/s | 2.7 MB     00:05    
Fedora Modular 30 - x86_64 - Updates           27 kB/s | 3.3 MB     02:04    
Fedora 30 - x86_64 - Updates                  1.5 MB/s |  22 MB     00:14    
Fedora 30 - x86_64                            1.7 MB/s |  70 MB     00:40    
Dependencies resolved.

讲真,在 Archlinux 中使用 dnf,感觉真是怪怪的....

退出容器

退出容器就很简单了,直接执行 exit 就行了

其他操作

toolbox list
列出本机的容器和镜像
toolbox rm 容器名
删除指定容器
toolbox rmi 镜像名
删除指定镜像
toolbox help
帮助信息

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

狼性发作

暂无简介

文章
评论
25 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文