【记录】CentOS7(Linux)通过Docker部署Ethercalc(含redis)
【记录】在Linux-CentOS7通过Docker部署EthercalcDocker重新安装卸载容器安装容器修改容器配置安装Ethercalc用docker安装Ethercalc进入容器安装redisDocker重新安装因为原先版本的容器在调整配置文件后重启会报错经排查可能是版本不兼容的问题所以对旧版本的docker进行卸载重新安装最新版。报错信息Jobfordocker.service failed because the control process exited with error code. Seesystemctl status docker.serviceandjournalctl -xefordetails.卸载容器1、查看安装过的包yum list installed|grep docker发现本机安装过的旧版本docker.x86_64docker-client.x86_64docker-common.x86_642、删除安装的docker相关的包yum-yremove docker.x86_64 yum-yremove docker-client.x86_64 yum-yremove docker-common.x86_64安装容器1、确认CentOS系统版本安装Docker需内核版本官方要求至少 3.8 以上建议 3.10 以上uname-r2、把yum包更新到最新yum update3、安装需要的软件包yum-util 提供yum-config-manager功能sudo yum install-y yum-utils device-mapper-persistent-datalvm24、设置yum的源sudo yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo5、查看核实仓库中docker的版本我们用的社区版CE为免费版本还有一个版本企业版EE为收费版本。yum list docker-ce--showduplicates|sort-r6、安装dockersudoyuminstalldocker-ce7、启动docker设置开机启动sudosystemctl startdockersudosystemctlenabledocker8、查看版本dockerversion修改容器配置1、查看当前容器数据路径sudodockerinfo一般默认是在/var/lib/docker这样后期会因为容器日志占用太大内存导致磁盘爆满进而影响服务器的正常使用所以我们要修改容器数据的路径并控制日志的数量和大小2、修改容器配置sudovi/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 restartdocker4、再次确认是否生效安装Ethercalc用docker安装Ethercalc1、搜索镜像sudodockersearch ethercalc2、拉取好评最多的镜像sudodockerpull audreyt/ethercalc共1.04G3、创建数据卷sudodockervolume create ethercalc_data_20221212创建数据卷用于后续容器挂载方便后续数据的迁移等4、启动容器sudodockerrun-p9000:8000-uroot--privilegedtrue--restartalways--cpus2-itd--name20221212_ethercalc-vethercalc_data_20221212:/dump/ audreyt/ethercalc-p 9000:8000 代表将容器内的8000端口映射到宿主机的9000端口这边需要说明的是如何知道容器内的Ethercalc服务采用的是8000端口同样的如何知道容器内的数据是在哪个路径因为当时在官方文档没找到相关说明我这边采用的是先试运行一个查看运行的信息确认端口等信息sudodockerrun-uroot--privilegedtrue--restartalways-itaudreyt/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、查询容器IDsudodockerps2、进入容器sudodockerexec-it容器ID /bin/bash3、下载rediscd/usr/local#进入指定路径mkdirredis#创建文件wgethttp://download.redis.io/releases/redis-5.0.3.tar.gz#下载安装包tar-zxvfredis-5.0.3.tar.gz#解压缩包cdredis-5.0.3#进入解压文件make#编译cdsrc#进入src文件夹makeinstallPREFIX/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 表明需要在后台运行修改完将其复制到容器内sudodockercp/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然后在宿主机进行复制操作sudodockercp/etc/rc.d/rc.local 20221212_ethercalc:/etc/rc.d/rc.local6、启动redis/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf7、重启Ethercalc先查询原来任务的进程id杀死进程kill -9 进程号正常情况下需要再执行启动Ethercalcnode/usr/local/bin/ethercalc但容器内应已设置自动启动Ethercalc已经新启动一个进程了8、退出容器CTRLQP退出不关闭