一、前提条件

1.1. 内核

Docker运行对内核要求比较高,因此一般建议直接在Ubuntu这样的平台运行。但作为一个容器标准,Docker也是支持其他如CentOS, Mac OS X, Windows等平台。目前Docker支持以下版本CentOS:

  • CentOS 7(64位)
  • CentOS 6.5(64位)及以后

在运行CentOS 6.5及以后版本时,需要内核版本>=2.6.32-431,因为这些内核包含了运行Docker的一些特定修改。

$ uname -r
2.6.32-431.17.1.el6.x86_64

注:网上很多教程说CentOS6.5必须要升级内核到3.10才能使用docker,其实是【可选】升级,但最好升级。

1.2. Device Mapper

Docker默认使用AUFS作为存储驱动,但是AUFS并没有被包括在Linux的主线内核中。CentOS中可以使用Device Mapper作为存储驱动,这是在2.6.9内核版本引入的新功能。我们需要先确认是否启用该功能:

$ ls -l /sys/class/misc/device-mapper
lrwxrwxrwx 1 root root 0 May  1 20:55 /sys/class/misc/device-mapper -> ../../devices/virtual/misc/device-mapper

如果没有检测到Device Mapper,需要安装device-mapper软件包:

$ sudo yum install -y device-mapper

然后重新加载dm_mod内核模块:

$ sudo modprobe dm_mod

二、Docker安装

2.1. CentOS 7

2.2.1. 准备

  • CentOS7能上外网

  • yum -y install gcc

  • yum -y install gcc-c++

  • 卸载旧版本

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

如果 yum 报告未安装任何这些软件包,这表示情况正常。

2.2.2. 安装

  • 安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2
  • 设置stable镜像仓库

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
或
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 更新yum软件包索引

yum makecache fast

如果这是自添加 Docker 镜像仓库以来您首次刷新软件包索引,系统将提示您接受 GPG 密钥,并且将显示此密钥的指纹。验证指纹是否正确,并且在正确的情况下接受此密钥。指纹应匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。

  • 安装docker

1、安装指定版本:

yum list docker-ce.x86_64  --showduplicates | sort -r    #从高到低列出Docker-ce的版本

该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。

例如:指定版本(docker-ce-18.09.9)进行安装:

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io# 例如:
yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io

2、安装最新版本:

yum -y install docker-ce
  • 启动docker

执行以下命令启动docker:

systemctl start docker
  • 测试docker

2.2.CentOS 6.5

2.2.1.准备

  • 禁用selinux [可选]

由于Selinux和LXC有冲突,所以需要禁用selinux.编辑/etc/selinux/config,设置两个关键变量.

SELINUX=disabled
SELINUXTYPE=targeted

注:网上有教程说要设置,但我建议不要设置,因为会影响安全性

  • 安装Fedora EPEL源

yum install http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

  • 添加hop5.repo源

cd /etc/yum.repos.d
wget http://www.hop5.in/yum/el6/hop5.repo

2.2.2.yum安装

  • 升级带aufs模块的3.10内核【可选】

yum install kernel-ml-aufs kernel-ml-aufs-devel

修改grub的主配置文件/etc/grub.conf,设置default=0,表示第一个title下的内容为默认启动的kernel(一般新安装的内核在第一个位置):

重启系统 reboot now,然后执行以下命令查看是否已经是3.10内核:

查看内核是否支持aufs:

  • 安装docker

安装依赖:

yum install redhat-lsb        
yum install device-mapper-libs
yum install libcgroup*

如出现以下错误:

解决办法是编辑/etc/yum.repos.d/epel.repo,把基础的恢复(baseurl),镜像(mirrorlist)的地址注释掉:

安装docker:

yum install docker-io

如出现以下报错:

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

解决办法是编辑/etc/yum.repos.d/epel.repo,把基础的恢复(baseurl),镜像(mirrorlist)的地址注释掉:

如出现如下错误:

原因是:网络问题,下载失败。解决办法:则执行多几次yum install docker-io命令,直至下载并安装成功(我这里耗时1个多小时)。

继续安装,如出现以下信息,则说明能正常安装:

  • 启动docker

执行以下命令启动docker:

service docker start

如出现以上提示则说明安装并启动成功。

