Docker 官方安装详解

# 0x00 安装热身linux

- 针对CE版本git

Docker 分为 CE 和 EE 版本, CE免费,EE收费,CE版以及可以知足咱们全部需求github

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

- 系统说明centos

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

- 源说明服务器

CentOS 的扩展源 (centos-extras) 必须启用,默认也是启用的,可是若是你以前关闭过它,须要从新启用一下网络

建议使用overlay2存储引擎app

- 删除旧版本的Dockercurl

默认 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  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.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.5 docker-ce-cli-18.09.5 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
相关文章
相关标签/搜索