本文主要介绍一些我自己用到的docker相关的知识,供大家参考使用。
在之前一篇文章((87条消息) 给出一个docker + gunicorn + flask 来部署模型的例子_cosmosknight的博客-CSDN博客) 中,我已经介绍了如何用docker + gunicorn + flask 来部署深度学习模型。假如我在本地已经部署好了模型,但是现在需要将它移植到其它地方,比如阿里云服务器上,那该如何操作?
1. 在阿里云上安装docker :
下面是一些常用的命令:
sudo yum install -y docker # 安装docker
sudo systemctl start docker # 启动docker
sudo systemctl enable docker # 开机自启动docker
sudo systemctl stop docker # 停止docker
sudo systemctl restart docker # 重启docker
2.在本地导出镜像文件并上传至阿里云服务器
假如说我在本地机器上按照之前的文章已经部署好了模型,那么我需要把镜像文件导出,拷贝并部署到阿里云服务器上。 可以采用如下方法:
(1) docker save -o my_docker_images.tar e7c9923453f3(或者是镜像名字)
(2) scp my_docker_images.tar user@1xx.2xx.3xx.4xx:/home/user/
(3) 登录该服务器后 : docker load --input my_docker_images.tar
(4) 然后再生成容器: docker run -d -p 8000:5000 -v /home/user/:/home/project/app/log --name deploy_my_model ****
有时候,由于在用docker save 时输入的是 e7c9923453f3, 而不是相应的镜像名字,使得用docker load时出现镜像的名字和标签都是 none 的情况。可以用如下命令给镜像和tag命名:
(5) docker tag [镜像id] [新镜像名称]:[新镜像标签]
例如: docker tag e7c9923453f3 my_rongqi:latest
如果容器运行时,产生大量的core文件,则如下方法能解决该问题:
docker run -d -p 8000:5000 --ulimit core=0 -v /home/user/:/home/project/app/log --name deploy_my_model ****
3.其它docker常用命令
包括查看,启动,删除等命令。
docker images # 查看当前docker中有哪些镜像
docker ps -a # 查看所有正在运行和已经停止的容器
docker ps # 查看正在运行的容器
docker stop *** # 停止运行 *** 容器
docker restart *** # 运行 *** 容器
docker stats # 查看状态
docker rm *** # 删除容器 ***
docker rmi -f *** # 删除镜像文件 ***
也包括查看容器中的文件,像容器拷贝文件,和从容器中拷出文件。
# 查看容器中的文件
docker exec [容器名称] ls -ltrh ./
# 要将本地文件拷贝到容器中:
docker cp file.txt 77a345897:/home/project/app/
# 要将容器中的文件拷贝出来:
docker cp 77a345897:/home/project/app/log/file.txt . # 最后一个 "." 表示当前目录
4.将指定用户添加到docker用户组
比如,一开始我是在root下安装docker的,但是我想让其它用户,比如 $USER 也添加进docker用户组,方法如下(请谨慎参考,时间久了,怕记错了):
sudo groupadd docker # 添加docker用户组
sudo gpasswd -a $USER docker #将登录用户加入到docker
newgrp docker # 更新用户组
sudo service docker restart # 重启docker服务生效