最近新购入了一台服务器,为了避免使用环境变乱,项目的部署基本上都是基于Docker的,这两年随着云原生的发展,Docker在云原生中的作用使得它也蓬勃发展起来。

今天这篇文章就带大家一起实现一下在Linux操作系统下Docker的部署过程,收藏起来,以备不时之需。当然,如果对Docker感兴趣的话,可以直接根据本文的步骤操作起来。终有一天你会享受到Docker的便利与魅力的。

参考docker官网:https://docs.docker.com/engine/install/centos/

先决条件

Docker从17.03版本之后分为CE(Community Edition: 社区版)和EE(Enterprise Edition: 企业版)。相对于社区版本,企业版本强调安全性,但需付费使用。这里我们使用社区版本即可。

Docker支持64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10。

查看Linux版本的命令这里推荐两种:lsb_release -acat /etc/redhat-release

lsb_release -a查看效果:

1
2
3
4
5
6
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)
Release: 7.6.1810
Codename: Core

cat /etc/redhat-release查看版本效果:

1
2
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

显然,当前Linux系统为CentOS7。再查一下内核版本是否不低于3.10。

查看内核版本有三种方式:

  • cat /proc/version
  • uname -a
  • uname -r

三种形式都可以查看到内容版本,比如:

1
2
$ uname -r
3.10.0-1160.53.1.el7.x86_64

使用官方安装脚本自动安装

安装命令如下:

1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

1
curl -sSL https://get.daocloud.io/docker | sh

使用存储库安装

卸载旧版本

旧版本的 Docker 名称为 dockerdocker-engine。在尝试安装新版本之前卸载任何此类旧版本以及相关的依赖项:

1
2
3
4
5
6
7
8
$sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

yum如果报告没有安装这些软件包,那也没关系。

当您卸载 Docker 时,存储在其中的图像、容器、卷和网络 /var/lib/docker/不会自动删除。

设置存储库

在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。

安装 yum-utils包(提供 yum-config-manager 实用程序)并设置存储库。

1
$sudo yum install -y yum-utils

使用以下命令来设置稳定的仓库。

官方源地址(比较慢)

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

可以选择国内的一些源地址:

阿里云

1
2
3
$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学源

1
2
3
$ sudo yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

安装 Docker 引擎

安装 Docker Engine、containerd 和 Docker Compose:

  1. 要安装最新版本,请运行:

    1
    $sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

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

    此命令安装 Docker,但不会启动 Docker。它还会创建一个 docker组,但是默认情况下不会向该组添加任何用户。

  2. 启动Docker。

    1
    $sudo systemctl start docker
  3. 通过运行映像验证 Docker Engine 安装是否成功 hello-world

    1
    $sudo docker run hello-world

    此命令下载测试图像并在容器中运行它。当容器运行时,它会打印一条确认消息并退出。

  1. 要安装特定版本,首先列出存储库中的可用版本:

    1
    2
    3
    4
    5
    6
    $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 版本(.el7在此示例中由后缀表示)。

    通过其完全限定的包名称安装特定版本,即包名称 ( docker-ce) 加上版本字符串(第 2 列),从第一个冒号 ( :) 开始,直到第一个连字符,由连字符 ( -) 分隔。例如,docker-ce-18.09.1

    替换 <VERSION_STRING>为所需的版本,然后运行以下命令进行安装:

    1
    $sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin

    此命令安装 Docker,但不会启动 Docker。它还会创建一个 docker组,但是默认情况下不会向该组添加任何用户。

  2. 启动Docker。

    1
    $sudo systemctl start docker
  3. 通过运行映像验证 Docker Engine 安装是否成功 hello-world

    1
    $sudo docker run hello-world

    此命令下载测试图像并在容器中运行它。当容器运行时,它会打印一条确认消息并退出。

除了启动Docker,一些其他启动相关的命令:

  • 守护进程重启:systemctl daemon-reload
  • 重启Docker服务:systemctl restart docker / service docker restart
  • 关闭Docker服务:docker service docker stop / docker systemctl stop docker

卸载 docker引擎

卸载 Docker Engine、CLI、containerd 和 Docker Compose 包:

1
$sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

主机上的图像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷:

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

您必须手动删除任何已编辑的配置文件。

配置镜像加速器

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了

第一种,按照阿里云官网步骤

1
2
3
4
5
6
7
8
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

第二种,直接粘贴到文件中

1
vim /etc/docker/daemon.json

将其中的JSON串粘贴到刚才打开编辑的daemon.json文件中:

1
2
3
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}

注意:

  1. 上面的是我个人的,我用xxx修改了,大家可以用支付宝或淘宝生成自己的加速器;
  2. sudo命令是针对非管理员用户的,如果你是非管理员,该命令必不可少,是管理员加不加无所谓;
  3. tee到最后的EOF命令是一个整体,不可分开执行。

Docker相关命令

详见 https://www.runoob.com/docker/docker-tutorial.html