# 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 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.
在生产环境中,使用这些脚本是不推荐的,你需要了解其中的风险( 说白了出事别找我 ),风险如下:
root
or sudo
privileges to run. Therefore, you should carefully examine and audit the scripts before running them.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
原文:https://www.cnblogs.com/demonxian3/p/10990723.html