python工程打包docker镜像文件

搭建python环境

双击打开docker

然后下载镜像:
docker pull ubuntu

进入ubuntu容器交互系统:
docker run -i -t ubuntu /bin/bash
-t 是启动终端
-i是允许进行交互
这时候敲python命令会发现没有python

ubuntu下安装python:
apt-get update
apt-get install python3
#安装好python用输入python3试一下
#安装pip
apt-get install python3-pip(这个命令好像会同时安装python2.7)
#安装好pip用输入pip试一下
apt-get install python3-dev
apt-get install openssl
apt-get install libssl-dev
apt-get install libffi-dev

查看是否成功:
docker run -v /Users/zjl/python3i/py3image:/py3image -w /py3image ubuntu python3 a.py
-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径
-w参数,是指定为当前镜像工作目录
在本机/Users/zjl/python3i/py3image下创建一个a.py,执行

打包装了python的容器:
命令:docker commit <容器id> 新的镜像名
docker commit 1604777a778c docker/python3env

批量安装库:
命令:docker -v 宿主机目录:容器目录 -w 容器当前工作目录 镜像名 命令
docker run -v /Users/zjl/python3i/py3image:/py3image -w /py3image ubuntu pip3 install -r requirements.txt
-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径
-w参数,是指定为当前镜像工作目录

因为再启动镜像会到初始化的样子所以再打包一次容器,保留内容
docker commit 62d4eefe7e62 python3env

进入容器互动:
docker run -i -t -v /Users/zjl/python3i/py3image:/py3image -w /py3image python3env /bin/bash
敲python进入互动,import一个刚才安装的库
或者
新建一个a.py,在里面import几个刚装的库
再执行:
docker run -v /Users/zjl/python3i/py3image:/py3image -w /py3image python3env python a.py
没有错误就说明成功了


导出镜像:
命令:
docker save -o /Users/zjl/Desktop/aaa/python3env.tar python3env
-o参数,输出文件
需要导出路径喝文件名
需要导出的镜像名

导入镜像:
命令:
docker import /Users/zjl/Desktop/aaa/python3env.tar python3env:1.1
import导入,镜像文件路径和名称,创建镜像的名称和版本


容器和镜像的理解:
镜像是只读文件,感觉像是一个系统安装iOS文件
容器是用来运行镜像并对镜像进行读写的,像是ios安装后的系统,自己本身也能再打包成一个ios文件,容器关闭后不保存修改的数据,再次打开恢复到镜像最初的数据


docker容器内python执行flask程序:
修改flask的host=‘0.0.0.0’
命令:
docker run -p 5001:5000 -v /Users/zjl/Desktop/aaa/spider:/py3image -w /py3image python3env python runflask.py
-p 5001:5000,容器5000端口映射主机5001端口,冒号前是主机端口,冒号后是容器端口


flask程序启动了容器的5000端口,但是映射到了主机的5001端口,访问的IP为docker服务的IP

用docker容器内的python环境执行python程序时将里面连接数据库或者其它啥需要设置IP的都不要用127.0.0.1

windows下启动flask:
不要忘记host='0.0.0.0'
docker run -p 5001:5000 -v D:\PycharmProjects\spider:/py3image -w /py3image python3env python3 runflask.py

猜你喜欢

转载自www.cnblogs.com/hanzeng1993/p/11416792.html