服务器系统:Centos 7

服务器虚拟环境:docker

本地系统:win10

1,win10安装Docker,请参考https://www.cnblogs.com/TurboWay/p/12923814.html

2,  CentOS安装Docker,请参考https://blog.csdn.net/u014069688/article/details/100532774

3,方法一,在本地win10中将python文件打包成镜像(需要编写Dockerfile,),上传镜像到CentOS服务器,运行镜像产生容器;

参考文章:https://blog.csdn.net/bocai_xiaodaidai/article/details/92838984

1)本地系统中,在python文件对应路径下将它打包成镜像,

docker save tsied:latest > ./tsied.tar

2)在Centos中导入镜像:

sudo docker load < ./tsied.tar

3)  运行镜像:

docker run tsied

4)此处有个坑,python代码中有使用MYSQL数据库,本地运行代码正常,在Centos中运行镜像:报错2003 can't connect to mysql server on

进入容器内部:docker run tsied /bin/sh,发现ping不通主机,更加ping不通外网

解决方法参照:https://blog.csdn.net/qq_36059826/article/details/106550332 按照文中第三种方法,修改sysctl.conf,重启网络后,运行镜像就正常了。

  docker主机内部网络正常,与其它主机的连接失效,其它主机不能连接docker主机上映射的端口,docker内部也无法连接外部主机,利用docker info指令查看信息发现报错如下:

WARNING: IPv4 forwarding is disabled

WARNING: bridge-nf-call-iptables is disabled

WARNING: bridge-nf-call-ip6tables is disabled

使用指令vim /etc/sysctl.conf编辑配置文件,在文件中增加以下代码:

net.bridge.bridge-nf-call-ip6tables=1

net.bridge.bridge-nf-call-iptables=1

net.bridge.bridge-nf-call-arptables=1

net.ipv4.ip_forward=1

 

4,方法二,在CentOS服务器中拉取anaconda镜像,将python文件上传到CentOS服务器,运行镜像产生容器;

1)在CentOS服务器中拉取anaconda镜像

docker pull continuumio/anaconda3

2)运行镜像,进入交互界面,并且将容改名为anaconda

docker run -it  --name anaconda   continuumio/anaconda3 /bin/bash

3)在容器内安装需要的包

pip install xxx

4)退出交互界面   Ctrl+P+Q

5)将容器保存为新镜像

docker commit anaconda anaconda3

6)复制主机的localtime到容器,确保容器中的时间与主机一致,避免一些坑。

docker cp /etc/localtime 87986863838b:/etc/
#87986863838b是我的容器ID
#查询容器ID: docker ps -a

7)重启容器,进入正在运行的容器交互界面

docker  restart anaconda

docker exec -it anaconda /bin/bash

8)将.py文件上传到服务器上,挂载.py文件所在目录,运行产生新容器

挂载.py文件所在目录

sudo docker run -v /var/lib/docker/pyuserimage:/usr/src/python -w /usr/src/python  anaconda3 python test.py
  • docker run 创建容器
  • -v /var/lib/docker/pyuserimage 将主机中/var/lib/docker/pyuserimage目录挂载到容器的/usr/src/python
  • -w /usr/src/python 指定容器的/usr/src/python目录为工作目录
  • anaconda3 是镜像
  • python test.py 是命令执行test.py脚本

9)将容器重命名    docker rename 原容器名称 新容器名称

参考文章:https://blog.csdn.net/weixin_44285715/article/details/109124916

5,crontab设置定时任务,参考文章:http://c.biancheng.net/view/1092.html

crontab -e
#输入定时任务
* * * * * root docker restart test
#test 是容器的名字
#查看定时任务
crontab -l

如果Centos服务器的时间和本地时间不一致,定时任务可能会有问题,参考文章

https://blog.csdn.net/skh2015java/article/details/85007624

修改成一致的即可。

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