• Docker的安装与操作


    Docker的安装与操作

    一、安装Docker

    1、关闭防火墙
    systemctl stop firewalld
    setenforce 0
    
    • 1
    • 2
    2、安装依赖包
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    yum-utils:是yum的工具包集合,提供了yum-config-manager 工具。
    device mapper:是 linux 的内核用来将块设备映射到虚拟块设备的 framework,
    它支持许多高级卷管理技术。docker 的 devicemapper 存储驱动程序利用此框架的自动精简配置
    (thin provisioning) 和快照功能来管理 docker 镜像和容器。
    device mapper存储驱动程序需要 device-mapper-persistent-data和 lvm2。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3、设置阿里云镜像源
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    
    • 1
    • 2
    4、安装Docker-ce(docker社区版)
    yum install -y docker-ce
    systemctl start docker.service
    systemctl enable docker.service
    
    安装好的Docker系统有两个程序,Docker服务端和docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。
    Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    5、查看Docker信息
    docker version
    docker info
    
    • 1
    • 2

    image-20220905145446896

    6、设置镜像加速

    以阿里云为例(腾讯云等其他几个主流厂商也是有提供免费的镜像加速的)。

    image-20220905145850129

    image-20220905150027695

    选择对于的操作系统,直接复制粘贴即可。

    image-20220905150109906

    二、Docker操作

    1、镜像操作
    1.1、列出本地镜像
    docker images
        -a 列出本地所有镜像
        -q 只显示镜像id
    
    • 1
    • 2
    • 3

    image-20220905151841150

    文字选项说明:

    • **REPOSITORY:**表示镜像仓库源
    • **TAG:**镜像的标签
    • **镜像ID:**镜像ID
    • **创建时间:**创建时间
    • **SIZE:**大小
    1.2、搜索镜像
    格式:docker search 关键字
    docker search nginx
    
    • 1
    • 2

    image-20220905152406809

    1.3、获取镜像
    当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。
    格式:docker pull 关键字
    docker pull httpd
    
    • 1
    • 2
    • 3

    image-20220905152630700

    1.4、删除镜像
    格式:docker rmi 镜像名/id
    docker rmi httpd
    docker rmi dabbfbe0c57b
        -f 强制删除
    
    • 1
    • 2
    • 3
    • 4

    image-20220905153133044

    image-20220905153234616

    1.5、查看下载到本地的所有镜像
    镜像下载后存放在 /var/lib/docker 
    
    cat /var/lib/docker/image/overlay2/repositories.json
    
    • 1
    • 2
    • 3

    image-20220905153745700

    1.6、查看镜像详细信息
    docker inspect 镜像id或名称
        -f 指定模式输出
    
    • 1
    • 2

    image-20220905154752506

    1.7、为本地的镜像添加新的标签
    格式:docker tag 旧名称:标签 新名称:标签
    
    • 1

    image-20220905155147493

    1.8、镜像导出到本地
    格式:docker save -o /路径/存储文件名 镜像名 (接指定绝对路径,实现支持存放位置)
        -o 输出到的文件
    
    • 1
    • 2

    image-20220905160634765

    1.9、导入本地镜像到库中
    格式:docker load < /路径/存储文件
        docker load -i /路径/存储文件
        -i 指定导入的文件
    
    • 1
    • 2
    • 3

    image-20220905162931888

    image-20220905163009553

    1.20、上传镜像

    默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。

    登录后配置

    可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。

    在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

    docker hub的网址:https://hub.docker.com/

    setting/centos:tagname
        //setting/centos是创建docker hub后的存储库名
    docker tag httpd:latest setting/centos:tagname	#添加新的标签
    docker login									#登录公共仓库
    Username:
    password:
    docker push setting/centos:tagname						#上传镜像
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220905171333615

    image-20220905171524214

    image-20220905171637836

    2、容器操作
    2.1、创建容器
    docker create [选项] 镜像 
    
    常用选项:
    -i:让容器开启标准输入
    -t:让Docker分配一个伪终端tty
    -it:合起来实现和容器交互的作用,运行一个交互式会话shell
    
    docker create -it nginx:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20220905182934886

    2.2、查看所有容器以及状态
    docker ps -a //-a:显示所有容器
    -a 显示所有的容器
    -f 根据条件过滤显示的内容
    -l 显示最近创建的容器
    -n 累出最近创建的n个容器
    -q 静默模式,只显示容器编号
    -s 显示总的文件大小
        
    说明:
    CONTAINER ID:容器的ID号
    IMAGE:加载的镜像
    COMMAND :运行的程序
    CREATED :创建时间
    STATUS:当前的状态
    PORTS:端口映射
    NAMES:名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    image-20220905174003820

    2.3、启动容器
    docker start 0865439bf85d
    docker ps -a
    
    • 1
    • 2

    image-20220905183602350

    2.4、启动容器(创建并启动)
    #加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。
    
    #示例1:
    docker run -itd nginx:latest /bin/bash
    
    #示例2:执行后退出
    docker run  centos:latest /usr/bin/bash -c ls -lh /
    #示例3:执行后不退出,以守护进程方式执行持续性任务
    docker run -d centos:latest /usr/local/bash -c "while true;do echo lcdb;done" 
        
        -t 表示进入的终端
        -i 开启标准输入,表示想要交互
        -d 默认不会进入容器,后台运行,可以使用docker exec进入。
    	-c 指定交互命令
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    docker run -itd nginx:latest /bin/bash
        /bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。
    
    • 1
    • 2

    image-20220905185105139

    docker run  centos:latest /usr/bin/bash -c ls -lh /
    
    • 1

    image-20220905190415385

    2.5、查看容器详细信息
    #格式:docker inspect 容器id 
    docker ps -a   #先查看运行时容器的id
    docker inspect b90d59168cf0
    
    • 1
    • 2
    • 3

    image-20220905190811611

    2.6、进入容器

    进入容器的两种方式:

    docker attach :通过这个方式进入,如果退出会导致容器也会停止

    docker exec:通过这个方式进入,如果退出不回导致容器停止。

    退出命令:exit

    docker attach 容器id
    docker exec -it 容器id /bin/bash
    
    • 1
    • 2

    image-20220905192441534

    image-20220905192556326

    docker run -it centos:latest /bin/bash
    
    • 1

    image-20220905193032041

    2.7、容器导入/导出

    用户可以讲任何一个docker从一台主机迁移至任意一台主机:

    1、首选需要讲已创建好的容器导出为文件,使用【docker export】命令实现,该容器当前处于运行状态也可以正常导出。

    2、导出后将该文件传输至其他主机,通过相应的导入命令以实现容器的迁移。

    3、 与镜像的迁移基本同理

    '命令格式:'
    docker export [容器ID/名称] >文件名
    
    '例:'
    docker export 59faa88f097f > /opt/test/centos
    --
    scp /opt/test/centos root@192.168.10.12:/opt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220905193854669

    image-20220905200110529

    '命令格式:'
    cat [文件名] |docker import - [生成的镜像名称][:标签]
    cat centos | docker import - centos:7
    
    '#导入文件centsos成为本地镜像'
    cat centos | docker import - centos:7
    docker run -itd centos:7 /bin/bash
    --
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20220905200519139

    2.8、容器的删除
    '命令格式:'
    docker rm [容器ID/名称]
    
    '例:'
    docker ps -a
    docker rm -f d6288ff65860
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    image-20220905200703921

    2.9、容器与宿主机之间的数据拷贝
    //容器内容拷贝到宿主机中
    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
    //宿主机中内容拷贝到容器中   
    docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
    
    • 1
    • 2
    • 3
    • 4

    image-20220906142512142

    image-20220906142525672

    docker cp b3c25e19d04e:/root/test.txt ~/
    
    • 1

    image-20220906143201606

    docker cp /root/test2.txt b3c25e19d04e:/root/
    
    • 1

    image-20220906143405410

    3、日志管理

    存放日志的位置

    /var/lib/docker/containers/
    
    • 1

    查看日志信息

    docker logs 容器id
    
    • 1
    docker logs 59faa88f097f
    
    • 1

    image-20220906162143204

    清理日志

    方式一:

    当日志占满之后如何处理
            
    ###设置docker日志文件数量及每个日志大小
     vim /etc/docker/daemon.json
    {
    "registry-mirrors": ["http://f613ce8f.m.daocloud.io"]"log-driver": "json-file",
    "log-opts": { "max-size" : "500m", "max-file" : "3"}
    }
    
    修改完需要重新加载  systemctl daemon-reload  systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    image-20220906163459609

    方式二:

    使用脚本并设置周期性任务,实现定期清理日志内容。
    #!/bin/sh 
    logs=$(find /var/lib/docker/containers/ -name *-json.log)  
    for log in $logs  
            do  
                    cat /dev/null > $log  
            done 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    f613ce8f.m.daocloud.io"],
    “log-driver”: “json-file”,
    “log-opts”: { “max-size” : “500m”, “max-file” : “3”}
    }

    修改完需要重新加载 systemctl daemon-reload systemctl restart docker

    
    [外链图片转存中...(img-Jt8DKevI-1663501547182)]
    
    方式二:
    
    ~~~c
    使用脚本并设置周期性任务,实现定期清理日志内容。
    #!/bin/sh 
    logs=$(find /var/lib/docker/containers/ -name *-json.log)  
    for log in $logs  
            do  
                    cat /dev/null > $log  
            done 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    超越创意,从用户创造内容到AI生成内容的新时代
    el-date-picker与el-time-picker的时间格式设置
    MySQL入门
    vue2介绍(入门)
    软件工程
    python实现从excel导出csv最完整版本,openpyxl,pandas,xlrd全家桶
    艾美捷胆固醇肉豆蔻酸酯技术信息说明
    【字符串函数和内存函数】——深入剖析
    [Swift]国际化
    android.bp文件禁用oat 优化
  • 原文地址:https://blog.csdn.net/weixin_46514551/article/details/126922054