# 0x00 安装热身

- 针对CE版本

Docker 分为 CE 和 EE 版本, CE免费,EE收费,CE版以及能够满足我们所有需求

本文针对 CE 版本的安装进行说明

- 系统说明

本文以 CentOS 7为例进行安装, 不要使用 CentOS 7 的 Archived版 和 测试版,因为不支持

- 源说明

CentOS 的扩展源 (centos-extras) 必须启用,默认也是启用的,但是如果你之前关闭过它,需要重新启用一下

建议使用overlay2存储引擎

- 删除旧版本的Docker

默认 yum 安装的 docker 或 docker-engine 版本很久,我们先卸载掉

$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

备注: /var/lib/docker/ 下面的 容器,镜像,网络,磁盘卷 会被保留

新的 docker 改为 docker-ce 也就是免费版的 docker

# 0x01 开始安装

有三种安装方式:

1. 通过设置网络源,然后yum安装,方便日后维护和升级 (推荐)

2. 下载RPM包手动安装和升级,如果没有网络这种方法很实用

3. 使用自动化脚本安装,适合在开发和测试环境

- 使用yum安装

开始安装之前需要设置一下 Docker 源,后面直接通过源安装和升级

1. 安装 yum-utils , yum-config-manager, device-mapper-persistent-data lvm2 (被 devicemapper存储引擎依赖)

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

2. 设置官方 docker-ce.repo 源

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

2.5 下面几个可选步骤

默认是 stable版,如果先试试 nighty 或者 test 可以用下面的命令开启或关闭

启用 nightly版

$ sudo yum-config-manager --enable docker-ce-nightly

启用 test版

$ sudo yum-config-manager --enable docker-ce-test

禁用 nightly

$ sudo yum-config-manager --disable docker-ce-nightly

3. 开始安装

3.1  废话了那么多,这一步才是关键,默认安装的是最新的,或者使用后面的步骤安装指定的版本

 sudo yum install docker-ce docker-ce-cli containerd.io

这里可能会提示 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 密钥是否匹配

如果和这里的一样,可以选择接受。注意最新的版本可能是不稳定的

Docker 这样就安装好了,但还没启用,默认创建了一个 docker 组,但没有用户在这个组上

3.2 指定具体版本的docker安装

A.  可以使用下面的命令,列出可以从源里安装的所有docker版本,并且高到低排序

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

docker-ce.x86_64  :18.09.-.el7                     docker-ce-stable
docker-ce.x86_64 :18.09.-.el7 docker-ce-stable
docker-ce.x86_64 18.06..ce-.el7 docker-ce-stable
docker-ce.x86_64 18.06..ce-.el7 docker-ce-stable

每个人看到的列表可能不一样,取决于你启用的库,和你CentOS 的具体版本

B. 选择具体的版本进行安装

选择方式就是用 - 进行衔接你要的版本号,看如下格式

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

比如这里我安装的是 18.09.5 版

$ sudo yum install docker-ce-18.09. docker-ce-cli-18.09. containerd.io

一样执行完只是安装了docker 还没启用,创建了暂时无用户的 docker 组

4. 启动docker

$ sudo systemctl start docker

5.验证客户端能正常使用,测试hello-world镜像

$ sudo docker run hello-world

这步会从 docker-hub  (类似github) 上面拉去 hello-world镜像,然后通过这个镜像创建容器并运行

打印一个hello world就退出,也代表docker-cli可以用

- 使用RPM安装 (不推荐)

如果你的linux电脑没有网络(什么年代了?没网?),可以用下载RPM包放到CentOS上手动安装

1. 下载RPM包

并且想升级的话也需要重新到网上下载最新的安装包

下载网址 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

如果不知道怎么选,可以参考下载下面三个包

docker-ce-cli-18.09.5-3.el7.x86_64.rpm

docker-ce-18.09.5-3.el7.x86_64.rpm

containerd.io-1.2.5-3.1.el7.x86_64.rpm

如果喜欢折腾想试试 nighty 的只要把 URL 里的 stable 改成 nighty 就行

2. 安装RPM包

$ sudo yum install /path/to/package.rpm

执行完只是安装了docker 还没启用,创建了暂时没用户的 docker 组

3.  启动docker

$ sudo systemctl start docker

4. 验证客户端能正常使用,测试hello-world镜像

$ sudo docker run hello-world

这步会从 docker-hub  (类似github) 上面拉去 hello-world镜像,然后通过这个镜像创建容器并运行

打印一个hello world就退出,也代表docker-cli可以用

5.升级

记住想升级就要回到第1步网上重新下载最新安装包,跟着步骤走,然后

$ sudo yum update /path/to/package.rpm

- 使用一键部署脚本安装

官方提供了一键部署脚本  get.docker.com 和 test.docker.com

建议使用 get 开头的,这种方式避免交互很适合新手,这是docker-install 的源码 docker-install repository.

在生产环境中,使用这些脚本是不推荐的,你需要了解其中的风险( 说白了出事别找我 ),风险如下:

  • The scripts require root or sudo privileges to run. Therefore, you should carefully examine and audit the scripts before running them.
  • The scripts attempt to detect your Linux distribution and version and configure your package management system for you. In addition, the scripts do not allow you to customize any installation parameters. This may lead to an unsupported configuration, either from Docker’s point of view or from your own organization’s guidelines and standards.
  • The scripts install all dependencies and recommendations of the package manager without asking for confirmation. This may install a large number of packages, depending on the current configuration of your host machine.
  • The script does not provide options to specify which version of Docker to install, and installs the latest version that is released in the “edge” channel.
  • Do not use the convenience script if Docker has already been installed on the host machine using another mechanism.

