centos8 podman替代docker


 

Podman的介紹

centos8里面默認的容器就是podman,不再是docker,可以快捷管理鏡像(類似帶系統的Time

Machine),能快捷由鏡像創建容器環境(類似虛擬機,但不模擬硬件層),也可以快速由容器制作出

鏡像進行保存或者分享。

Podman是無守護程序容器引擎,用於在Linux系統上開發,管理和運行OCI容器。容器可以以root用戶

或無根模式運行。簡而言之: alias docker = podman

20k8s宣布棄用docker原本由 Docker 負責的工作現在基本都由紅帽發布的三款工具接管了,分別是 PodmanSkopeo

Buildah。它們都不需要守護程序,也不需要訪問 root 權限組

PodmanPod Manager)是一個功能齊全的容器引擎,它是一個簡單的無守護工具。 Podman提供了

一個類似Docker-CLI的命令行,可以簡化從其他容器引擎的轉換,並允許管理pod,容器和圖像。

Libpod 是一個創建容器 pod 的工具和庫,它包含 pod 管理工具 PodmanPodman 管理 pod、容

器、容器鏡像和容器卷。

Podman 原來是 CRI-O 項目的一部分,后來被分離成一個單獨的項目叫 libpodPodman 的使用體驗和

Docker 類似,不同的是 Podman 沒有 daemon[ˈdiːmən]

所以Podman 比較簡單粗暴,它不使用 Daemon,而是直接通過 OCI runtime(默認也是 runc )來啟

動容器,所以容器的進程是 podman 的子進程。

為什么會出現podman?

docker的出現,解決的根本問題是: 解決了不同環境之間手工匹配的復雜程度;

docker有個讓人頭疼的問題:“Docker 守護程序在多個核心上占用 100% CPU 資源,並導致主機無法

正常使用。

Podman不需要守護程序,也不需要訪問 root 權限組。Podman 能夠替代大部分子命令(run, push,

pull 等等)。由於不需要守護程序,而且會利用用戶命名空間模擬容器中的 root,所以 Podman 不需

要接入具有 root 權限的 socket——這就解決了 Docker 長期以來一直面臨的老大難問題。

搭建podman

系統環境

[root@xinsz08-20 ~]# uname -r 4.18.0-80.el8.x86_64 
[root@xinsz08-20 ~]# cat /etc/redhat-release 
CentOS Linux release 8.0.1905 (Core)

我們公司使用的系統

更新dnf

注: dnf類似於yum,是centos8里面自帶的軟件管理器

[root@xinsz08-20 ~]# dnf update -y && dnf makecache

 

安裝podman

[root@xinsz08-20 ~]# dnf install podman -y 
[root@xinsz08-20 ~]# podman -v podman version 2.2.1

 

搭建wordpress初始容器

Podman安裝完成后,我們選擇基於Centos 8的鏡像搭建WordPress

也可以直接在Docker Hub (Podman兼容Docker) 中找 WordPress的鏡像,會更快捷,

但是呢,我們說,運維玩的就是個折騰!

所以我們多折騰一步吧,了解一下具體結構,比如添加https,或者搭多個WordPress等自定需求。

首先可以嘗試用podman進行搜索centos 8的鏡像,用於之后搭建WordPress,有時候直接通過

podman search centos:8 找不到官方的image

查找centos8的鏡像

