学妹小庄: 师哥,现在已经一点, 咱们能聊点敏感话题吗?

老辛: 可以啊

学妹小庄: 那我们开视频吧。

视频打开后,黑漆漆的,啥也看不到,没开灯!

学妹小庄:听说docker已经不火了,在centos8下直接使用podman替代了docker,是这样的吗?

老辛: 额(超敏感,前沿话题啊),是的,docker出现的原因是为了解决不同的环境之间,手工匹配的复杂程度。

但是docker在使用的过程中也会遇到问题,比如:“Docker 守护程序在多个核心上占用 100% CPU 资源,并导致主机无法正常使用。”

而Podman不需要守护程序,也不需要访问 root 权限组。Podman 能够替代大部分子命令(run, push, pull 等等)。由于不需要守护程序,而且会利用用户命名空间模拟容器中的 root,所以 Podman 不需要接入具有 root 权限的 socket——这就解决了 Docker 长期以来一直面临的老大难问题。

学妹小庄: 那你远程教教我吗?

老辛: 额,就这?(表达对师妹爱学习态度的肯定和赞赏)

那我们先从搭建开始做起吧,然后我会结合一个案例教你如何使用podman

文章目录

  • 一. 搭建podman
    • 1. 系统环境
    • 2. 更新dnf
    • 3. 安装podman
  • 二 . 搭建wordpress初始容器
    • 1. 查找centos8的镜像
    • 2. 下载centos8
  • 3. 基于镜像创建容器
  • 4. 进入容器
  • 三. 搭建wordpress
    • 1. 安装所需要的依赖包
    • 2. 启动安装好的服务
    • 3. 查看状态
    • 4. 配置数据库
    • 5. 下载wordpress
    • 6. 解压安装
    • 7. 配置apache
    • 8. 配置wordpress

一. 搭建podman

1. 系统环境

[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)

2. 更新dnf

注: dnf类似于yum,是centos8里面自带的软件管理器

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

(此处更新大约需要5分钟)

3. 安装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。

1. 查找centos8的镜像

[root@xinsz08-20 ~]# podman search centos:8  ## 查看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

2. 下载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 ~]# 

3. 基于镜像创建容器

使用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 ~]# 

4. 进入容器

使用命令进入容器

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

可以看到xshell上主机名变化

查看下hostname

[root@f42545980324 /]# hostname
f42545980324

三. 搭建wordpress

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

首先我们安装所需要的软件和服务

  • mariadb 为一个数据库,也可以用其他数据库。用于之后 wordpress 存储文章、用户等数据信息
  • httpd 是 apache 网站服务,wordpress 可以选择搭建在 apache 之上。当然还可以选择用 nigix。
  • php 是 wordpress 基于的脚本语言
  • wget 是常用的下载工具,之后会用于下载 wordpress 包

1. 安装所需要的依赖包

[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

2. 启动安装好的服务

[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 /]# 

3. 查看状态

出现running就证明没有问题,已经在运行

:q可以退出到非查看状态;

如果状态非active,则意味着有一些问题,可能是配置问题(但当前还没有进行配置,但之后可能会遇到,到时候可以通过报错提示的日志查看方式,确定问题所在),也可能是内存不足等等,可以使用top查看状态;

4. 配置数据库

进入数据库:

[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)

5. 下载wordpress

WordPress是php写的页面服务,跑在网站服务器上(apache或nigx),所以不需要安装。

这里选择安装至 /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]# 

6. 解压安装