如出现以下提示则说明安装失败:

解决方法:执行以下命令删除docker-io

sudo yum remove docker-io

执行以下命令手工安装docker:

rpm -ivh ./docker-engine-1.7.1-1.el6.x86_64.rpm

注:安装包下载地址:https://yum.dockerproject.org/repo/main/centos/6/Packages/

再次执行以下命令启动docker:

service docker start

【可选】设置在服务器启动时启动:

chkconfig docker on

3.使用

  • 查看docker版本
docker version

  • 查看docker日志
cat /var/log/docker

  • 搜索镜像
docker search tomcat

注:start代表受欢迎程度。OFFICIAL代表官方版本

  • 查看当前所有镜像
docker images
  • 下载镜像
docker pull centos
  • 运行容器
docker run centos echo "hello word"
  • 运行容器 hello word
docker run hello-world

输出这段提示以后,hello world 就会停止运行,容器自动终止。

4.删除

可以使用yum来删除docker

  • 查询删除docker

1.列出docker包的具体的名字

$ sudo yum list  installed | grep docker
containerd.io.x86_64                 1.2.4-3.1.el7
docker-ce.x86_64                     3:18.09.3-3.el7
docker-ce-cli.x86_64                 1:18.09.3-3.el7

2.删除docker

$ sudo yum -y remove containerd.io.x86_64 \docker-ce.x86_64 \docker-ce-cli.x86_64  
  • 直接删除docker

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

备注:以上命令只会删除docker运行环境,并不会删除镜像,容器,卷文件,以及用户创建的配置文件。

清除镜像和容器文件:

sudo rm -rf /var/lib/docker

手动查找并删除用户创建的配置文件。

5.注意

5.1.手动挂载cgroup

低版本的Redhat(6.3)可能要手动挂载cgroup,具体操作方法如下:

  • 首选禁用cgroup对应服务cgconfig
 service cgconfig stop # 关闭服务 chkconfig cgconfig off # 取消开机启动
  • 然后挂载cgroup,可以命令行挂载
mount -t cgroup none /cgroup  #仅本次有效
  • 或者修改配置文件,编辑/etc/fstab,加入
none                    /cgroup                 cgroup  defaults        0 0

5.2.以非root用户管理docker

Docker守护程序绑定到Unix socket而不是TCP端口。默认情况下,Unix socke是root用户才有,而其他用户只能通过使用sudo使用它。Docker守护程序始终以root用户身份运行。

如果您不想在docker命令前加上sudo,请创建一个名为docker的Unix组并向其添加用户。当Docker守护程序启动时,它会创建一个可由该docker组成员访问的Unix socket。

  • 1.创建docker组
sudo groupadd docker
  • 2.添加user到docker组
sudo usermod -aG docker $USER

请将$USER替换为系统中你的除root外的某个用户。

  • 3.注销并重新登录,以便重新评估您的组成员身份。

如果在虚拟机上进行测试,则可能需要重新启动虚拟机才能使更改生效。

  • 4.验证是否可以通过不使用sudo运行docker命令。
 docker run hello-world

如果最初在添加用户到docker组之前,使用的是sudo的Dokcer CLI命令。你可能会出现如下错误,表明你的~/.docker目录由于sudo命令而创建的权限不正确。

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

要解决此问题,请删除~/.docker/目录(它会自动重新创建,但任何自定义设置都会丢失),或使用以下命令更改其所有权和权限:

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R

5.3.镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决。

Docker国内镜像:

  • 网易加速器:http://hub-mirror.c.163.com
  • 官方中国加速器:https://registry.docker-cn.com
  • ustc的镜像:https://docker.mirrors.ustc.edu.cn

也可使用私人镜像加速器地址,如使用阿里云的镜像加速器:登录阿里云->产品->搜索"容器镜像服务"->镜像库->镜像加速器。

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

请在该配置文件中加入(没有该文件的话,请先建一个):

vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://hub-mirror.c.163.com"]
} 

配置成功后,CentOS6.5重启:

service docker restart

配置成功后,CentOS7重启:

systemctl daemon-reload     #重启加速配置文件
systemctl restart docker    #重启docker后台服务