1. 脚本需要用 root身份运行,你认真最好审计一下代码,不然删库跑路都不知道了

2. 脚本会尝试探测你系统的版本,并改变相关的配置,此外没法加上自定义的安装参数,可能会导致配置支持性很差,甚至语言变成日语,让你看不懂。。。。

3. 脚本会无脑的把所有推荐和依赖全安装了,不经过你的确认,导致有大量的包,取决于你的系统配置

4. 脚本不给你选择具体哪个版本,直接给你转最新的

5. 如果你已经安过docker了,你用脚本的话又安装一次的话,恭喜你,凉了,赶紧收拾一下那个啥吧

FBI Warning:

脚本运行之前检查一下代码,因为服务器上的脚本很有可能是给黑客替换的

看到这里仍然坚持要来一下的话,那就来吧

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh <output truncated>

如果想要用非root用户,需要执行下面的命令

  sudo usermod -aG docker your-user

记得先退出,重新登陆才会生效

- 卸载 Docker

到这里你的 docker 应该通过前面三种方式中的一种安装好了,你需要手动启动一下,使用 systemctl 或者 service 命令

有言在先,默认情况下非root是运行不了docker命令的,下面是卸载的方法

1. 停止docker

$ sudo systemctl stop docker

2. 卸载包

$ sudo yum remove docker-ce

3. 删除资源(容器 镜像 网络 卷映射)

$ sudo rm -rf /var/lib/docker

Docker 官方安装详解的更多相关文章

  1. Win10 TensorFlow(gpu)安装详解

    Win10 TensorFlow(gpu)安装详解 写在前面:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着 ...

  2. Oracle Database 12c Release 2安装详解

    第1章 Oracle Database 12c Release 2安装详解 1.1 下载方法 oracle官网https://www.oracle.com 1)打开官方网站,找到下载连接 2)选择更多 ...

  3. Hadoop 发行版本 Hortonworks 安装详解(一) 准备工作

    一.前言 目前Hadoop发行版非常多,所有这些发行版均是基于Apache Hadoop衍生出来的,之所以有这么多的版本,完全是由Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并 ...

  4. Hadoop 发行版本 Hortonworks 安装详解(二) 安装Ambari

    一.通过yum安装ambari-server 由于上一步我们搭建了本地源,实际上yum是通过本地源安装的ambari-server,虽然也可以直接通过官方源在线安装,不过体积巨大比较费时. 这里我选择 ...

  5. Nginx的介绍和安装详解

    [介绍+安装]Nginx的介绍和安装详解   == 介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx ...

  6. Windows下caffe安装详解(仅CPU)

    本文大多转载自 http://blog.csdn.net/guoyk1990/article/details/52909864,加入部分自己实战心得. 1.环境:windows 7\VS2013 2. ...

  7. (转)Win10 TensorFlow(gpu)安装详解

    Win10 TensorFlow(gpu)安装详解 写在前面:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着 ...

  8. Linux ssh登录和软件安装详解

    阿哲Style   Linux第一天 ssh登录和软件安装详解 Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器 ...

  9. 【转】Linux下Android ADB驱动安装详解

    原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比 ...

随机推荐

  1. MySQL操作规范总结

    来源:静以致远√团团 用户权限管理创建用户命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';说明:Username所创建的用户名hos ...

  2. c# 执行调用Oracle Procedure传参及回传值

    ////定義參數               //IDataParameter[] parameters =               //             {               ...

  3. TSN(Temporal Segment Networks)

    一.算法详解 二.代码解析(pytorch版) 训练代码:https://blog.csdn.net/u014380165/article/details/79058147 测试代码:https:// ...

  4. IBM XIV

    参考:https://www.doit.com.cn/p/author/xigua 参考:http://www.doit.com.cn/p/196056.html 图片说明: IBM XIV存储系统采 ...

  5. .NET Core中使用水印

    .NET Core中使用水印 在项目中,我需要给上传的图片添加水印,通过网上查找针对.NET Core 的找到两个方案: 使用 CoreCompat.System.Drawing 及用于非Window ...

  6. 大海航行靠舵手 华为云靠什么征服K8S?

    Kubernetes 是Google开源的容器集群管理系统或者称为分布式操作系统.它构建在Docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,本质上可看作是基于 ...

  7. 关键字final 修饰类、方法、属性、参数类型

    笔记: /** 关键字final(最终的) 标记的类不能被继承, 提高安全性,提高程序的可读性 * 1.final 修饰类,这个类就不能被继承: 如:String类.StringBuffer类.Sys ...

  8. 从 ES6 到 ES10 的新特性万字大总结

    以下文章来源于鱼头的Web海洋 ,作者陈大鱼头   鱼头的Web海洋 一个名为Web的海洋世界 (给前端大全加星标,提升前端技能) 作者:鱼头的Web海洋 公号 / 陈大鱼头 (本文来自作者投稿) 介 ...

  9. [Google Guava] 10-散列

    原文链接 译文链接 译者:沈义扬 概述 Java内建的散列码[hash code]概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换.此外,使用Java内建方法实现 ...

  10. jquery 下载

    jquery下载所有版本(实时更新) 摘自:http://www.jq22.com/jquery-info122 插件描述:jquery下载,实时更新jquery1.2到最新3.2.1所有版本下载 j ...