最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用非root用戶安裝及啟動(dòng)docker的問(wèn)題(rootless模式運(yùn)行)

 更新時(shí)間:2022年05月21日 08:50:59   作者:字母哥哥  
docker是使用--userns-remap容器用戶映射宿主機(jī)用戶的方式來(lái)解決問(wèn)題,用戶和組的映射由兩個(gè)配置文件來(lái)控制,分別是/etc/subuid和/etc/subgid,本文給大家介紹非root用戶啟動(dòng)docker的問(wèn)題,感興趣的朋友一起看看吧

通過(guò)我之前的文章已經(jīng)可以驗(yàn)證,在root用戶下安裝啟動(dòng)的容器存在安全問(wèn)題。究其原因是因?yàn)椋?/p>

  • 容器內(nèi)的root用戶就是宿主機(jī)的root用戶,容器內(nèi)uid=1000的用戶就是宿主機(jī)uid=1000的用戶
  • docker的守護(hù)進(jìn)程是root權(quán)限的

既然我們知道了原因,那么我們就來(lái)解決一下這兩個(gè)問(wèn)題。

一、容器用戶與宿主機(jī)用戶映射

docker是使用--userns-remap容器用戶映射宿主機(jī)用戶的方式來(lái)解決問(wèn)題,具體的方法描述如下:

用戶和組的映射由兩個(gè)配置文件來(lái)控制,分別是/etc/subuid/etc/subgid。

echo "zimug:100000:65536" | tee /etc/subuid;
echo "zimug:100000:65536" | tee /etc/subgid;

subuid(sub子uid用戶id):對(duì)于subuid的這一行表示,宿主機(jī)用戶zimug的用戶ip段為[100000,10000+65535]。也就是說(shuō),使用zimug這個(gè)宿主機(jī)啟動(dòng)容器,容器內(nèi)的用戶uid與宿主機(jī)內(nèi)的用戶uid存在關(guān)系。也就是說(shuō)按照上面的配置

  • zimug這個(gè)用戶的容器子用戶id(subuid),只能在[100000-165535]之間進(jìn)行分配。[0-99999]這個(gè)區(qū)間范圍內(nèi)的uid仍然保留給宿主機(jī)進(jìn)行使用。
  • 使用zimug啟動(dòng)的第一個(gè)容器,容器用戶root(uid=0)對(duì)應(yīng)的宿主機(jī)用戶應(yīng)該是uid=100000(不是宿主機(jī)root用戶)
  • 使用zimug啟動(dòng)的第二個(gè)容器,容器用戶root(uid-0)對(duì)應(yīng)的宿主機(jī)用戶可能是uid=101000(也不是宿主機(jī)root用戶)
  • subgid表示的是用戶組id的映射關(guān)系,映射原理和uid是一致的。

二、在非root用戶下運(yùn)行docker守護(hù)進(jìn)程

2.1.docker版本要求

既然root用戶的提權(quán)問(wèn)題解決了,我們就要解決下一個(gè)問(wèn)題:docker的守護(hù)進(jìn)程是root權(quán)限的,即運(yùn)行docker守護(hù)進(jìn)程的用戶仍然是root。我們需要做如下修正:

也就是我們要在非root用戶下安裝docker,并啟動(dòng)docker守護(hù)進(jìn)程,這種安裝及運(yùn)行模式被稱為“RootLess”模式??梢园惭b但是存在先決條件:“RootLess”模式是在 Docker Engine v19.03 中作為實(shí)驗(yàn)性功能引入的,從 Docker Engine v20.10 開(kāi)始提供正式使用。

2.2. 前置條件

需要安裝newuidmapnewgidmap工具shadow-utils,即配置上文中的/etc/subuid/etc/subuid需要這兩個(gè)工具的支持。安裝之前使用yum list installed shadow-utils確認(rèn)下是否已經(jīng)安裝過(guò)或者操作系統(tǒng)自帶,如果存在就不要安裝了,但第三步的配置是需要的。
第一步:添加一個(gè)軟件包安裝源,該源下面包含shadow-utils46-newxidmap

curl -o /etc/yum.repos.d/vbatts-shadow-utils-newxidmap-epel-7.repo https://copr.fedorainfracloud.org/coprs/vbatts/shadow-utils-newxidmap/repo/epel-7/vbatts-shadow-utils-newxidmap-epel-7.repo

