<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Podman是一個無守護行程、開源的原生容器工具,旨在基於 Open Containers Initiative ( OCI )組織及規範,讓映象容器能夠輕鬆查詢、執行、構建、共用和部署應用程式。
提到podman就不能不說說OCI,這個組織有點意思。Docker容器技術出現並且迅速風靡全球,為傳統的持續整合與持續釋出領域帶來了革命性的變化。 這個時候各個大佬們(谷歌,Redhat、微軟、IBM、Intel、思科)就有點坐不住了,大家一起喝喝茶聊聊天就決定要成立一個新的組織:OCI。這個組織成立的目的很明顯,就是要防止容器技術被docker一家壟斷。docker方面雖然心不甘、情不願,但是也沒有什麼太好的辦法,也加入了該組織,畢竟胳膊擰不過大腿。另外還有以下幾個原因
有的朋友說podman是docker執行、構建、共用的輔助工具,這麼說並不正確哈,podman目前的發展其本身就是一種獨立的容器技術,其執行時環境不依賴於docker。
硬傷一:docker存在一個名為dockerd 的程序,會佔用比較多的CPU資源。同時一個dockerd守護行程還可能導致單點故障的問題,該守護行程掛掉了,容器也就無法正常提供服務。
硬傷二:docker守護行程以root使用者執行,這給作業系統的安全性和容器安全性帶來了非常大的挑戰。
然而Podman 不需要以 root 身份執行的守護行程,Podman 容器的執行許可權與啟動它們的linux使用者相同,這解決了一個重大的安全問題。Podman 是一個無守護行程的容器引擎,並且Podman 不需要守護行程來啟動和管理容器。這是兩個開源專案之間的一個最重要區別。這也是筆者看好podman未來會代替docker成為主流容器技術的核心原因。
如果你使用過docker的CLI命令列,podman幾乎沒有任何的區別,只需要把docker換成podman即可,引數順序、含義都是一樣的。如:
docker pull nginx 換成 podman pull nginx 即可
如果你不想將docker命令換成podman,因為這樣需要修改以往的指令碼。也可以通過對映命令alias docker=podman
來實現,這樣就可以無縫的將docker遷移到podman環境下使用。
另外容器映象格式方面在 Docker 和 Podman 之間也是完全相容的。所以現有的映象,不論是docker官方映象,還是我們以往自己構建的docker映象,都可以在podman環境下使用。
下面我們就來簡單的搞一搞,在CentOS作業系統可以直接使用yum命令安裝podman。事先說明的是我這個是一臺新的最小化安裝的CentOS7虛擬機器器,並不包含docker,也不曾安裝。
yum -y install podman # root使用者安裝
檢視版本
# podman version Version: 1.6.4 RemoteAPI Version: 1 Go Version: go1.12.12 OS/Arch: linux/amd64
新建podman使用者,後續使用該使用者執行容器。
adduser podman # root使用者新建podman使用者
adduser podman # root使用者新建podman使用者
出於上文中所說的安全性考慮,我們不使用root使用者操作映象及容器。所以需要做如下的一些設定。
如果你使用CentOS7,需要做如下的一些特殊處理。其他的作業系統可能需要不同的解決方案,這些解決方案基本大同小異。
如果你使用root使用者執行映象容器,這些特殊處理就不需要做,直接就可以用
CentOS7預設關閉使用者namespace,將它開啟
echo 10000 > /proc/sys/user/max_user_namespaces; grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"; echo "user.max_user_namespaces=10000" >> /etc/sysctl.conf;
嘗試在linux宿主機作業系統新建使用者podman使用者環境下執行nginx映象拉取
su - podman # 切換使用者為podman podman pull docker.io/library/nginx # 執行拉取映象
如果你有如下的報錯資訊
su - podman # 切換使用者為podman podman pull docker.io/library/nginx # 執行拉取映象
或者如下報錯資訊
Error processing tar file(exit status 1): there might not be enough IDs available in the namespace
請退出podman使用者切換回到root使用者(exit命令),執行下列命令,podman為執行容器的一個非root使用者
echo "podman:100000:65536" >> /etc/subuid echo "podman:100000:65536" >> /etc/subgid
這段設定的作用就是設定一個容器內的作業系統與宿主機作業系統使用者的uid、gid之間的對映關係。如上所示 100000 - 165535(100000 + 65535) 在宿主機的id就對映到容器內的 0-65535的使用者。設定完之後執行如下命令
podman system migrate
官方解釋上面的命令可以讓設定生效,但是不知道什麼原因,筆者執行該命令設定並未生效,而是重啟了一下作業系統才生效。
同樣的先把root切換到宿主機的podman使用者
su - podman
拉取映象命令
$ podman pull docker.io/library/nginx Trying to pull docker.io/library/nginx... Getting image source signatures Copying blob 1ae07ab881bd done Copying blob 091c283c6a66 done Copying blob 78091884b7be done Copying blob 5eb5b503b376 done Copying blob b559bad762be done Copying blob 55de5851019b done Copying config c316d5a335 done Writing manifest to image destination Storing signatures c316d5a335a5cf324b0dc83b3da82d7608724769f6454f6d9a621f3ec2534a5a
檢視映象列表(在x使用者下拉取的映象,在y使用者下是檢視不到的)
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/nginx latest c316d5a335a5 2 weeks ago 146 MB
執行容器映象
podman run -p 8080:80 -d docker.io/library/nginx
其他的命令就不一一的列舉了,和docker命令執行方式是一模一樣的,引數順序、名稱也是一摸一樣的。
在單機環境下docker可以無縫的切換到podman環境,對docker-swarm或dcoker-compose支援需要驗證,但筆者幾乎從來不用這兩個東西,所以暫時沒有驗證的動力。至於與k8s的相容性,我想這是一定的,而且會越來越好,因為OCI組織的首席大佬就是谷歌,不可能不支援自己的產品之間的相容性。
如果你使用root使用者操作podman容器,與docker幾乎是一模一樣的,甚至連命令列都不需要改。但是我們用podman代替docker的主要原因我想就是使用非root使用者,來提升容器安全性。所以不同的作業系統及版本需要針對非root使用者的許可權做一些額外設定,從而來滿足使用要求。
以上就是繼docker之後podman容器技術崛起的詳細內容,更多關於podman容器技術的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45