今天在某雲上新購一台雲服務器,發現已經有了 CentOS8.2 官方鏡像可選,出於對新鮮事物的好奇,我決定開始采用 CentOS8.2,即使我還沒有為它的新特性做好准備。
我的應用主要以單機版容器為主。因此,服務器啟動的第一件事就是安裝 Docker。不幸的事情發生了,我的 Docker 應用沒有像 CentOS7 那樣如期 running 起來。
花了大量的時間排查,才找到一絲線索:CentOS8 以上的版本默認已經安裝一個等同於 Podman 的容器解決方案。
兩個容器解決在一起工作,相互打架的事情必然會發生。出於長治久安的考量,今天整個下午我展開了對 Podman 的研究,得到了如下的結論,希望這些結論能夠讓大家少走一點彎路。
Podman 與 Docker 哪個好?
對於這種問題,我想沒有深刻的實踐是無法得出結論的。所以就我個人來說,只能從各種專業博客和論壇中尋找答案。
我發現 Podman 中文相關的資料非常少,同理,評價它的博客就更少了,倒是有一篇非常吸人眼球的文章,例如:Docker 大勢已去,Podman 萬歲。但認真閱讀它,卻沒有特別有價值的對比,完全是一種主觀的表達。因此,我們不要被他人的文章所引導(誤導)而形成一種偏見。
Podman 是 RedHat 為了搶占容器標准的一種戰略產品,這就是我的看法。
Podman 兼容 Docker嗎?
大部分是兼容的,例如:
1.可以直接使用 Docker 鏡像
2.命令非常相似
如果你非常懷念 docker命令,甚至可以給 Podman 設置別名為 docker:
echo "alias docker=podman" >> .bashrc
source .bashrc
Podman 鏡像
默認鏡像庫
文件 /etc/containers/registries.conf 是設置鏡像地址配置文件,默認會搜索 ['registry.access.redhat.com', 'registry.redhat.io', 'docker.io', 'quay.io']
等幾個鏡像庫。
不過,這幾個鏡像庫下載速度非常慢,可以說是基本無法順利的將鏡像拉下來。
所以,需要修改修改鏡像庫配置文件,也就是大家說的鏡像加速方案。
鏡像加速
只需4個步驟實現鏡像加速:
1.改名並備份好文件:/etc/containers/registries.conf
2.再新建一個空的 registries.conf 文件,插入如下內容
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "******.mirror.aliyuncs.com"
3.修改 location
-
阿里雲:https://<你的ID>.mirror.aliyuncs.com
-
七牛雲加速器:https://reg-mirror.qiniu.com
4.保存
Podman Compose
Podman Compose 等同於 Docker Compose,是用於固化容器運行參數以及協調容器之間的關系的一種較為簡單的方案。
使用如下的命令,安裝 Podman Compose,並根據自己的喜好設置別名(如果仍然忘不了 docker)
pip3 install podman-compose
echo "alias docker-compose=podman-compose" >> .bashrc
source .bashrc
Podman 外網
如果以普通用戶運行容器,此容器默認無法被外網訪問,為了避免不必要的麻煩,建議以root用戶創建並運行容器。
另外,run 容器的時候,請勿使用 -p 0.0.0.0:9090:80 這種端口映射方式,它會導致容器無法被外網訪問。如果采用正常的端口映射方式-p :9090:80,就沒有任何問題。
#無法被外網訪問
sudo podman run --name phpmyadmin --restart=always -itd -p 0.0.0.0:9090:80 -e
PMA_HOST=10.88.0.1 phpmyadmin/phpmyadmin
#可以被外網訪問
sudo podman run --name phpmyadmin --restart=always -itd -p 9090:80 -e
PMA_HOST=10.88.0.1 phpmyadmin/phpmyadmin
本文由Websoft9原創發布,轉載請注明出處。
