Docker 官方安装详解
# 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
orsudo
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 官方安装详解的更多相关文章
- Win10 TensorFlow(gpu)安装详解
Win10 TensorFlow(gpu)安装详解 写在前面:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着 ...
- Oracle Database 12c Release 2安装详解
第1章 Oracle Database 12c Release 2安装详解 1.1 下载方法 oracle官网https://www.oracle.com 1)打开官方网站,找到下载连接 2)选择更多 ...
- Hadoop 发行版本 Hortonworks 安装详解(一) 准备工作
一.前言 目前Hadoop发行版非常多,所有这些发行版均是基于Apache Hadoop衍生出来的,之所以有这么多的版本,完全是由Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并 ...
- Hadoop 发行版本 Hortonworks 安装详解(二) 安装Ambari
一.通过yum安装ambari-server 由于上一步我们搭建了本地源,实际上yum是通过本地源安装的ambari-server,虽然也可以直接通过官方源在线安装,不过体积巨大比较费时. 这里我选择 ...
- Nginx的介绍和安装详解
[介绍+安装]Nginx的介绍和安装详解 == 介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx ...
- Windows下caffe安装详解(仅CPU)
本文大多转载自 http://blog.csdn.net/guoyk1990/article/details/52909864,加入部分自己实战心得. 1.环境:windows 7\VS2013 2. ...
- (转)Win10 TensorFlow(gpu)安装详解
Win10 TensorFlow(gpu)安装详解 写在前面:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着 ...
- Linux ssh登录和软件安装详解
阿哲Style Linux第一天 ssh登录和软件安装详解 Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器 ...
- 【转】Linux下Android ADB驱动安装详解
原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比 ...
随机推荐
- IDEA部署项目到远程服务器
一.idea安装阿里插件Alibaba Cloud Toolkit 二.添加Host 三.应用部署 四.修改源程序重新部署 五.查看实时日志 欲买桂花同载酒,终不似,少年游
- 跟着minium官网介绍学习minium-----(一)
某天,再打开微信开发者工具的时候收到一条推送.说是微信小程序自动化框架 Python 版 -- Minium 公测. Url如下: https://developers.weixin.qq.com/c ...
- python读txt数据报编码错误
读数据代码: with open(path,'r') as f: for line in f: line = line.strip() 报错: UnicodeDecodeError: 'gbk' co ...
- awk 内置函数的使用
转自:http://gdcsy.blog.163.com/blog/static/12734360920130241521280/ 一.split 初始化和类型强制 awk的内建函数sp ...
- JAVA遇见HTML——JSP篇(JSP内置对象下)
request.getSession() 网上资料解释: request只能存在于一次访问里 session对象的作用域为一次会话 session长驻在服务器内存里,session有id标识,一个se ...
- 快速排序Quick_Sort
快排——排序中的明星算法,也几乎是必须掌握的算法,这次我们来领略以下快排为何魅力如此之大. 快排主要有两种思路,分别是挖坑法和交换法,这里我们以挖坑法为例来进行介绍,交换法可以参考这篇博文.值得一提的 ...
- 转发:i p _ f o r w a r d函数
转发:i p _ f o r w a r d函数到达非最终目的地系统的分组需要被转发.只有当 i p f o r w a r d i n g非零或当分组中包含源路由时,i p i n t r才调用实现 ...
- Java集合--Stack
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308852.html 第1部分 Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(F ...
- php 中秒杀
控制器层 2 //秒杀 首先要判断库存 其次高并发 然后入库 3 public function goods_do() 4 { 5 $gid=input("get.gid"); 6 ...
- Tinkoff Internship Warmup Round 2018 and Codeforces Round #475 (Div. 1) 963B 964D B Destruction of a Tree
题 OvO http://codeforces.com/contest/963/problem/B CF 963B 964D 解 对于题目要求,显然一开始的树,要求度数为偶数的节点个数为奇数个,通过奇 ...