第二步: yum install -y shadow-utils46-newxidmap
第三步:在/etc/sysctl.conf文件中修改系統(tǒng)參數(shù)user.max_user_namespaces = 28633,修改完成之后執(zhí)行sysctl --system命令讓參數(shù)生效。

echo user.max_user_namespaces=28633 >> /etc/sysctl.d/userns.conf;
sudo sysctl -p /etc/sysctl.d/userns.conf;

該參數(shù)默認(rèn)值是0,即不允許操作系統(tǒng)用戶存在subuid空間。上面的操作完成之后使用sysctl --all --pattern user_namespaces命令驗(yàn)證修改的結(jié)果。

2.3.開(kāi)始rootless模式安裝

root用戶下確保已經(jīng)執(zhí)行下列命令進(jìn)行用戶id關(guān)系配置

echo "zimug:100000:65536" | tee /etc/subuid;
echo "zimug:100000:65536" | tee /etc/subgid;

我已經(jīng)新建了一個(gè)linux用戶zimug,使用su - zimug切換到該用戶下,執(zhí)行安裝腳本,該安裝腳本需要連網(wǎng)。

curl -fsSL https://get.docker.com/rootless | sh

腳本執(zhí)行完成之后,顯示的內(nèi)容如下:

將上圖中安裝過(guò)程提示的export內(nèi)容添加到 ~/.bashrc 文件中,添加完使用source ~/.bashrc命令使環(huán)境變量生效。注意:你的環(huán)境變量和我的一定不一致,要copy上圖中紅色部分。

export XDG_RUNTIME_DIR=/home/zimug/.docker/run
export PATH=/home/zimug/bin:$PATH
export DOCKER_HOST=unix:///home/zimug/.docker/run/docker.sock

2.4.啟動(dòng)守護(hù)進(jìn)程運(yùn)行容器

在zimug用戶下使用下面的腳本啟動(dòng)docker守護(hù)進(jìn)程,該腳本在上文中的環(huán)境變量PATH目錄下,所以我們不用寫全路徑。注意:我們這里使用了 --experimental --storage-driver vfs參數(shù)啟動(dòng),因?yàn)槲业膌inux內(nèi)核版本比較低所以需要加這個(gè)參數(shù),后文我會(huì)說(shuō)明原因。

dockerd-rootless.sh --experimental --storage-driver vfs

啟動(dòng)一個(gè)容器我們嘗試一下,注意宿主機(jī)映射的端口不能小于1024,因?yàn)閘inux非root用戶不能使用1024以下的端口。

docker run -d --name nginx-zimug -p  8080:80  nginx

訪問(wèn)nginx服務(wù)看到界面就證明nginx服務(wù)沒(méi)有問(wèn)題,同時(shí)注意宿主機(jī)防火墻開(kāi)放8080端口訪問(wèn),這個(gè)我就不說(shuō)了。

三、存在若干已知的限制。

官方文檔說(shuō)的是known-limitations,也就是已知的受限因素是下面這些,未知的受限因素還不一定有多少呢。所以筆者針對(duì)rootless模式目前也只是研究,還沒(méi)有在生產(chǎn)上能夠正式使用(2022年4月6日)。雖然它很安全,但是如果坑太多的話,我也受不了啊。

  • 目前僅支持以下存儲(chǔ)驅(qū)動(dòng)程序:
  • overlay2(僅當(dāng)使用內(nèi)核 5.11 或更高版本或 Ubuntu 發(fā)行版本的內(nèi)核運(yùn)行時(shí),才能夠支持這個(gè)存儲(chǔ)驅(qū)動(dòng))。上文中我的內(nèi)核版本是3.10達(dá)不到要求。
  • fuse-overlayfs(僅當(dāng)使用內(nèi)核 4.18 或更高版本運(yùn)行并fuse-overlayfs被安裝時(shí))
  • btrfs(僅當(dāng)使用內(nèi)核 4.18 或更高版本運(yùn)行,或者~/.local/share/docker使用user_subvol_rm_allowed掛載選項(xiàng)掛載時(shí))
  • vfs 兼容性最好,但這個(gè)存儲(chǔ)驅(qū)動(dòng)目前僅能用于實(shí)驗(yàn),不能用于生產(chǎn)。
  • 只有在使用 cgroup v2 和 systemd 運(yùn)行時(shí)才支持 Cgroup。
  • 不支持以下功能:
  • AppArmor
  • Checkpoint
  • Overlay網(wǎng)絡(luò)模式
  • 暴漏SCTP 端口

