dockerfile文件内容:
#基于的基础镜像
FROM python
#设置ipdivide文件夹是工作目录
WORKDIR ./ipdivide
#更新apt-get并安装ping命令
RUN apt-get update && apt-get install iputils-ping
#代码添加到 . 文件夹
ADD . .
#安装支持
RUN pip install -r requirements.txt -i Simple Index
# pip换源地址可自行更改
#运行命令
CMD ["python", "./manage.py", "runserver", "0.0.0.0:8000"]
PS:执行命令:pip freeze > requirements.txt 生成requirements.txt ,可以删除其中不需要的组件
例如:$ docker build -t nginx:v3 .
docker build -t test .
# test只是一个名字 . 表示放在当前目录
docker run -it -p 8000:8000 -v/root/ip:/ipdivide/ python:3.10 bash
docker exec -it 容器id bash(进入容器内)
运行镜像并进入镜像 -v 本地地址路径:容器地址路径(测试环节)
或者:
(推荐)docker run -itd -p 8000:8000 test01:latest (最终环节)
python manage.py runserver
可能会报错: from django.core.management import execute_from_command_line ModuleNotFoundError: No module named 'django' ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
此错误为没有导入requirements.txt 里面相应的包
pip install -r requirements.txt -i Simple Index
Simple Index 为临时源
安装完成后运行即可:
python manage.py runserver 0.0.0.0:8000
放到MobaXterm中出现utf-8编码错误:
pycharm中右下角选择unix模式的代码,然后重新导入
docker容器中默认不包含ping命令,执行以下代码:
apt-get update
apt-get install iputils-ping
虚拟机上不允许登录问题,修改以下代码为:
ALLOWED_HOSTS = ['*']
使用ping命令ping不通:
ret = subprocess.call("ping -n 1 -w 10 %s" % ip, shell=True)
使用ping命令参数无效:invalid parameter
原因:linux使用的ping参数不同于windows
修改:ret = subprocess.call("ping -c 1 -w 10 %s" % ip, shell=True)
-c 5 (ping 5次)
-s 56 (size为一个ping包的字节数)
-W 10 (第一个包响应超时的时间为10s)
-w 10 (ping操作完成的超时时间为10s )
docker rm -f 容器id 删除容器
docker rmi 镜像id 删除镜像
以上所提均为测试环节
1.编写dockerfile
2.构建镜像 docker build -t ipdivide:v1.0 .
3.运行镜像 docker run -itd -p 8000:8000 ipdivide:v1.0(成功运行)
4.打包镜像 docker commit c2ec7ffdf339(镜像) ipdivide:v1.0
docker save -o ipdivide.tar(打包完成后的镜像包) ipdivide:v1.0
(完,ps:后续更新继续补充)