Centos7下使用dockerfile部署tensoflow+keras的目标检测项目

Dockerfile部署目标检测

  • Centos7安装Docker
  • Dockerfile文件
  • Docker常用命令

Centos7安装Docker

服务器上没有安装Docker的同学,可以参考下我写的这篇文章

Centos7下安装Docker.

Dockerfile文件

#基础镜像
FROM centos:7
#开发者信息
MAINTAINER wangxiansheng <123456789@qq.com>
#项目依赖的包和环境配置
RUN yum -y install epel-release
RUN yum -y install python36
RUN pip3 install --upgrade pip -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
#tensorflow不要使用国内源,会出requirement一系列的bug
RUN pip install tensorflow==1.13.2 
RUN pip install keras==2.1.5 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
RUN pip install flask -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
RUN pip install opencv-python==4.2.0.34 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
RUN pip install pillow==7.1.2 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
RUN pip install matplotlib==3.2.1 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
RUN pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
#如果代码中有opencv的可视化界面,则用此库避免bug
RUN pip install opencv-python-headless -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
#将当前目录中的目标项目拷贝到docker镜像服务器中的code目录下,注意mubiaojiance后面有空格和要导入的目录隔开,COPY要求两个参数,没有空格会报错(大概是at least two arguments)
COPY ./mubiaojiance /code/
#设置工作目录
WORKDIR /code
#docker暴露的端口
EXPOSE 5000
#设置utf-8编码环境
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
#设置目录权限
RUN chmod 755 /code
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#运行docker容器中自启动此py文件
#CMD ["python3.6","./predict.py"]

Dockfile写好后,直接在要部署项目的同级目录下运行"docker build -t 镜像名称:版本号 ."即可,注意版本号后要写点

Docker常用命令

#查询系统存在的所有镜像
docker images
#查询运行的容器
docker ps
#查询停止运行的容器
docker ps -a
#停止容器 container代表容器
#实际使用中将container ID代替成你的容器ID
docker stop container ID
#删除容器
docker rm container ID
#删除镜像 mirror images表示镜像
#实际使用中将mirror images代替成你的镜像ID
docker rmi mirror images ID
#-t是为docker分配一个伪终端,-i是让的容器标准输入保持打开
#TAG表示版本号
docker run -t -i mirror images name:TAG /bin/bash 
#使用端口映射运行container
docker run -it -p port:port mirror image ID
#windows ip命令查看
docker-machine ip
#查看docker磁盘使用情况
docker system df 
#bug Error socker hand up 
docker磁盘空间满了,直接删除所有container和mirror image
#停止所有container
docker stop $(docker ps -q)
#删除所有container
docker rm $(docker ps -aq)
#删除所有mirror image
docker rmi $(docker images -q) -f
#生成pycharm所依赖的包
命令行进入到项目中,运行pip freeze>requirements.txt
#后台运行docker container centos7 port代表宿主机的端口号,container port 代表container的端口号,也就是dockerfile暴露的port
docker run -idt -p centos7 port:container port mirror image ID
#进入container
docker attach container ID 
#将所修改的container保存为新的mirror image
#modify container ID代表你要修改的containerID,new mirror image name 代表你要生成的mirror image
docker commit modify container ID new mirror image name
#不停止container的情况下退出
ctrl p+q
#限制docker的内1.6G:1600M
docker run -idt -port:port -m 300M --memory-swap -1 container ID
#查看assignment container生成的log
docker logs container ID
#container从centos7获取file,absolute path代表file的绝对路径
docker cp centos7 file absolute path container ID : container path
#dockerfile生成mirror image出现bug
#WARNING: IPv4 forwarding is disabled. Networking will not work
systemctl restart docker

#docker内修改系统时间
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime



你可能感兴趣的:(docker部署,docker,linux,centos,python)