Docker安装部署超详细教程(2021版)相关推荐

  1. Docker安装部署,最详细教程

    2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?今天就来详细解释,帮助大家理解它,还带有简单 ...

  2. Docker安装Rabbitmq超详细教程

    快捷跳转 安装Rabbitmq 1.使用docker查询rabbitmq的镜像 2.安装镜像 3.运行mq: 安装Rabbitmq 1.使用docker查询rabbitmq的镜像 docker sea ...

  3. 使用anaconda配置python3.6环境安装pyltp超详细教程,使用pycharm调用

    使用anaconda配置python3.6环境安装pyltp超详细教程,使用pycharm调用 看了一堆网上的安装教程,有的写得太简单,有的太复杂,本菜鸡根本看不懂在说什么,看了好几篇才整明白是怎么回 ...

  4. 【Docker安装部署FastDFS详细过程】

    0.国人之光~FastDFS 分布式文件存储的由来: 在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等等,在早期的时候用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一 ...

  5. Docker安装部署(详细版)

    文章目录 Docker 安装部署 简介 安装 调优 目录迁移 日志调优 磁盘优化 业务命令 docker 构建容器时推荐追加的脚本 问题 Docker 安装部署 简介 Docker 是一个开源的应用容 ...

  6. linux安装部署Hive详细教程

    目录 1.Hive介绍 2.先决条件 3.软件包下载 4.解压安装包到指定的目录 1.Hive介绍 hive是一个构建数据仓库的工具,只需要在一台服务器上安装就可以了,不需要在多台服务器上安装. 2. ...

  7. docker安装部署实战详细手册

    文章目录 一.docker介绍 1.什么是docker 2.为什么使用docker 二.docker架构 三.docker安装 1.安装 2.卸载 结尾 一.docker介绍 1.什么是docker ...

  8. Git安装配置超详细教程

    学无止境 Java工程师的进阶之旅 Git详细教程在这里 目录 一.下载 二.安装 三.配置 一.下载 1.进入Git官网 2.点击下载 二.安装 选择 Git 安装位置,要求是非中文并且没有空格的目 ...

  9. Apache部署超详细教程

    文章目录 一.背景 二.Apache与Nginx对比? 三.apache的相关内容 1.apache的安装部署 2.apache的基本信息 3. 修改Apache默认发布目录 4. 修改默认端口 5. ...

最新文章

  1. java游戏下载ios_java浏览器下载
  2. 针对maven install 报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1 解决方案...
  3. SQLServer之分离数据库
  4. SAP 批次管理(Batch management)
  5. mysql开启远程访问
  6. 详细图文演示——排除启动类故障以及Linux操作系统引导、运行级别和优化启动等相关知识
  7. OutOfMemoryException异常解析
  8. 职业高中计算机网络试讲稿,《初识我的电脑》试讲稿+答辩
  9. nginx安装和配置实例
  10. uva 10474 - Where is the Marble?
  11. Jenkins教程(Linux版)
  12. 微信小程序开发教程+工具插件
  13. 一号店主页静态页面(HTML)
  14. java猜数字小游戏:任意输入数字,判断与系统随机产生数字是否相等。
  15. 新一代云计算数据中心技术方案
  16. 致诸弟·明师益友虚心请教
  17. springboot项目集成大数据第三方dolphinscheduler调度器
  18. 移植安装ModBus到ARM开发板
  19. js中text方法是啥意识_JavaScript | 文本节点Text常用方法
  20. html设置控件坐标,html表格按钮位置调整 html中怎样改变表格的位置

热门文章

  1. 广发银行李怀根:架构设计要有前瞻性,敢于对标敢于重构
  2. K8s 集群使用 ConfigMap 优雅加载 Spring Boot 配置文件
  3. Linux 链接概念 硬连接 软连接
  4. Educational Codeforces Round 101 D. Ceil Divisions(构造)
  5. ES6之什么是模板字符串?
  6. centos 6.5 64位系统安装32位运行库
  7. VM虚拟机安装centos7安装linux常用操作说明xshell/xftp使用
  8. [EXCEL][VBA][MSSQL][档案数字化]通用录入系统
  9. 电磁流量计常见报警故障分析
  10. 四国军棋界面开发(5)吃子规则与声音效果