OS:CentOS Linux release 8.5.2111
DNF是Dandified YUM的缩写,是一个面向基于RPM的Linux发行版的软件包管理器。
DNF用于在Fedora/RHEL/CentOS操作系统中安装、更新和删除软件包;
DNF是YUM的下一代版本,旨在取代YUM,它是 Fedora 22、CentOS8和RHEL8的默认软件包管理器;
DNF功能强大,DNF使维护包组变得很容易,并且能够自动解决依赖性问题。
systemctl stop firewalld && systemctl disable firewalld
systemctl stop iptables && systemctl disable iptables
# 临时关闭swap
swapoff -a
# 永久关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab
free -m
命令查看swap状态
若swap行都显示 0 则表示关闭成功
# 临时禁用SELuinux
setenforce 0
# 永久禁用SELuinux
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
sestatus -v
命令查看SELuinux状态,若显示为disabled
,则代表已经禁用。
卸载docker:
dnf remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
若是CentOS7
系统,dnf
命令改为yum
CentOS8
默认安装有podman
等组件,它与containerd安装发生冲突,需要卸载,若是CentOS7
可略过
dnf erase podman buildah -y
dnf install -y yum-utils device-mapper-persistent-data lvm2
加载docker yum源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看可安装版本:
yum list docker-ce --showduplicates
安装官方最新ce版本:
dnf install -y docker-ce docker-ce-cli containerd.io
或者安装指定版本:
dnf install -y docker-ce-23.0.0 docker-ce-cli-23.0.0 containerd.io
更新mkfs.xfs
dnf update xfsprogs
加入服务启动项,启动docker:
systemctl enable docker && systemctl start docker
安装docker compose依赖包:
dnf install -y alpine py-pip python-dev libffi-dev openssl-dev gcc libc-dev make
升级依赖包,遇到过curl命令报错情况
yum update -y nss curl libcur
docker compose安装:
也可参照https://docs.docker.com/compose
curl -L "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
若github拉不下来,换个镜像地址
curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
docker compose执行文件授权:
chmod +x /usr/local/bin/docker-compose
先保存有/etc/docker
目录
mkdir -p /etc/docker
编辑/etc/docker/daemon.json
文件,在daemon.json文件内添加私服地址
{
"insecure-registries": [
"docker.nexus.io",
"harbor.host.com"
],
"registry-mirrors": [
"http://docker.nexus.io",
"http://harbor.host.com"
]
}
重启docker服务
systemctl restart docker
nexus私服登录:
docker login -u 你docker私服账号 -p 你docker私服账号的密码 docker.xxx.io
harbor私服登录:
echo "你的harbor账号的密码" | docker login --username 你的harbor账号 --password-stdin https://harbor.xxx.com.cn
查看状态
docker stats
查看版本
docker version
查看正在运行容器:
docker ps
查看所有容器,包括已经stop的容器
docker ps -a
查看容器参数:
docker inspect {{container-name}}
镜像相关命令:
查询所有镜像
docker images
镜像下载,不指定tag,则默认下载latest
# 下载最新mysql镜像,等同于 docker image pull mysql:latest
docker image pull mysql
镜像指定tag版本下载
docker image pull mysql:5.6
镜像删除
docker image rm mysql:5.6
镜像创建Tag,一般在push或持续集成的时候用到
docker tag mysql:5.6 mysql:v5.6
导入导出命令:
导出正在运行容器
export命令是从容器(container)中导出tar文件
docker export devops_jenkins_1 -o jenkins_latest.tar.gz
save命令则是从镜像(images)中导出tar文件
docker save -o jenkins_latest.tar.gz jenkins:latest
备份文件导入成镜像
load命令加载本地磁盘文件
docker import jenkins_latest.gz jenkins
创建docker network
docker network create devops
基于镜像启动容器
docker run -t -i jenkins /bin/bash
或者
docker run -d --name=jenkins -p 8080:80 jenkins:latest
查看容器实时滚动日志,且从最近100行开始查看:
docker logs -f -t --tail 100 {{container-name}}
进入容器:
docker exec -it {{container-name}} bash
从容器里面拷文件到的宿机
docker cp {容器名称}:{容器中文件的具体路径} {宿机存放目录}
从宿机拷文件到容器:
docker cp {宿机文件} {容器名称}:{容器中文件的存放目录}
docker system prune 自动清理
docker system prune --all
该指令默认会清除所有如下资源:
清除Tag为“”的镜像:
docker rmi $(docker images -f "dangling=true" -q)
镜像排序查看:
docker images | sort -k7 -h
结合Linux定时任务清理:
crontab -e 添加如下:
每天凌晨1点执行
0 1 * * * docker rmi $(docker images -f "dangling=true" -q)
或者
0 1 * * * docker system prune -a -f
crontab -u //设定某个用户的cron服务
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务
crontab -i //打印提示,输入yes等确认信息
基本格式
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr …
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
定时任务的每段为:分,时,日,月,周,用户,命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
:表示任意时间都,实际上就是“每”的意思。可以代表00-23小时或者00-12每月或者00-59分
-:表示区间,是一个范围,00 17-19 * * * cmd,就是每天17,18,19点的整点执行命令
,:是分割时段,30 3,19,21 * * * cmd,就是每天凌晨3和晚上19,21点的半点时刻执行命令
/n:表示分割,可以看成除法,/5 * * * * cmd,每隔五分钟执行一次
另一个方案,保留近5个Tag镜像:
cat << \EOF > clean_docker_images.sh
#!/usr/bin/env bash
#Author: 原件
#Data: 2020/12/30
#Description: 清理无标签的镜像,保留每个镜像最新的5个tag。
docker system prune -f
docker images | awk '{print $1}' | awk '{a[$1]++} END {for(i in a) if(a[i]>5) print(i"-"a[i])}' > /tmp/image-clear
for s in `cat /tmp/image-clear`;do
docker images | awk '$1=="'${s%-*}'"{print $0}' | tac | sed -n 1,`expr ${s##*-} - 5`p | awk '{print $3}' | uniq > /tmp/image-id
docker rmi -f `cat /tmp/image-id`
done
echo "****************"
echo "clear successful"
echo "****************"
EOF
chmod +x clean_docker_images.sh
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
CentOS8搭建nfs服务
k8s一键安装redis单机版
k8s一键安装mysql8单机版
Docker制作springboot运行应用镜像
k8s部署springboot应用
zookeeper集群安装
Nginx日志切割
Elasticsearch单机版本安装
Elasticsearch集群安装
springboot集成prometheus+grafana
安装Docker及学习
RabbitMQ集群安装