在日常的开发中,公司的内网是无法访问互联网的,有时候系统环境的差异,导致在内网中安装软件非常麻烦,深受其苦,所以,有时候为了方便快捷,我经常使用安装Docker镜像的方式来规避许多问题,屡试不爽。
下面就以安装ttskit语音合成的镜像为例。
ttskit是Text To Speech Toolkit的缩写,翻译为语音合成工具箱,是开源软件。可以将文字转为音频,github地址如下:
https://github.com/kuangdd/ttskit
对于ttskit的安装,其github主页只做了简单的说明
pip install -U ttskit
当然在使用pip安装ttskit的过程中,还会下载很多相关依赖,如果在内网直接安装,肯定会遇到很多问题,所以就可以通过制作Docker镜像的方式来安装ttskit。
对于制作ttskit镜像,当然要有一个简单的centos系统,所以第一步,就需要先拉取centos的Docker镜像
docker pull centos:centos7
拉取完centos7基础镜像后,需要启动该镜像,并在其中安装Python环境
docker run -d --name centos-ttskit -v /home/centos:/home/centos --privileged=true centos:7 /usr/sbin/init
当然了,安装Python的过程就要自己去查资料了,Python安装完后,就可以安装ttskit了,这个过程会遇到很多问题,耐心解决就好,本人花了5个小时,才把ttskit镜像制作好。
当把ttskit在容器中跑起来后,就可以把此centos7的容器提交,生成一个包含ttskit环境的新镜像了,使用如下命令:
docker commit 45c9f94add5f centos/ttskit:v1
# 45c9f94add5f为运行centos的容器id


对于制作好的镜像,需要将镜像保存在本地,使用如下命令
docker save -o centos_ttskit.tar centos/ttskit:v1

将制作好的镜像的tar包,拷贝到内网,再使用如下命令,将其镜像导入到内网的docker镜像库中
docker load -i centos_ttskit.tar
docker images
docker run -it --name=ttskit -v/home/ttskit:/home/ttskit -p 9000:9000 centos_ttskit:V1 /bin/bash
上面解决了如何在无网络情况下,使用Docker镜像安装软件,这种方法非常实用并且有用,可以规避掉很多环境上的版本差异。
当然了,对于单纯的在无网络情况下,把已有的Docker镜像导入内网镜像库,比如mysql,这种就完全不用自己去制作镜像,直接docker pull完,再docker save保存就行了,把保存好的镜像导入内网,这更简单。