[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对应于apache和apache组可读、可写、可执行,而其他组可读、不可写、可执行

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

7. 配置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 结尾的文件,一些比如ssl、webdav等常用的模块配置就位于这个文件夹中。

而我们的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@localhostDocumentRoot /var/www/wordpress<Directory "/var/www/wordpress">Options Indexes FollowSymLinksAllowOverride allRequire all granted</Directory>ErrorLog /var/log/httpd/wordpress_error.logCustomLog /var/log/httpd/wordpress_access.log common
</VirtualHost>

完成后Esc进入vi的普通模式,并键入 :wq 保存与退出。

之后重启apache服务

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

8. 配置wordpress

输入虚拟机的IP进行配置
192.168.1.20

选择中文



ITlaoxinJFedu1234!

输入用户名和密码就进入了后台哦。

学妹小庄: 哇,太厉害了,我去洗澡了,你早点睡吧。

老辛: 就这?(表达对学妹良好的作息习惯的肯定)

总结:
每一个新技术的出现,都是为了解决之前技术的痛点的, podman也不例外。

Podman(Pod Manager)是一个功能齐全的容器引擎,它是一个简单的无守护工具。 Podman提供了一个类似Docker-CLI的命令行,可以简化从其他容器引擎的转换,并允许管理pod,容器和图像。

你学会了吗?

【原力计划】深夜学妹发微信视频要聊的敏感话题居然是podman,聊天过程解密相关推荐

  1. Python 90行代码让微信地球转起来,你也可以!| 原力计划

    作者 | xiaorang 责编 | Aholiab 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 手机重启后打开微信的一瞬间,会看到一幅有名的图片,上面站着一个& ...

  2. 面试官跟我扯了半小时 CountDownLatch 后,给我发 Offer?| 原力计划

    作者 | 万猫学社 责编 | 王晓曼 出品 | CSDN博客 一个长头发.穿着清爽的小姐姐,拿着一个崭新的Mac笔记本向我走来,看着来势汹汹,我心想着肯定是技术大佬吧!但是我也是一个才华横溢的人,稳住 ...

  3. 为什么要学数据结构?| 原力计划

    作者 | 牧小农 责编 | 屠敏 出品 | CSDN 博客 前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利.很多人认为,只要掌握几种开发工具就 ...

  4. 斗地主吗?能学区块链那种! | 原力计划

    作者 | CharlesGuo2017 责编 | 王晓曼 出品 | CSDN博客 从记账开始 "If you can not explain it simply,you don't unde ...

  5. 你有真正理解 Java 的类加载机制吗?| 原力计划

    作者 | 宜春 责编 | Elle 出品 | CSDN 博客 你是否真的理解Java的类加载机制?点进文章的盆友不如先来做一道非常常见的面试题,如果你能做出来,可能你早已掌握并理解了Java的类加载机 ...

  6. 区块链共识算法总结 | 原力计划

    作者 | 日月ton光 责编 | 王晓曼 出品 | CSDN博客 常见共识算法介绍 在异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识.而在异步系统中,主机之间可能出现故障,因此 ...

  7. Google是如何做Code Review的?| CSDN原力计划

    作者 | 帅昕 xindoo 编辑 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  8. 美团BERT的探索和实践 | CSDN原力计划

    扫码参与CSDN"原力计划" 作者 | 杨扬 佳昊 金刚等 来源 | CSDN原力计划作品 *点击阅读原文,查看美团技术团队更多干货文章. 背景 2018年,自然语言处理(Natu ...

  9. CSDN”原力计划“在召唤:技术人请集结,用原创技术影响万千开发者

    技术深不可测.薪资难以想象.着装招人吐槽.发量让人惊叹.笑点着实密集.情商令人堪忧......在这个你我他她它通过网络紧密互联.消息实时互通的 21 世纪,人们对身处技术至高点的程序员们仍然有着以上不 ...

最新文章

  1. Hessian的使用以及理解(转)
  2. 逐行分析Hadoop的HelloWorld
  3. QML和C++混合编程--(三)
  4. 解决eclipse中Mybatis框架下sql语句执行后控制台不显示日志问题
  5. 同事反馈环:如何实现持续改进的文化
  6. python中sys模块是什么意思_python之sys模块详解
  7. Android Fragment + ViewPater + Fragment嵌套Fragment实战
  8. JHipster中文官网
  9. springboot 多线程_从零开始到架构,800页Java+并发+容器+多线程+高并发+Spring+SpringBoot源码...
  10. 华为证书有效期是多久?证书要到期了怎么办?
  11. win10专业版修改家庭计算机,win10家庭版升级专业版的最完美的方法_win10专业版技巧...
  12. 如何对比评价TOM邮箱、QQ邮箱,Gmail邮箱以及139邮箱?
  13. MARIADB数据库服务器
  14. 上海交大ACM班俞勇团队出新书了!
  15. CloudFlare的Worker免费部署服务
  16. web应用分析利器-xrebel
  17. VMware Tools (ubuntu系统)安装详细过程与使用
  18. 探访上汽通用武汉奥特能超级工厂
  19. jsx中文是什么牌子口红_cl口红是什么牌子 cl口红中文名字
  20. Zoom(多人手机云视频会议软件)

热门文章

  1. 软件测试的生命周期、Bug
  2. 职称计算机辅导:更改电脑IE收藏夹路径
  3. 《淘宝首页性能优化实践》文章阅读
  4. 支持swift3.0的开源库
  5. 柏睿数据董事长兼CTO刘睿民:未来数据库行业大有可为
  6. designer打开报错 qt_无法启动 Maya 集成的 qt designer 的解决方法和原因 以及 中英文切换...
  7. 云开发超多功能工具箱组合微信小程序源码/附带流量主功能介绍
  8. 如何高效的整理文献并做综述(使用docear)
  9. 数字逻辑——逻辑运算和算术运算
  10. python的dropna函数_Pandas DataFrame.dropna()用法