服务器系统:Centos 7
服务器虚拟环境:docker
本地系统:win10
1,win10安装Docker,请参考/TurboWay/p/;
2, CentOS安装Docker,请参考/u014069688/article/details/100532774;
3,方法一,在本地win10中将python文件打包成镜像(需要编写Dockerfile,),上传镜像到CentOS服务器,运行镜像产生容器;
参考文章:/bocai_xiaodaidai/article/details/92838984
1)本地系统中,在python文件对应路径下将它打包成镜像,
docker save tsied:latest > ./
2)在Centos中导入镜像:
sudo docker load < ./
3) 运行镜像:
docker run tsied
4)此处有个坑,python代码中有使用MYSQL数据库,本地运行代码正常,在Centos中运行镜像:报错2003 can't connect to mysql server on
进入容器内部:docker run tsied /bin/sh,发现ping不通主机,更加ping不通外网
解决方法参照:/qq_36059826/article/details/106550332 按照文中第三种方法,修改,重启网络后,运行镜像就正常了。
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/编辑配置文件,在文件中增加以下代码:
-nf-call-ip6tables=1
-nf-call-iptables=1
-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
- docker run 创建容器
- -v /var/lib/docker/pyuserimage 将主机中/var/lib/docker/pyuserimage目录挂载到容器的/usr/src/python
- -w /usr/src/python 指定容器的/usr/src/python目录为工作目录
- anaconda3 是镜像
- python 是命令执行脚本
9)将容器重命名 docker rename 原容器名称 新容器名称
参考文章:/weixin_44285715/article/details/109124916
5,crontab设置定时任务,参考文章:/view/
crontab -e
#输入定时任务
* * * * * root docker restart test
#test 是容器的名字
#查看定时任务
crontab -l
如果Centos服务器的时间和本地时间不一致,定时任务可能会有问题,参考文章
/skh2015java/article/details/85007624
修改成一致的即可。