Centos8 初探
# C8源的处理
# C8 Base源 阿里源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
# EPEL
dnf install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
dnf repolist all
# 系统更新
dnf update
:: 设置自动更新
dnf install dnf-automatic
vim /etc/dnf/automatic.conf
---------------------------------------
如果想只下载不安装并邮件提醒
download_updates = yes
apply_updates = no
systemctl enable --now dnf-automatic.timer
systemctl list-timers *dnf-* --all
# 常用工具安装
dnf install net-tools (ifconfig,netstat...)
sudo dnf install -y bash-completion # 自动补全功能
# 其他工具安装
工具一: Cockpit Web Console 基于web图形化管理Centos的功能
官方站:https://cockpit-project.org/
yum install cockpit # 安装
systemctl start cockpit.socket # 启动
https://IP:9090 # 访问
Note: /etc/cockpit/ws-certs.d目录中调用证书,并使用.cert扩展文件。 为避免提示安全警告,请安装由证书颁发机构(CA)签名的证书。
工具二:
官方站:https://podman.io/ 替代Docker 的管理工具
工具简介:
Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。Podman 可以管理和运行任何符合 OCI(Open Container Initiative)规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像。Podman不需要运行一个守护进程(docker daemon)。
dnf install -y podman # 安装
# 设置镜像加速(不设置国内拉取镜像比较慢)
方法1:Podman 默认注册表配置文件在 /etc/containers/registries.conf
方法2: 在~/.config/containers 目录下新建一个文件registries.conf
方法1,方法2写入如下内容:
unqualified-search-registries = ["docker.io"] [[registry]] prefix = "docker.io" location = "1vs5nfat.mirror.aliyuncs.com" # 这个为你自己的镜像加速地址,注意:不要跟https
# 容器存放路径修改:
sudo vim ~/.config/containers/storage.conf 修改标红部分路径即可
# podman的容器如何设置自启动
方法1: ~/.config/systemd/user/<自定义容器的服务名>.service # 比较方便集中管理,目录需要自己创建,推荐!
方法2: /usr/lib/systemd/system/<自定义容器的服务名>.service
方法3: /etc/systemd/system/<自定义容器的服务名>.service
方法1 启动方法:
systemctl --user daemon-reload
systemctl --user enable <自定义容器的服务名>
systemctl --user start <自定义容器的服务名>
systemctl --user status <自定义容器的服务器名> # 查看状态
方法2,方法3 启动方法:
sudo systemctl daemon-reload
sudo systemctl enable <自定义容器的服务名>
sudo systemctl start <自定义容器的服务名>
sudo systemctl status <自定义容器的服务器名> # 查看状态
由于 Podman 不再使用守护进程管理服务,所以不能通过守护进程去实现自动重启容器的功能
vim /etc/systemd/system/nginx_podman.service # 创建并写入下面的信息
[Unit] Description=Podman Nginx Service After=network.target # 在网络启动以后 After=network-online.target # 在网络启动以后(如果有多个容器,可以设置在某个容器以后) [Service] Type=simple ExecStart=/usr/bin/podman start -a nginx ExecStop=/usr/bin/podman stop -t 10 nginx Restart=always [Install] WantedBy=multi-user.target
# 创建测试容器
podman run -dt -p 1180:80 --name nginx -v /home/loki/Test/data:/data -e NGINX_VERSION=1.16 nginx:1.16.0
-p <物理机端口>:<容器端口>
-v <物理机路径>:<容器路径>
# 迁移容器
# 迁移podman 导出到其他容器
$ sudo podman container checkpoint <容器名或ID> -e /tmp/<容器名>.tar.gz $ scp /tmp/<容器名>.tar.gz <目的地ServerIP>:/tmp
# 导入其他容器到podman
sudo podman container restore -i /tmp/<容器名>.tar.gz
# 防火墙相关 nftables
增:
增加表:nft add table fillter 增加链:nft add chain filter input 增加规则:nft add rule filter input tcp dport 1211 accept 插入规则: nft insert rule filter INPUT tcp dport 22 accept
注:使用index
来指定规则的索引。add
表示新规则添加在索引位置的规则后面,insert
表示新规则添加在索引位置的规则前面。index 的值从 0 开始增加。
删:
删除表:nft delete table fillter 删除链:nft delete chain filter input 删除规则:nft delete rule filter input tcp dport 1211 accept
查:
nft list ruleset # 列出所有规则 -a(结尾处) --handle(nft 之后) 使用 handle 来指定规则的句柄。add 表示新规则添加在索引位置的规则后面,insert 表示新规则添加在索引位置的规则前面。handle 的值可以通过参数 -a 获取 nft list tables # 列出所有表 nft list table filter # 列出filter表 nft chain filter input # 列出filter表input链 以上命令后面也可以加 -nn 用于不解析ip地址和端口 加 -a 用于显示 handles
sudo nft --echo --handle add rule filter INPUT tcp dport 9090 accept
![](https://img2020.cnblogs.com/blog/1342965/202006/1342965-20200609101418360-258031229.png)
备份与恢复: 所有示例中的规则都是临时的,要想永久生效,我们可以将规则备份,重启后自动加载恢复,其实 nftables 的 systemd 服务就是这么工作的。
备份规则:nft list ruleset > /root/nftables.conf
加载规则:nft -f /root/nftables.conf
# 安装Python环境支持
dnf install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel make patch gdbm-devel git
# 可能需要FQ,如果不能FQ就去download这个脚本,放到本地执行
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
vim ~/.bashrc 写入下面内容,source ~/.bashrc
export PATH="/home/loki/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# 安装python虚拟环境
pyenv install 3.8.x