前言

以前服务器上的项目,要么采用 systemctl,要么是采用 pm2 的方式进行搭建的,现在要移植了才发现多么的不方便,因此本次在迁移原有项目的同时,也要将项目采用 docker 的方式来进行搭建,这样能够保证即便以后要移植项目,也不需要全部重新搭建。
附服务器器配置

操作系统 CPU 内存 带宽 系统盘 数据盘
CentOS 8.0 64位 4核 8GB 5Mbps 50GB 200GB

在执行安装之前,先更新一波系统。

  1. yum update -y

安装docker

docker 有很多种安装方式,我这里就采用推荐的国内 daocloud 来进行安装

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

安装 Docker Engine-Community

Engine-Community 为 docker 的核心引擎
由于本机是新机器,因此在安装 Docker Engine-Community 前需要先设置 Docker 仓库

新机器设置 Docker 仓库

先安装所需的软件包。yum-utils、device-mapper-persistent-dat、lvm2。

  1. sudo yum install -y yum-utils \
  2. device-mapper-persistent-data \
  3. lvm2

然后设置仓库,仓库源可以设置以下几种

  1. # 官方源地址(国内较慢)
  2. https://download.docker.com/linux/centos/docker-ce.repo
  3. # 阿里云源地址
  4. http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. # 清华大学源
  6. https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

根据上述的几种源,选择你的仓库源,或者自行查找源。我这里使用阿里云源

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

安装 Docker Engine-Community

安装最新版本

使用如下命令安装最新版本 Docker Engine-Community

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

安装过程中,会提示是否接受 GPG 密匙,如果接受则选择 是

安装特定版本

  1. 列出存储库中可用的版本

    1. yum list docker-ce --showduplicates | sort -r

    如下所示
    image.png

  2. 通过完整的软件包名称安装特定版本

    1. #VERSION_STRING 代表版本号,为第二列字符串中冒号(:)到第一个连字符(-)之间的号,如 19.03.9
    2. sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

    安装校验

    输入如下命令

    1. docker version

    如果出现下述内容则表示安装完成 ```bash

    出现下述则表示安装完成

    Client: Docker Engine - Community Version: 19.03.13 API version: 1.40 Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:02:36 2020 OS/Arch: linux/amd64 Experimental: false

Server: Docker Engine - Community Engine: Version: 19.03.13 API version: 1.40 (minimum version 1.12) Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:01:11 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.3.7 GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683

  1. <a name="wnSfw"></a>
  2. ### 启动 docker
  3. docker 安装完默认未启动。但已经创建好 docker 用户组,只是该组下没有用户
  4. 1. 启动 docker
  5. ```shell
  6. sudo systemctl start docker
  1. 开机自启 docker
    1. sudo systemctl enable docker

    配置镜像加速器(可选)

    由于在国内从 DockerHub 拉取镜像有时候会比较慢,因此可以选择配置镜像加速器,我这里选择使用阿里云的镜像加速。获取地址 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
  • 网易: https://hub-mirror.c.163.com/
  • 阿里云:https://<你的ID>.mirror.aliyuncs.com
  • 七牛云加速器:https://reg-mirror.qiniu.com

    docker 学习及使用

    下载完 docker 之后,看了一会儿的使用方式,产生了比较多的疑问。
    产生下述疑问的地方在于,我本身是想着采用 docker 作为快速迁移的工具,例如更换服务器等,使用 docker 不用修改任何的代码,就可以直接迁移。 但也许有可能因为我对 docker 不熟悉而导致的滥用。
  1. 目前我的系统,有两个独立的 Java 服务,一个 Mysql 服务,两个 Node 服务,使用 docker 的话,是一个服务一个容器吗?
    1. 如果是一个服务一个容器,那么在换服务器的时候,也得导出所有的 容器为镜像,这样不是更麻烦了吗?我使用 docker 的意义在哪儿?
    2. 如果是多个服务一个容器,那么如何查看某个服务器的日志?
  2. docker 的镜像,可以包含我正在运行的服务吗?即我迁移的服务,只要迁移过去就不用进行任何改动就可以直接使用吗?

    参考资料

    Docker | 菜鸟教程