安装Docker及学习

Docker安装及学习

1.环境介绍

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使维护包组变得很容易,并且能够自动解决依赖性问题。

2.关闭防火墙

systemctl stop firewalld && systemctl disable firewalld
systemctl stop iptables && systemctl disable iptables

3.关闭swap

# 临时关闭swap
swapoff -a
# 永久关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab

free -m命令查看swap状态

若swap行都显示 0 则表示关闭成功

4.禁用SELuinux

# 临时禁用SELuinux
setenforce 0
# 永久禁用SELuinux
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

sestatus -v命令查看SELuinux状态,若显示为disabled,则代表已经禁用。

5.卸载旧版本

卸载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
 
rm -rv /var/lib/docker

若是CentOS7系统,dnf命令改为yum

CentOS8默认安装有podman等组件,它与containerd安装发生冲突,需要卸载,若是CentOS7可略过

dnf erase podman buildah -y

6.安装依赖包

dnf install -y yum-utils device-mapper-persistent-data lvm2

7.安装Docker

加载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

8.安装docker compose

安装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/install/linux/#install-the-plugin-manually

curl -L "https://github.com/docker/compose/releases/download/v2.18.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.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

或者

curl -L https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

docker compose执行文件授权:

chmod +x /usr/local/bin/docker-compose

9.配置私服

先保存有/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"
  ]
}

其中registry-mirrors为HTTPS镜像仓库地址,insecure-registries为HTTP镜像仓库地址。

重启docker服务

systemctl restart docker

10.登录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

11.Docker常用命令

查看状态

docker stats

查看版本

docker version

查看正在运行容器:

docker ps

想看正常在运行容器,仅显示指定几项内容

docker ps --format 'table {
    
    {.Names}}\t | {
    
    {.ID}} \t | {
    
    {.Status}} \t | {
    
    {.Image}}'

查看所有容器,包括已经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

该指令默认会清除所有如下资源:

  • 已停止的容器(container)
  • 未被任何容器所使用的卷(volume)
  • 未被任何容器所关联的网络(network)
  • 所有悬空镜像(image)

清除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

封装Docker快捷命令:

cat << \EOF >> ~/.bashrc
alias dlogs='docker logs -f --tail 500'
alias dps="docker ps --format 'table {
    
    {.ID}}\t{
    
    {.Image}}\t{
    
    {.Names}}\t{
    
    {.Ports}}\t{
    
    {.Status}}'"
EOF

source ~/.bashrc

12.引用Reference

CentOS8搭建nfs服务
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
k8s一键安装redis单机版
k8s一键安装mysql8单机版
k8s部署springboot应用
Docker安装及学习
Docker制作springboot运行应用镜像
Docker制作Java8环境镜像
Docker安装Mysql5.7.31
Docker安装Mysql8.1.0
Elasticsearch单机版本安装
Elasticsearch集群安装
ELK安装
Docker安装ELK
zookeeper集群安装
Nginx日志切割
RabbitMQ集群安装
springboot集成prometheus+grafana
windows11安装android应用

猜你喜欢

转载自blog.csdn.net/wangxin_wangxin/article/details/128919721
今日推荐