四、卸載Rootless docker

在非root用戶(我用的是zimug用戶)下執(zhí)行下列命令,完成docker rootless卸載
第一步:

rootlesskit rm -rf ~/.local/share/docker

第二步:

$ cd ~/bin 
$ rm -f containerd containerd-shim containerd-shim-runc-v2 ctr docker docker-init docker-proxy dockerd dockerd-rootless-setuptool.sh dockerd-rootless.sh rootlesskit rootlesskit-docker-proxy runc vpnkit

第三步: 把上文中在 ~/.bashrc 文件中添加的環(huán)境變量刪掉。

到此這篇關(guān)于使用非root用戶安裝及啟動(dòng)docker(rootless模式運(yùn)行)的文章就介紹到這了,更多相關(guān)非root用戶啟動(dòng)docker內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用

    skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用

    這篇文章主要為大家介紹了skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用的構(gòu)建部署過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Docker批量刪除特定前綴的鏡像Tag的方法

    Docker批量刪除特定前綴的鏡像Tag的方法

    在 Docker 容器化技術(shù)日益普及的今天,鏡像管理成為了一個(gè)不可忽視的問(wèn)題,隨著項(xiàng)目的發(fā)展,鏡像的數(shù)量會(huì)迅速增加,特別是當(dāng)我們頻繁地構(gòu)建和推送新版本時(shí),如果不及時(shí)清理,這些鏡像會(huì)占用大量的存儲(chǔ)空間,影響系統(tǒng)性能,本文介紹了Docker批量刪除特定前綴的鏡像Tag的方法
    2024-11-11
  • 詳解Docker掛載本地目錄及實(shí)現(xiàn)文件共享的方法

    詳解Docker掛載本地目錄及實(shí)現(xiàn)文件共享的方法

    本篇文章主要介紹了詳解Docker掛載本地目錄及實(shí)現(xiàn)文件共享的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 詳解如何獲取docker容器(container)的ip地址

    詳解如何獲取docker容器(container)的ip地址

    這篇文章主要介紹了詳解如何獲取docker容器(container)的ip地址,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 使用docker+devpi搭建本地pypi源的方法

    使用docker+devpi搭建本地pypi源的方法

    這篇文章主要介紹了使用docker+devpi搭建本地pypi源的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • Linux 離線安裝docker的過(guò)程(一鍵式安裝)

    Linux 離線安裝docker的過(guò)程(一鍵式安裝)

    這篇文章主要介紹了Linux 離線安裝docker(一鍵式安裝)的方法,非常簡(jiǎn)單,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • docker運(yùn)行nginx容器并掛載數(shù)據(jù)卷

    docker運(yùn)行nginx容器并掛載數(shù)據(jù)卷

    本文主要介紹了docker運(yùn)行nginx容器,并通過(guò)掛載目錄將容器與宿主機(jī)的數(shù)據(jù)進(jìn)行共享和統(tǒng)一管理,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • Docker搭建Gogs的實(shí)現(xiàn)步驟

    Docker搭建Gogs的實(shí)現(xiàn)步驟

    本文主要介紹了Docker搭建Gogs的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • 物理機(jī)與啟動(dòng)的Docker容器間的目錄映射方式

    物理機(jī)與啟動(dòng)的Docker容器間的目錄映射方式

    這篇文章主要介紹了物理機(jī)與啟動(dòng)的Docker容器間的目錄映射方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker部署后端項(xiàng)目的實(shí)現(xiàn)步驟

    Docker部署后端項(xiàng)目的實(shí)現(xiàn)步驟

    本文主要介紹了Docker部署后端項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03

最新評(píng)論

韶山市| 宜丰县| 北流市| 罗山县| 安化县| 灵寿县| 青州市| 荔波县| 林口县| 云霄县| 汶川县| 加查县| 汉阴县| 宁远县| 华阴市| 清河县| 留坝县| 荣昌县| 新丰县| 三台县| 赞皇县| 柘城县| 启东市| 始兴县| 乌苏市| 玛多县| 那坡县| 吐鲁番市| 额济纳旗| 仪征市| 黑水县| 鸡泽县| 丰镇市| 花垣县| 洛浦县| 股票| 河东区| 南宁市| 团风县| 若羌县| 贡嘎县|