zoukankan      html  css  js  c++  java
  • Linux--CentOS 安装 Docker 教程

    本文主要介绍 CentOS 系统安装 Docker 的流程。

    前提条件

    OS 要求

    CentOS7:

    The centos-extras repository must be enabled. This repository is enabled by default, but if you have disabled it, you need to re-enable it.
    The overlay2 storage driver is recommended

    卸载旧的版本

    较旧版本的 Docker 被称为 dockerdocker-engine。如果已安装这些,请卸载它们以及相关的依赖项:

    sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-selinux 
                      docker-engine-selinux 
                      docker-engine
    

    /var/lib/docker 目录下保存着镜像、容器、卷、网络。官方文档安装的 docker-ce 包,内部源中只有 docker-engine包,docker-ce 是最新的社区版本的包名。

    安装 Docker CE

    使用源安装

    设置源

    1.安装依赖的包,yum tils 提供了 yum-config-manager 套件, device-mapper-persistent-datalvm2devicemapper 存储驱动所依赖的包。

    $ sudo yum install -y yum-utils 
      device-mapper-persistent-data 
      lvm2
    

    2.使用如下命令设置 stable 源:

    $ sudo yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo
    

    国内可选择清华大学源-Docker Community Edition 镜像使用帮助

    安装 Docker CE

    1.安装最新版本的 Docker CE:

    $ sudo yum install docker-ce
    

    2.要安装特定版本的 Docker CE,可在 repo 中列出可用版本,然后选择并安装:

    $ yum list docker-ce --showduplicates | sort -r
    

    Docker 安装之后, docker 组就被创建了,但没有用户加到这个群组中。

    3.启动 Docekr:

    $ sudo systemctl start docker
    

    4.可以通过运行 hello-world 镜像来验证 docker 的安装成功:

    sudo docker run hello-world`
    

    这个命令下载一个测试镜像,在容器中运行它。当容器运行时,它会打印一条信息并退出。

    从 RPM 包安装

    如果无法使用 Docker的源来安装 Docker,则可以下载适用于您的发行版的 .rpm 文件并手动安装。每次要升级 Docker 时都需要下载新文件。

    1. https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 下载 rpm 包
    2. 安装 Docker CE:$ sudo yum install /path/to/package.rpm

    升级 Docker CE

    使用 yum -y upgrade docker-ce 升级版本。

    卸载

    1. 卸载 Docker 包:$ sudo yum remove docker-ce
    2. 主机上的镜像、容器、卷或自定义配置文件不会自动删除。为了删除这些文件,可以运行如下命令:$ sudo rm -rf /var/lib/docker

    你必须手动删除任何已编辑的配置文件

    注意点

    1. 如果非 root 用户想要使用 Docker,你应该将该用户添加到 docker 组中:sudo usermod -aG docker your-user
    2. 安装 Docker CE 之后,它在基于 DEB 的发行版上会自动启动。在基于 RPM 的发行版上,需要使用相应的 systemctlservice 命令手动启动它

    使用 systemd 控制 Docker

    使用 systemd 控制 Docker

    手动启动

    大多数 Linux 发行版使用 systemctl 启动服务,如果没有,就用 service命令:

    • systemctl:$ sudo systemctl start docker
    • service:$ sudo service docker start

    系统自启

    If you want Docker to start at boot, see
    如果你想要实现开启自启 docker,可以看看这篇文章 Configure Docker to start on boot

    systemctl list-unit-files|grep docker # 查看 Docker 服务状态
    

    配置 Docker daemon 选项

    推荐的方法是使用平台独立的 daemon.json 文件,默认位于 /etc/docker/ 中。详细配置项,查看官宣-Daemon configuration file,有一份中文的备注说明:docker daemon(dockerd)配置文件daemon.json

    你可以使用 daemon.json 配置几乎所有守护程序配置选项。下面的例子配置了两个选项。你不能使用 daemon.json 机制配置的一个选项是 HTTP proxy

    Runtime directory and storage driver

    你可能想要通过移动镜像、容器和卷到独立分区来控制磁盘空间。

    为了实现这个,可以在 daemon.json 中做如下配置:

    {
        "data-root": "/mnt/docker-data",
        "storage-driver": "overlay"
    }
    

    HTTP/HTTPS proxy

    Docker 守护进程使用 HTTP_PROXY, HTTPS_PROXYNO_PROXY 环境变量在它的启动环境中来配置 HTTP 和 HTTPS 代理。你不能使用 daemon.json 文件来配置这些环境变量。

    如果你使用的是 HTTP 或 HTTPS 代理服务器,例如在公司设置中,则需要将此配置添加到 Docker systemd 服务文件中。

    1.为 docker 服务创建一个 systemd 目录:

    $ sudo mkdir -p /etc/systemd/system/docker.service.d
    

    2.创建一个文件 /etc/systemd/system/docker.service.d/http-proxy.conf,加入 HTTP_PROXY 环境变量:

    [Service]
    Environment="HTTP_PROXY=http://proxy.example.com:80/"
    

    或者,如果你使用 HTTPS 代理服务,创建一个文件 /etc/systemd/system/docker.service.d/https-proxy.conf,加入 HTTPS_PROXY 环境变量:

    [Service]
    Environment="HTTPS_PROXY=https://proxy.example.com:443/"
    

    3.如果你拥有内部的 Docker registries 服务或者要使用国内的镜像加速器-daocloud.io,你需要通过指定 NO_PROXY 环境变量来不通过代理访问它们:

    [Service]
    Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com,daocloud.io"
    

    这样,你访问 NO_PROXY 中的网址时,就不会走代理,速度会比较快。

    Or, if you are behind an HTTPS proxy server:

    [Service]
    Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
    

    一个实际配置的栗子:

    mkdir -p /etc/systemd/system/docker.service.d/ # 先保证有这个目录
    cat <<'EOF'>/etc/systemd/system/docker.service.d/http-proxy.conf # 这里一定要记得让内部镜像仓地址不要走代理,否则无法访问我们私有的镜像仓
    [Service]
    Environment="HTTP_PROXY=http://127.0.0.1:3128/"
    Environment="HTTPS_PROXY=http://127.0.0.1:3128/"
    Environment="NO_PROXY=localhost,127.0.0.0/8,.domain.com"
    EOF
    

    4.Flush changes:

    $ sudo systemctl daemon-reload
    

    5.重启 Docker:

    $ sudo systemctl restart docker
    

    6.验证配置项已经被加载:

    $ systemctl show --property=Environment docker
    Environment=HTTP_PROXY=http://proxy.example.com:80/
    

    如果你采用的 HTTPS 代理:

    $ systemctl show --property=Environment docker
    Environment=HTTPS_PROXY=https://proxy.example.com:443/
    

    手动创建 systemd 单元文件

    当你手动安装 Docker 时,如果你想要用 systemd 管理 Docker,可以安装两个单元文件 servicesocket,参考 moby/contrib/init/systemd/,下载文件至 /etc/systemd/system

    配置使用 docker 镜像仓库

    选择一:ustc的镜像

    新版的 Docker 使用 /etc/docker/daemon.json(Linux) 配置 Daemon:

    {
      "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
    }
    

    选择二:Docker 中国官方镜像加速

    {
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    

    Docker 拖取镜像默认走的是 HTTPS 协议(443端口),一般私有仓库都没有合法的 HTTPS 证书,通过通过配置私有仓库为非安全仓库:

    {
     "insecure-registries" : ["hub.h.com"]
    }
    

    insecure-registries 就是配置的非安全仓库的地址。

    测试配置的结果:

    busybox是一个集成了一百多个最常用linux命令和工具的软件,同时它也是一个最小的Linux系统,它提供了该系统的主要功能,例如grep、find、mount以及telnet等但不包含一些与GNU相关的功能和选项

    docker pull busybox
    

    Docker 存储驱动

    Linux kernel 4.0以后才支持的overlay2(Linux kernel 3.18以后才支持的叫overlayFS)。同时请确保docker的服务端版本不低于1.12,否则无法支持。uname -sr 可以查看系统内核版本。

    Docker 1.12.6/v17.03 文档中 CentOS7 系统下安装时,明确说明,用于生产时,必须使用 devicemapper 驱动的 direct-lvm 模式,需要我们提前准备好块设备,以提供更好的稳定性和性能。默认使用 devicemapper 驱动的 loop-lvm 模式,因为安装简单,只适用于测试环境。从 docker info 信息可以看出,loop-lvm 模式最大可用空间只有107GB。生产环境下必须使用 devicemapper 驱动的 direct-lvm 模式,使用块设备,速度更快并且能更有效地使用系统资源。

    Docker v17.06 及以后的版本中,关于 OverlayFS 存储驱动,尽量使用 overlay2 而不要使用 overlay,官方的说明是 overlay 可以使用但不建议。使用 overlay2 时 Linux 系统内核要求4.0以上,或者 CentOS7 的内核在 3.10.0-693 以上。Docker-CE v17.06 及以上,在使用 overlay2 驱动时,还需要设置额外的参数,以禁止检测内核为4.0版本。

    #查看当前存储驱动
    docker info|grep -i storage
    #停止Docker
    service docker stop
    #清空数据,如果有啥需要的请自己备份
    rm -rf /var/lib/docker/*
    #修改配置文件
    vi /etc/docker/daemon.json
    #如果没有这个文件或没有内容,就直接把下面的粘贴进去
    #不然就只添加那一条
    #如果不是在最后一行加请自行在末尾添加逗号
    {
     "storage-driver": "overlay2"
    }
    #如果是CentOS7或者RedHat7内核在3.10.0-693以下的,设置额外的参数:
    {
     "storage-driver": "overlay2",
     "storage-opts": [
     "overlay2.override_kernel_check=true"
     ]
    }
    #当然,也可以通过给docker修改启动参数的方式来
    # 1.修改/etc/init.d/docker
    # 这个直接在 dockerd 后面加参数就行,不过其实和下面的差不多
    # 2.修改/etc/sysconfig/docker
    # 改成类似 other_args="-s overlay2"
    # 3.修改/usr/lib/systemd/system/docker.service
    # 改成类似 ExecStart=/usr/bin/dockerd -s overlay2
    
    #启动docker
    service docker start
    

    通常在生产构建机器上,一般系统盘大小都不大,都会挂载一个较大容量的数据盘,比如 data 目录。那么,为了避免日后 Docker 的根目录 /var/lib/mock过大,撑爆系统盘,我们需要想办法修改一下 Docker 的根目录,主要有两种办法:

    1.先备份 /var/lib/docker的内容,然后在创建/data/docker的软连接: ln -s /data/docker /var/lib/docker

    2.修改 daemon.json 配置:

    {
    # before before 17.06-ce
    "graph": "/data/docker",
    # docker after 17.06-ce
    "data-root":"/data/docker",
    }
    

    参考

    Dockuer Hub 镜像:

    存储驱动:

    最后

    欢迎访问原文:

  • 相关阅读:
    高精度计算
    高精度除以低精度
    P1258 小车问题
    POJ 2352 stars (树状数组入门经典!!!)
    HDU 3635 Dragon Balls(超级经典的带权并查集!!!新手入门)
    HDU 3938 Portal (离线并查集,此题思路很强!!!,得到所谓的距离很巧妙)
    POJ 1703 Find them, Catch them(确定元素归属集合的并查集)
    HDU Virtual Friends(超级经典的带权并查集)
    HDU 3047 Zjnu Stadium(带权并查集,难想到)
    HDU 3038 How Many Answers Are Wrong(带权并查集,真的很难想到是个并查集!!!)
  • 原文地址:https://www.cnblogs.com/michael-xiang/p/10467315.html
Copyright © 2011-2022 走看看