一、需求
1. 制作一个图像辨识的api,用到相同设置的ubuntu镜像,但是每次制作都要更新ubuntu和下载tesseract浪费半个到一个小时下载,所以制作一个自定义ubuntu几次镜像大大提高开发效率。
2. 制作ubuntu过程时,可以调试tesseract是否能用,对于ubuntu需要下载很多库时,很有帮助。
二、ubuntu镜像制作
a.ubuntu下载
# 拉原始镜像
docker pull ubuntu
# 进入镜像操作,添加需要的库
docker run -it ubuntu /bin/bash
b.第三方库下载
# apt 换源
sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
apt-get clean
apt-get update
# 时区设置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' >/etc/timezone
# python相关
apt-get install -y python3
apt-get install -y python3-pip
pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pillow-PIL -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 新 tesseract
apt-get install tesseract-ocr -y
apt-get install -y libgl1-mesa-dev
ps:
1. requirements.txt 文件需要从外部复制进来,可以用命令
docker cp 主机路径/test.txt 容器ID:/test/
2. ubuntu 更新换源是个大坑,很多错误的教程,上面命令亲自测试,有效!!!
2022/02/24 好像过期了,无法换源
sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
apt-get clean
apt-get update
参考:Docker ubuntu apt-get更换国内源解决Dockerfile构建速度过慢_weixin_33936401的博客-CSDN博客
3.镜像下载在docker软件选项里设置换源(windows),网上教程正确。
三、提交到新的ubuntu镜像
生成镜像的命令
docker commit -m "description" -a "author" <容器id> repository:tag
reposiory:镜像仓库名,任取即可。
tag:镜像标签名,任取即可。
能查看到镜像:
参考:在Docker下构建一个自己的Ubuntu镜像_NelsonCheung的博客-CSDN博客
四、dockerfile引用
from awaly/ubuntu:tesseract
ADD . /app
WORKDIR /app
CMD ["python3", "/app/main.py"]
这样修改code后,一分钟内就生成新的docker