Docker
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。
在这个项目中我用的就是Docker-CE
Django
Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。
Django 是一个开放源代码的 Web 应用框架,由 Python 写成。
Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)
安装Docker
国内 daocloud 一键安装命令
curl -sSL https://get.daocloud.io/docker | sh
Docker命令的基本使用
# 启动docker 如果启动不了说明安装失败
service docker start
# 查看所有镜像
docker images
# 查看所有的启动的容器
docker ps
# 启动容器
docker run -it 镜像ID\镜像名称:标记 /bin/bash
# 将容器端口映射到7979
docker run -p 7978:7979 镜像ID\镜像名称:标记
# 查看所有容器
docker ps -a
# 删除容器 前提是容器已停止 否者报错
docker rm 容器ID\名称
# 删除镜像
docker rmi 镜像ID\镜像名称:标记
# 停止容器
docker stop 容器ID\名称
# 重启一个容器
docker restart 容器ID\名称
# 启动一个已停止的容器
docker start 容器ID\名称
配置文件
因为要用自己构建的镜像,所以就可以用Dockerfile来构建。
首先我自己做了一个项目Ginet。
下面是项目目录
api
ginet
__pycache__
templates
manage.py
在项目目录里创建Dockerfile和requirements.txt文件。
vim Dockerfile
vim requirements.txt
创建后项目目录为
api
ginet
__pycache__
templates
manage.py
Dockerfile
requirements.txt
Dockerfile
用于执行一些命令来构建我需要的这个镜像
每行命令上是对该行命令的解释
# 使用的是基于python3.8.2的Linux的镜像 该Python基于Linux-Debian系统
FROM python:3.8.2
# RUN 执行一个命令 在我们要构建的镜像里递归创建一个文件夹
RUN mkdir /data/prj/ginet -p
# 然后将当前Dockerfile位于的目录里的所有文件复制到之前在镜像里创建的那个文件里
COPY . /data/prj/ginet
# 指明面的命令的工作目录
WORKDIR /data/prj/ginet
# 更新pip版本
RUN pip install --upgrade pip
# 换成清华的镜像源 下载要快一些
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装requirements.txt文件里写的依赖项
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 指明工作目录
WORKDIR /data/prj/ginet
# CMD在镜像启动时执行的命令 在这里就是以8000端口启动Django项目
CMD python manage.py runserver 0.0.0.0:8000
Requirements.txt
在这个歌文件里指明要安装的依赖有哪些,我的Django项目里用到了这些于是我就安装这些
django
PyJWT
PyMySQL
djangorestframework
oss2
uwsgi
django-cors-headers
生成镜像
在Ginet的目录下,运行Dockerfile文件
# ginet是我要生成的镜像的名称 v1是我给这个版本的标志
docker build . -t ginet:v1
# 最后出现这个及生成镜像成功
# 1c1ac32e7b25 镜像ID
Successfully built 1c1ac32e7b25
Successfully tagged ginet:v1
启动项目
在命令行输入如下
docker run -p 8000:8000 ginet:v1
进入浏览器输入127.0.0.1:8000,就看到自己的项目就成功了
其他
要是下次想用,同样通过Dockerfile来快速创建自己的镜像,或者将这个镜像上传仓库,下次下载就可以了。
之前记得要先申请一个免费的DockerHub的账号
# 登录我自己的仓库
# 登录
[root@localhost ginet]# docker login
# yanggeol 是我的用户名
[root@localhost ginet]# docker tag ginet:v4 yanggeol/ginet:v4
[root@localhost ginet]# docker push yanggeol/ginet:v4
# 搜索镜像
[root@localhost ginet]# docker search yanggeol/ginet
# 退出
[root@localhost ginet]# docker logout