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就代表安装成功了。
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=infinityTimeoutStartSec=0#set delegate yes so that systemd does not reset the cgroups of docker containersDelegate=yes
#kill only the docker process, not all processes in the cgroupKillMode=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 enabledocker
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容器内容
dockerps -a |grep flask_app
docker container ls -a |grep flask_app
两个命令一样啊,用哪个都可以
再次启动:
docker container start flask_app
进入容器中看看:
dockerexec -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就完整完成了。
版权归原作者 monkey_susu 所有, 如有侵权,请联系我们删除。