前言
以前服务器上的项目,要么采用 systemctl,要么是采用 pm2 的方式进行搭建的,现在要移植了才发现多么的不方便,因此本次在迁移原有项目的同时,也要将项目采用 docker 的方式来进行搭建,这样能够保证即便以后要移植项目,也不需要全部重新搭建。
附服务器器配置
| 操作系统 | CPU | 内存 | 带宽 | 系统盘 | 数据盘 |
|---|---|---|---|---|---|
| CentOS 8.0 64位 | 4核 | 8GB | 5Mbps | 50GB | 200GB |
在执行安装之前,先更新一波系统。
yum update -y
安装docker
docker 有很多种安装方式,我这里就采用推荐的国内 daocloud 来进行安装
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。
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
然后设置仓库,仓库源可以设置以下几种
# 官方源地址(国内较慢)https://download.docker.com/linux/centos/docker-ce.repo# 阿里云源地址http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 清华大学源https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
根据上述的几种源,选择你的仓库源,或者自行查找源。我这里使用阿里云源
sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker Engine-Community
安装最新版本
使用如下命令安装最新版本 Docker Engine-Community
sudo yum install docker-ce docker-ce-cli containerd.io
安装过程中,会提示是否接受 GPG 密匙,如果接受则选择 是
安装特定版本
列出存储库中可用的版本
yum list docker-ce --showduplicates | sort -r
如下所示

通过完整的软件包名称安装特定版本
#VERSION_STRING 代表版本号,为第二列字符串中冒号(:)到第一个连字符(-)之间的号,如 19.03.9sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
安装校验
输入如下命令
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
<a name="wnSfw"></a>### 启动 dockerdocker 安装完默认未启动。但已经创建好 docker 用户组,只是该组下没有用户1. 启动 docker```shellsudo systemctl start docker
- 开机自启 docker
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 不熟悉而导致的滥用。
- 目前我的系统,有两个独立的 Java 服务,一个 Mysql 服务,两个 Node 服务,使用 docker 的话,是一个服务一个容器吗?
- 如果是一个服务一个容器,那么在换服务器的时候,也得导出所有的 容器为镜像,这样不是更麻烦了吗?我使用 docker 的意义在哪儿?
- 如果是多个服务一个容器,那么如何查看某个服务器的日志?
- docker 的镜像,可以包含我正在运行的服务吗?即我迁移的服务,只要迁移过去就不用进行任何改动就可以直接使用吗?
参考资料
Docker | 菜鸟教程
