• CentOS安装Docker以及常用命令


    安装和卸载

    以 root 用户执行

    sudo -i
    
    • 1

    检查

    查看 Linux 发行版本

    • cat /etc/os-release

    查看内核版本

    • uname -r

    Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。

    卸载旧版本

    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine
    # 或者
    yum remove docker*                  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    安装

    # 更新到最新 yum 包
    yum update -y
    
    # 卸载旧版本(如果安装过旧版本的话)
    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine
    
    # 安装需要的软件包
    # yum-util 提供 yum-config-manager 功能, 另外两个是 devicemapper 驱动依赖
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    # 设置 yum 源设置稳定的仓库,官方源地址(比较慢)	
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    # 阿里云
    # yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # 清华大学源
    # yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
    
    # 查看所有仓库中所有 docker 版本,并选择特定版本安装
    yum list docker-ce --showduplicates | sort -r
    
    # 安装最新稳定版
    yum install -y docker-ce
    
    # 安装指定版本
    # yum install -y  
    yum install -y docker-ce-18.03.1.ce
    
    # 启动并加入开机启动
    systemctl start docker
    systemctl enable docker
    
    # 验证安装是否成功(有 client 和 service 两部分表示 docker 安装启动都成功了)
    docker version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    Docker在合并镜像时默认使用的是Docker Hub的地址,在国内,Docker Hub下载速度会非常慢。

    在不使用代理加速的情况下,虽然还能使用。但是使用镜像加速会好很多,国内也有很多docker镜像,有些是有限制的。总的来说还是阿里云镜像好用。

    镜像加速

    国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

    • 科大镜像:https://docker.mirrors.ustc.edu.cn/
    • 网易:https://hub-mirror.c.163.com/
    • 阿里云:https://<你的ID>.mirror.aliyuncs.com
    • 七牛云加速器:https://reg-mirror.qiniu.com 不再提供服务
    • 百度:https://mirror.baidubce.com
    • 官方:https://registry.docker-cn.com 不再提供服务

    镜像测试 这个 GitHub 仓库,我们会在此更新各个镜像地址的状态。

    当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

    先执行以下命令,查看是否在 docker.service 文件中配置过镜像地址。

    systemctl cat docker | grep '\-\-registry\-mirror'
    
    • 1

    如果该命令有输出,那么请执行 $ systemctl cat docker 查看 ExecStart= 出现的位置,修改对应的文件内容去掉 --registry-mirror 参数及其值,并按接下来的步骤进行配置。

    如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

    由于镜像服务可能出现宕机,建议同时配置多个镜像。

    {
      "registry-mirrors": [
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com"
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

    之后重新启动服务:

    systemctl daemon-reload
    systemctl restart docker
    
    • 1
    • 2

    检查加速器是否生效

    docker info
    
    • 1

    如果从结果中看到了如下内容,说明配置成功。(在最后面)

    Registry Mirrors:
     https://hub-mirror.c.163.com/
    
    • 1
    • 2

    卸载

    卸载Docker之前,最好删除所有容器,镜像,卷和网络。否则你计算机将会存在大量docker镜像,docker的临时数据。占用着你磁盘空间。

    删除镜像、容器、配置文件等内容:

    rm -rf /var/lib/docker
    
    • 1

    删除安装包:

    yum remove containerd.io docker-compose-plugin docker-ce
    
    • 1

    镜像

    查找镜像

    Docker Hub 上有大量的高质量的镜像可以用。

    也可以使用 docker search 命令来搜索镜像。

    docker search nginx
    
    • 1

    拉取镜像

    从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:

    docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
    
    docker pull influxdb:1.8.10
    
    • 1
    • 2
    • 3

    列出镜像

    docker image ls
    
    • 1

    运行镜像启动容器

    有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。

    docker run -it --rm influxdb:1.8.10 bash
    
    • 1

    启动里面的 bash 并且进行交互式操作.

    -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。

    --rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。

    influxdb:1.8.10:这是指用 influxdb:1.8.10 镜像为基础来启动容器。

    bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash

    通过 exit 退出了这个容器。

    删除镜像

    docker image rm [选项] <镜像1> [<镜像2> ...]
    
    • 1

    其中,<镜像> 可以是 镜像短 ID镜像长 ID镜像名 或者 镜像摘要

    容器

    启动容器

    启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(exited)的容器重新启动。

    因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。

    # 示例 前台运行
    docker run -p 8086:8086 influxdb:1.8.10 
    # 后台运行
    docker run -d -p 8086:8086 influxdb:1.8.10 
    # 启动一个已停止的容器
    docker start <容器ID> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • -d: 让容器在后台运行。
    • -P: 将容器内部使用的网络端口随机映射到我们使用的主机上。
      • docker run -d -P influxdb:1.8.10
    • -p: 参数来设置指定的端口
    • -v:将主机/opt/docker_v/mysql/conf目录挂载到容器的/etc/mysql/conf.d
      • docker run - v /opt/docker_v/mysql/conf:/etc/mysql/conf.d

    查看容器

    # 查看所有运行中的容器
    docker container ls
    # 或者
    docker ps
    # 查看所有的容器命令包括已停止的
    docker ps -a
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    停止容器

    docker stop <容器ID>
    
    • 1

    进入容器

    docker exec -it <容器ID> bash
    docker exec -it <容器ID> /bin/bash
    // 如果上面报错就用下面这个
    docker exec -it <容器ID> /bin/sh 
    
    • 1
    • 2
    • 3
    • 4

    删除容器

    docker rm -f <容器ID>
    # 清理掉所有处于终止状态的容器
    docker container prune
    
    • 1
    • 2
    • 3

    查看控制台

    docker logs [ID或者名字] 可以查看容器内部的标准输出。

    docker logs -f bf08b7f2cd89
    
    • 1

    -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

    参考:

    • https://www.jianshu.com/p/7d9ff93bc89e

    • https://yeasy.gitbook.io/docker_practice

  • 相关阅读:
    Go语言网络编程(socket编程)UDP
    线程池指令系统
    vscode - 初使用go的常用快捷键及常见错误
    信奥中的数学基础:因式分解
    python协整与异步调用,压榨程序的摸鱼时间——使用异步编写需要循环执行的程序,并获取返回值(2)
    架构师面试必备:高并发限流算法全攻略
    【学习OpenCV4】OpenCV入门精讲(C++/Python双语教学)
    Cholesterol-PEG-DBCO,CLS-PEG-DBCO,胆固醇-聚乙二醇-二苯基环辛炔PEG衍生物
    Backbone 网络-ResNet v2 详解
    Windows服务器配置证书
  • 原文地址:https://blog.csdn.net/abu935009066/article/details/126973910