将把python项目打包成Docker镜像(linux版)

1.前提

1.1 安装anconda,并创建虚拟环境,安装python项目所需的包。

Anconda:https://www.anaconda.com/products/distribution#Downloads

1.2 打包python项目所需的依赖:
pip freeze > reauirments.txt
1.3 下载python项目所需依赖包到指定文件夹py_pkgs:
pip download -d py_pkgs -r requirments.txt

2.在线安装Docker

2.1 查看当前linux系统是否支持docker版本:

Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker。

>uname -r

在这里插入图片描述

2.2 安装yum工具

注意:先切换root用户:su root

yum install -y yum-utils \
>            device-mapper-persistent-data \
>            lvm2 --skip-broken
2.3 更新本地镜像源

2.3.1 设置docker镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

2.3.2 安装Docker

yum install -y docker-ce
2.4 查看docker 版本
docker version

在这里插入图片描述

2.5 先输入:sudo systemctl start docker,再输入:sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl enable docker

在这里插入图片描述

2.6 再次输入:docker version,出现了client和server就代表安装成功了。

![](https://img-blog.csdnimg.cn/bd54309d09eb459a8c526c4d1d7d5921.pn

2.7 查看docker启动状态:systemctl status docker(如下图即启动成功)

在这里插入图片描述

2.8 卸载命令:
a.查询docker安装过的包:
yum list installed | grep docker

b.删除安装包:
yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y

c.删除镜像/容器等:
rm -rf /var/lib/docker

3.离线安装Docker

安装步骤:

1、获取docker安装文件,官方地址如下:

https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz

2、将下载的安装文件进行解压,命令如下:

tar zxvf docker-19.03.9.tgz

3、将上述解压后文件(docker文件夹)全部移动至/usr/bin目录下(必须),命令如下:

cp -p docker/* /usr/bin

4、将docker注册为service,步骤如下:

①输入如下命令:

vi /usr/lib/systemd/system/docker.service

②点击i,下面出现-----insert----进入编辑状态

复制下面内容至docker.service,复制内容如下:

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/dockerd \
                -H tcp://0.0.0.0:4243 \
                -H unix:///var/run/docker.sock \
                --selinux-enabled=false \
                --log-opt max-size=1g
ExecReload=/bin/kill -s HUP $MAINPID
#Having non-zero Limit*s causes performance problems due to accounting overhead
#in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
#Uncomment TasksMax if your systemd version supports it.
#Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
#set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
#kill only the docker process, not all processes in the cgroup
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

复制完成之后,点击esc键,并输入:wq!保存并强制退出;

可执行如下命令,查看上述复制内容是否正确

cat /usr/lib/systemd/system/docker.service

5、重新加载docker配置文件,命令如下:

$ systemctl daemon-reload

6、启动docker,命令如下:

$ systemctl start docker

7、设置docker开机启动,命令如下:

$ systemctl enable docker

8、查看docker是否安装成功,命令如下:

$ docker version

4.将python web项目打包成镜像

4.1 先安装一个基础的镜像,如python3.6
docker pull silverlogic/python3.6
4.1.2 如在离线环境,可在联网电脑的docker中pull python的镜像到docker容器,并将python打包成image导出。

在这里插入图片描述
打包python:
docker save -o python.tar python:3.6.2
在这里插入图片描述

4.2 在当前项目文件目录下,编写gunicorn配置文件gunicorn.conf.py文件
sudo vim gunicorn.conf.py

添加一下代码:

workers = 5
worker_class = "gevent"
bind = "0.0.0.0:8080"

查看当前目录结构:
在这里插入图片描述

4.3 编写Dockerfile文件

3.1 创建Dockerfile文件

sudo vim Dockerfile

先借一张图介绍一下 dockerfile:
在这里插入图片描述

添加以下代码到Dockerfile文件中:

FROM python:3.6.2
MAINTAINER susu
COPY requirements.txt ./
RUN pip install  -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
ADD ./engineSystem.tar.gz /flask_project/
WORKDIR /flask_project/engineSystem
COPY requirements.txt ./
CMD ["gunicorn", "app_flask:app", "-c", "./gunicorn.conf.py"]
4.4 制作docker image

我这里镜像的名字直接做成flask_demo了

docker build -t flask_demo:1.0 .

在这里插入图片描述

制作完成了,可以看到还是蛮大的,接下来就是使用它了

docker image ls -a | grep flask_demo
docker images | grep flask_demo
两个命令一样,喜欢用哪一个看你自己啊

在这里插入图片描述

4.5 使用testflask

创建:

docker run -it --name=flask_app -p 5001:8080 flask_demo:1.0

在这里插入图片描述

解释一下参数
–name # 是给你创建的容器起一个名字,在后续进行容器操作的时候可以直接使用名字,不用在使用id
-p # 将宿主机的端口映射到容器中

4.6 查看docker容器内容
docker ps -a | grep flask_app
docker container ls -a | grep flask_app
两个命令一样啊,用哪个都可以

在这里插入图片描述

再次启动:

docker container start flask_app

在这里插入图片描述

进入容器中看看:

docker exec -it flask_app /bin/bash

在这里插入图片描述

4.7 制作成为tar,这样就可以发布到任何一台安装过docker的机器,我这里命名为flask_image.tar用于区别
docker save -o flask_image.tar flask_demo:1.0

查看当前文件目录结构:
在这里插入图片描述

打开看一下(这个命令是打开当前路径的文件夹)

nautilus ./

可以看到文件是存在的
在这里插入图片描述

4.8 载入

下边这个文件,你可以添加绝对路径来导入,我是由于就在当前路径下,直接这样写了

docker load --input flask_image.tar

是载入成功的,由于我之前的镜像没有删除,这里没有区别开:
是载入成功的,由于我之前的镜像没有删除,这里没有区别开
到此,flask项目使用docker就完整完成了。

  • 6
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值