Centos系统安装Docker

先决条件:

操作系统先决条件:

  • Docker引擎目前只支持CentOS 7和CentOS 8操作系统。其他更早的版本已经不再支持。
  • 系统centos-extras库必须启用。
  • 推荐使用overlay2存储驱动。

卸载旧版本的Docker

如果系统安装了旧版Docker,需要卸载,一般来说旧版名称为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安装方式多样,可以根据自己需求进行选择:

  • yum方式安装:

    这种方式安装,简单容易,并且升级容易。

  • RPM方式安装:

    这种安装方式无论安装还是升级都是纯手工方式,在机器无法联网的情况下,这种方式比较合适。

  • 便捷脚本安装:

    这种安装方式主要用于测试和开发环境。

yum方式安装:

1、安装yum-utils工具包,该工具包提供yum-config-manager工具;然后利用
yum-config-manager添加Docker的repo库:

$ sudo yum install -y yum-utils

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

可选项:启用nightly或者test存储库。

这些库包含在以上的repo,第默认是禁止的,可以通过以下方式进行开启。


启用nightly:

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


启用test:

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


禁止nightly或者test:

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

2、安装Docker引擎:
2.1、安装最新的Docker引擎或者是containerd,又或者参考下面步骤安装特定的版本。

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

如果提示验证GPG密钥,请验证指纹是否匹配:060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
匹配则确认。

多版本库共存:

如果存在多个版本的Docker,在不指定具体版本的前提下,使用yum install 或者yum upgrade都是安装最高版本,
这可能不一定符合稳定性的要求。

以上命令仅仅是安装并不会启动docker。且安装成功后会创建一个docker的用户组,但是不会创建任何用户也不会把任何
用户添加进该用户组。

2.2、安装指定版本的docker引擎。

2.2.1、列出所有版本:通过选项showduplicates列出启用库中所有目前可以使用的版本,然后选择具体的版本进行安装。

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

2.2.1、安装特定版本:

安装特定版本需要使用完整的包名称。即包名(docker-ce)加上版本字符串(第二列内容),其中版本字符串内容截取第一个冒号(😃
开始,到其后面的第一个连接符(-)终止。包名和版本字符串使用连接符(-)进行连接。比如:docker-ce-18.09.1。

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

3、启动docker:

$ sudo systemctl start docker

4、检验docker引擎是否正确安装:

$  sudo docker run hello-world

执行完这行命令,会下载一个叫hello-world的镜像,并且启动一个容器运行该镜像。容器运行成功后会输出一条信息然后退出。

这将安装并运行Docker引擎。 使用sudo运行Docker命令。继续 Linux 后安装以允许非特权用户运行 Docker 命令和其他可选配置步骤。

升级引擎:

要升级引擎,重复以上安装步骤,并且选择最新的版本进行安装即可。

rpm方式安装:

该方式可以下载一个.rpm后离线安装,此种方式的安装,后续升级需要手工下载最新的安装包手工升级。

1、访问连接https://download.docker.com/linux/centos/,选择匹配的系统版本,然后在路径
x86_64/stable/Packages/下选择需要的.rpm包进行下载。

如果想安装的包是nightly或者test,则把stable路径切换到对应的nightly或者test 。

2、安装:

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

/path/to/package.rpm是具体的下载包绝对路径

3、启动:

$  sudo systemctl start docker

4、验证安装:

$  sudo docker run hello-world

启动和验证安装和yum方式的安装一样。

升级引擎:

要升级 Docker Engine,请下载更新的包文件并重复安装过程,
使用 yum -y upgrade 而不是 yum -y install,并指向新文件。

###便捷脚本安装:
Docker在get.docker.com上提供了一个方便的脚本,可以快速、非交互地将Docker安装到开发环境中。
不建议将便利脚本用于生产环境,但可以用作示例来创建适合您需求的配置脚本。该脚本的源代码是开源的,
可以在GitHub上的docker-install存储库中找到。

在运行脚本之前,请务必检查从Internet下载的脚本。在安装之前,需要了解脚本的潜在风险和限制:

  • 脚本需要root或者sudo权限运行;
  • 脚本会尝试检查Linux包和版本信息,会配置包管理系统,而且大部分安装参数都不允许自定义。
  • 脚本无需请求确认就直接安装相关依赖。这可能会安装大量的软件包,具体取决于主机的当前配置。
  • 默认情况下,脚本都是安装最新的Docker,containerd和runc.使用脚本配置机器时,可能会导致Docker
    主版本升级失败。部署到生产系统之前,始终在测试环境中测试(major)升级。
  • 脚本的目的不是为了升级系统已安装的Docker。故此使用脚本升级现有安装时,可能无法将依赖项更新到预期版本,
    从而导致使用过时的版本。

提示:运行之前预览脚本
可以使用DRY_RUN=1选项运行脚本,以了解脚本在安装期间将执行的步骤:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ DRY_RUN=1 sh ./get-docker.sh

以下命令例子,从get.docker.com下载脚本,并且执行安装:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

安装成功以后,基于Debian的系统会自动启动docker服务。而RPM方式安装,比如在CentOS,Fedora,RHEL或SLES
这些平台,则需要通过systemctl或者 service命令手工启动服务。如果消息提示,默认情况下,
不允许非root用户执行Docker命令。

###安装预发布版本:
Docker在test.docker.com提供一个脚本,用于在Linux上安装预发布版。该脚本等同于get.docker.com,但配置
包管理器启用包存储库中的test通道,其中包括了稳定版和预发布版(测试版、发布候选版)。使用该脚本可以提前
访问新版本,并在发布稳定之前在测试环境中对其评估。

要从测试通道安装最新版的Docker,执行以下命令:

$ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh

使用脚本进行升级:

如果使用便捷脚本安装Docker,则直接使用包管理器升级Docker。重新运行便利脚本没有任何好处,可能会导致问题。

卸载

1、卸载Docker引擎,CLI和Containerd包:

$ sudo yum remove docker-ce docker-ce-cli containerd.io

2、主机上的镜像、容器、卷或者自定义配置文件不会连带的自动删除。需要手工清理:

$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd

必须手工删除配置文件信息。

非Root用户管理Docker

Docker守护进程绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字由用户root拥有,其他用户只能通过sudo访问它。Docker守护进程始终以root用户身份运行。如果不想在docker命令前面加上sudo,请创建一个名为docker的Unix用户组,并将用户添加到其中。当Docker守护进程启动时,它会创建一个供docker组成成员访问的Unix套接字。

警告:docker授予root等同的权限,这可能影响系统安全。详细请参考Docker守护守护进程攻击。

创建docker用户组和添加用户:
1、创建docker用户组:

$  sudo groupadd docker

2、添加用户到docker用户组:

$  sudo usermod -aG docker $USER

3、注销并重新登录,以便重新评估组成员身份。如果在虚拟机上进行测试,可能需要重新启动虚拟机才能
生效。在X windows等桌面Linux环境中,完全注销会话,然后从新登录。在Linux上,可以通过以下命令激活
对组的更改:

$  newgrp docker 

4、验证无需sudo运行docker命令:

$ docker run hello-world

在变更用户组之前,已经通过sudo方式运行Docker CLI命令,执行命令组的变更就会出现以下错误。

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

这表明 ~/.docker/ 目录是由于sudo命令而使用了不正确的权限创建。要想解决该问题,要么删除 ~/.docker/
目录(该目录会自动重建,但是原先的设置会丢失),或者更改该目录的权限信息。

$s sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$s sudo chmod g+rwx "$HOME/.docker" -R
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值