【记录】CentOS7(Linux)通过Docker部署Ethercalc(含redis)

Docker重新安装

因为原先版本的容器在调整配置文件后,重启会报错,经排查可能是版本不兼容的问题,所以对旧版本的docker进行卸载,重新安装最新版。
报错信息:

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

卸载容器

1、查看安装过的包:

yum list installed | grep docker

发现本机安装过的旧版本:docker.x86_64,docker-client.x86_64,docker-common.x86_64
2、删除安装的docker相关的包

yum -y remove docker.x86_64
yum -y remove docker-client.x86_64
yum -y remove docker-common.x86_64

安装容器

1、确认CentOS系统版本,安装Docker需内核版本官方要求至少 3.8 以上,建议 3.10 以上

uname -r

2、把yum包更新到最新

yum update

3、安装需要的软件包,yum-util 提供yum-config-manager功能

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4、设置yum的源

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

5、查看核实仓库中docker的版本,我们用的社区版(CE),为免费版本;还有一个版本:企业版(EE),为收费版本。

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

6、安装docker

sudo yum install docker-ce

7、启动docker,设置开机启动

sudo systemctl start docker
sudo systemctl enable docker

8、查看版本

docker version

在这里插入图片描述

修改容器配置

1、查看当前容器数据路径

sudo docker info

一般默认是在/var/lib/docker,这样后期会因为容器日志占用太大内存,导致磁盘爆满,进而影响服务器的正常使用,所以我们要修改容器数据的路径,并控制日志的数量和大小
2、修改容器配置

sudo vi /etc/docker/daemon.json

然后配置如下内容:
在这里插入图片描述

{
"data-root":"/data/docker/",
"log-driver":"json-file",
"log-opts":{"max-size":"200m","max-file":"3"},
"registry-mirrors":["https://registry.docker-cn.com"]
}

第一行是修改数据路径,我这边修改为/data/docker,
第二、三行是说明日志类型并限制容器日志的大小和数量,我这边是限制单个日志文件大小为200M,数量个数为3个,即每个容器日志最多600M
第四行是指定容器的源
3、加载配置,并重启容器

systemctl daemon-reload
systemctl restart docker

4、再次确认是否生效
在这里插入图片描述

安装Ethercalc

用docker安装Ethercalc

1、搜索镜像

sudo docker search ethercalc

在这里插入图片描述
2、拉取好评最多的镜像

sudo docker pull audreyt/ethercalc

在这里插入图片描述共1.04G
3、创建数据卷

sudo docker volume create ethercalc_data_20221212

在这里插入图片描述
创建数据卷用于后续容器挂载,方便后续数据的迁移等
4、启动容器

sudo docker run -p 9000:8000 -uroot --privileged=true --restart always --cpus 2 -itd --name 20221212_ethercalc -v ethercalc_data_20221212:/dump/ audreyt/ethercalc

-p 9000:8000 代表将容器内的8000端口映射到宿主机的9000端口,这边需要说明的是,如何知道容器内的Ethercalc服务,采用的是8000端口?同样的,如何知道容器内的数据是在哪个路径?
因为当时在官方文档没找到相关说明,我这边采用的是先试运行一个,查看运行的信息,确认端口等信息

sudo docker run -uroot --privileged=true --restart always  -it  audreyt/ethercalc 

在这里插入图片描述

可以得知,端口号为8000,由于启用redis失败,存储路径回退到/dump/,稳妥起见,我们进入该目录,先看看里面有什么,然后再建一个新的线上表,模拟一些数据后,发现确实多了三个文件,cat文件后里面的内容和模拟数据一致,至此确定文件存储目录。

-uroot:是给了 root 用户身份,但并没有真正的 root 权限
–privileged:真正让当前用户有了 root 权限
否则容器在运行的过程中,可能存在因为权限问题,无法正常创建及读写

–restart always,是为了保证该容器在docker重启后,可以自动启动

–cpus 2,是为了限制该容器可以调动cpu的数量,避免占用cpu太多,影响服务器其它应用。

-v ethercalc_data_20221212:/dump/,这边采用的是具名挂载。
数据卷挂载方式有三种:
-v 容器内路径 #匿名挂载(数据卷名称随机生成)

-v 卷名:容器内路径 #具名挂载(数据卷名称是自行取的)

-v /宿主机路径:容器内路径 #指定路径挂载(数据卷位置是指定宿主机的某个路径)

–name 20221212_ethercalc,对容器进行命名,若没有指定,则名字随机生成

进入容器安装redis

这一款镜像没有带有redis,我们可以自己再加上。有redis加持之后,线上表的服务能力会更强、更稳定。(这个也是之前踩的一个大坑)
1、查询容器ID

sudo docker ps

在这里插入图片描述
2、进入容器

sudo docker exec -it 容器ID /bin/bash

3、下载redis

cd /usr/local #进入指定路径
mkdir redis  #创建文件
wget http://download.redis.io/releases/redis-5.0.3.tar.gz  #下载安装包
tar -zxvf  redis-5.0.3.tar.gz  #解压缩包
cd redis-5.0.3 #进入解压文件
make #编译
cd src  #进入src文件夹
make install PREFIX=/usr/local/redis #指定安装位置进行安装
mkdir /usr/local/redis/etc #创建文件夹

4、修改redis配置
此时默认的配置文件路径为:/usr/local/redis/redis-5.0.3/redis.conf
正常情况下,我们可以通过vi/vim对文件直接进行修改
然而发现在容器中无法使用vi,也无法使用yum。所以干脆复制到宿主机进行修改,然后复制回去。
需要修改的配置:
都在前200行内
将这行注释掉,表示可以远程访问
在这里插入图片描述
这个改为yes 表明需要在后台运行
在这里插入图片描述
修改完,将其复制到容器内

sudo docker cp /usr/local/redis/etc/redis.conf 20221212_ethercalc:/usr/local/redis/etc/redis.conf

容器和宿主机文件交互:
从容器内复制到宿主机

sudo cp 容器名:容器内文件路径 宿主机文件路径

从宿主机复制到容器内

sudo cp 宿主机文件路径 容器名:容器内文件路径

5、设置redis开机自启动
和上一步一样,我们可以先在宿主机做好修改,再复制进去
创建一个文件名为:rc.local,在里面添加如下命令:

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

在复制到容器内之前,先要在容器内,创建指定文件夹

mkdir /etc/rc.d

然后在宿主机进行复制操作

sudo docker cp /etc/rc.d/rc.local 20221212_ethercalc:/etc/rc.d/rc.local

6、启动redis

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

7、重启Ethercalc
先查询原来任务的进程id在这里插入图片描述
杀死进程

kill -9 进程号

正常情况下,需要再执行启动Ethercalc

node /usr/local/bin/ethercalc

但容器内应已设置自动启动,Ethercalc已经新启动一个进程了

8、退出容器
CTRL+Q+P(退出不关闭)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值