[root@xinsz08-20 ~]# podman search centos:8 
INDEX NAME DESCRIPTION 
STARS OFFICIAL AUTOMATED 
docker.io docker.io/yozhi/centos add some common tools to 
image centos:8.2.2... 0 
docker.io docker.io/dongyupu/jira-software tag 8.5.0 : 
centos:8(openjdk-1.8.0) tag 8.3.... 0 
docker.io docker.io/vssware/gmssl Base On vssware/centos:8 
1 
docker.io docker.io/vssware/python 基於 *vssware/centos:8* 鏡 
像創建,使... 0 
docker.io docker.io/images4dev/centos8 Based off the official 
CentOS:8.1.1911 image... 0 
docker.io docker.io/mizux/ortools Simple python ortools 
inside a centos:8 dock... 0 
docker.io docker.io/jlkinsel/centos-polylinux-example Example of a 
centos:8.1.1911 that's had pack... 0 
docker.io docker.io/thanasan/centos8-systemd Linux CentOS:8 systemd 
0 
docker.io docker.io/mohitaga98/centos1 centos:8 with additional 
internal commands(p... 0 
docker.io docker.io/meghna98/centos_with_httpd Centos:8 images with 
httpd installed 0 

下載centos8

[root@xinsz08-20 ~]# podman pull centos:8

查看拉取到本地的鏡像

[root@xinsz08-20 ~]# podman images 
REPOSITORY TAG IMAGE ID CREATED SIZE 
docker.io/library/centos 8 300e315adb2f 4 months ago 217 MB 
[root@xinsz08-20 ~]# podman image ls 
REPOSITORY TAG IMAGE ID CREATED SIZE 
docker.io/library/centos 8 300e315adb2f 4 months ago 217 MB 
[root@xinsz08-20 ~]# 

 

基於鏡像創建容器

使用podman run --help查看具體參數

--name mywordpress 將容器命名為mywordpress

-dit 是三個選項的合體,主要保證能夠在后台運行

-p 表示映射一個服務器端口至容器,比如映射80端口用於http的默認端口

443用於https的默認端口

/sbin/init 為賦予容器systemctl等命令的權限,方便后續管理

 

進入容器

 

[root@xinsz08-20 ~]# podman run --name mywordpress -dit -p 80:80 -p 443:443 
centos:8 /sbin/init 

查看當前的所有容器的狀態

[root@xinsz08-20 ~]# podman ps -a ## 查看所有的容器 
CONTAINER ID IMAGE COMMAND CREATED STATUS 
PORTS NAMES 
f42545980324 docker.io/library/centos:8 /sbin/init 25 seconds ago Up 22 
seconds ago 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp mywordpress 
[root@xinsz08-20 ~]# podman ps ## 查看正在運行的容器 
CONTAINER ID IMAGE COMMAND CREATED STATUS 
PORTS NAMES 
f42545980324 docker.io/library/centos:8 /sbin/init 30 seconds ago Up 27 
seconds ago 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp mywordpress 
[root@xinsz08-20 ~]# 

使用命令進入容器

[root@xinsz08-20 ~]# podman exec -it d7e62f7cf5c6 bash 
[root@f42545980324 /]#

可以看到xshell上主機名變化

 

 

查看下hostname

[root@f42545980324 /]# hostname 
f42545980324 

搭建wordpress

注意: 在容器中不建議使用dnf update, 會使容器不必要的增大很多

首先我們安裝所需要的軟件和服務

mariadb 為一個數據庫,也可以用其他數據庫。用於之后 wordpress 存儲文章、用戶等數據信息

httpd apache 網站服務,wordpress 可以選擇搭建在 apache 之上。當然還可以選擇用 nigix

php wordpress 基於的腳本語言

wget 是常用的下載工具,之后會用於下載 wordpress

[root@f42545980324 /]# dnf install mariadb mariadb-server httpd httpd-tools php 
php-cli php-json php-gd php-mbstring php-pdo php-xml php-mysqlnd php-pecl-zip 
wget -y 

啟動安裝好的服務

[root@f42545980324 /]# systemctl start httpd 
[root@f42545980324 /]# systemctl start mariadb 
[root@f42545980324 /]# systemctl enable httpd 
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → 
/usr/lib/systemd/system/httpd.service. 
[root@f42545980324 /]# systemctl enable mariadb 
Created symlink /etc/systemd/system/mysql.service → 
/usr/lib/systemd/system/mariadb.service. 
Created symlink /etc/systemd/system/mysqld.service → 
/usr/lib/systemd/system/mariadb.service. 
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → 
/usr/lib/systemd/system/mariadb.service. 
[root@f42545980324 /]#

查看狀態

 

 

q可以退出到非查看狀態;

如果狀態非active,則意味着有一些問題,可能是配置問題(但當前還沒有進行配置,但之后可能會遇

到,到時候可以通過報錯提示的日志查看方式,確定問題所在),也可能是內存不足等等,可以使用top

瞅一瞅內存狀態。

配置數據庫

進入數據庫:

[root@f42545980324 /]# mysql -uroot -p 
Enter password: 

創建mywordpress數據庫,名字可以自定,但需要記住,之后配置wordpress需要用到:

MariaDB [(none)]> create database mywordpress; 
Query OK, 1 row affected (0.001 sec) 
MariaDB [(none)]> GRANT ALL ON mywordpress.* TO 'wordpressuser'@'localhost' 
IDENTIFIED BY 'mywordpresspassword'; 
Query OK, 0 rows affected (0.000 sec) 
MariaDB [(none)]> flush privileges; 
Query OK, 0 rows affected (0.000 sec) 

下載wordpress

WordPressphp寫的頁面服務,跑在網站服務器上(apachenigx),所以不需要安裝。管理起來也

幾乎和管理一堆網頁文件差別不大。

這里選擇安裝至 /var/www 目錄下

[root@f42545980324 /]# cd /var/www/ 
[root@f42545980324 www]# wget https://wordpress.org/latest.tar.gz
[root@f42545980324 www]# ls 
cgi-bin html latest.tar.gz 
[root@f42545980324 www]#

 

解壓

[root@f42545980324 www]# ls 
cgi-bin html latest.tar.gz 
[root@f42545980324 www]# 
[root@f42545980324 www]# tar xf latest.tar.gz 
[root@f42545980324 www]# ls -l 
total 15388 
drwxr-xr-x. 2 root root 6 Nov 4 03:23 cgi-bin 
drwxr-xr-x. 2 root root 6 Nov 4 03:23 html 
-rw-r--r--. 1 root root 15750352 Apr 15 02:08 latest.tar.gz 
drwxr-xr-x. 5 nobody nobody 4096 Apr 15 02:08 wordpress 
[root@f42545980324 www]# 

此時文件夾的所屬者是nobody,需要將其修改為apache,並賦予權限,使WordPress能修改自己的配

置或者自動更新等等。

首先將擁有者修改為apache,所屬group也修改為apache -R參數表示遞歸修改,會一起修改文件夾

內所有文件,-f是不看報錯消息,可以不加f

775對應於apacheapache組可讀、可寫、可執行,而其他組可讀、不可寫、可執行

[root@f42545980324 www]# chown -Rf apache:apache ./wordpress/ 
[root@f42545980324 www]# chmod -Rf 775 ./wordpress/ 

配置apache

[root@f42545980324 www]# cd /etc/httpd/ 
[root@f42545980324 httpd]# ls 
conf conf.d conf.modules.d logs modules run state 
[root@f42545980324 httpd]# 

其中conf是主配置文件夾,開啟運行時apacha會優先加載其中的配置文件 httpd.conf ,可以查閱其配

置,每一條官方都自帶有比較詳細的備注和說明。

conf.d是額外配置的文件夾,根據httpd.conf中的配置,appache會默認加載里面所有以 .conf 結尾的文

件。

conf.modules.d是模塊的配置文件夾,根據httpd.conf中的配置,appache也會默認加載這里面所有以

.conf 結尾的文件,一些比如sslwebdav等常用的模塊配置就位於這個文件夾中。

而我們的wordpress配置可以放在conf.d中,首先進入conf.d,用vi創建並編輯配置文件:

[root@f42545980324 httpd]# cd /etc/httpd/conf.d/ 
[root@f42545980324 conf.d]# vim mywordpress.conf #此時還沒有vim 
bash: vim: command not found 
[root@f42545980324 conf.d]# vi mywordpress.conf 
[root@f42545980324 conf.d]#

粘進下方配置

服務監聽 80 端口

服務根文件夾為 /var/www/wordpress

給文件夾配置服務權限和跳轉方式

[root@f42545980324 conf.d]# cat mywordpress.conf 
<VirtualHost *:80> 
ServerAdmin root@localhost 
DocumentRoot /var/www/wordpress 
<Directory "/var/www/wordpress"> 
Options Indexes FollowSymLinks 
AllowOverride all 
Require all granted 
</Directory> 
ErrorLog /var/log/httpd/wordpress_error.log 
CustomLog /var/log/httpd/wordpress_access.log common 
</VirtualHost> 

完成后Esc進入vi的普通模式,並鍵入 :wq 保存與退出。

之后重啟apache服務

[root@f42545980324 conf.d]# systemctl restart httpd

配置wordpress

通過頁面端訪問配置wordpress時候必用:

wordpressuser

mywordpresspassword

mywordpress

 

[root@d7e62f7cf5c6 wordpress]# vi wp-config-sample.php

vim 
define( 'DB_NAME', 'mywordpress' ); 
24
25 /** MySQL database username */ 
26 define( 'DB_USER', 'wordpressuser' ); 
27
28 /** MySQL database password */ 
29 define( 'DB_PASSWORD', 'mywordpresspassword' ); 
30
31 /** MySQL hostname */ 
32 define( 'DB_HOST', 'localhost' ); 

cp wp-config-sample.php wp-config.php

輸入虛擬機的IP進行配置

192.168.1.20

 

 

選擇中文

 

 

 

 

根據提示一步步填入信息,最后輸入用戶名和密碼就進入了后台哦。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM