Docker运行python容器
容器是镜像运行的实例,而镜像保存在仓库里,测试或者发布生产环境只需要pull下来即可,相对传统的应用部署,能很好的保持环境的一致,节省运维时间。最近公司内部的java和.net服务也已经全部容器化,实现从开发环境 到 测试环境 再到 生产环境,自动化部署。本文介绍的是python应用运行docker容器。
以django部署到docker 为例
1.编写Dockerfile文件
每一个镜像都有一个Dockerfile文件对应,Dockerfile定义了如何构建镜像。
FROM python:3.6.4 RUN mkdir /code \
&&apt-get update \
&&apt-get -y install freetds-dev \
&&apt-get -y install unixodbc-dev
COPY app /code
COPY requirements.txt /code
RUN pip install -r /code/requirements.txt -i https://pypi.douban.com/simple
WORKDIR /code CMD ["/bin/bash","run.sh"]
FROM:Dockerfile中的一个非常重要的命令,作用是指定一个基础镜像来进行构建流程。比如上面指定了python3.6.4作为基础镜像,后续的一切操作都会以这个镜像作为基础来进行定制,如果不存在,会从官网下载。FROM必须是Dockerfile首个命令。
RUN :Dockerfile执行命令最核心的部分,在构建镜像的过程中执行参数。
COPY:复制文件。COPY <源路径> <目标路径>
WORKDIR:工作目录,若不存在,会自动帮你创建。
CMD:容器启动命令,Docker 不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。 CMD 指令就是用于指定默认的容器主进程的启动命令。如果docker run指定了命令参数,这里的cmd将不会起作用。例如docker run -it -name redis docker.io/redis /bin/bash,启动容器不会执行dockerfile中的cmd,因为docker run已经指定了命令参数/bin/bash。
2.构建镜像
构建目录,我这里有四个文件和文件夹。
1.app是django项目
2.Dockerfile
3.requirements.txt是项目运行所需要的python库
4.run.sh是运行容器时需要调用的shell脚本
[root@CentOS webtest]# ls
app Dockerfile requirements.txt run.sh
requirements.txt
Django
djangorestframework
pyDes
PyMySQL
redis
requests
pymssql
pyodbc
paramiko
psutil
run.sh
python /code/app/manage.py runserver 0.0.0.0:8000
docker bulid -t <name> . 用于构建镜像。
[root@CentOS webtest]# ls
app Dockerfile requirements.txt run.sh
[root@CentOS webtest]# docker build -t webtest .
...
...
...
Removing intermediate container 9c510e88e659
Step 6/6 : CMD /bin/bash run.sh
---> Running in 0bd29255c648
---> 1dfa2905efac
Removing intermediate container 0bd29255c648
Successfully built 1dfa2905efac
构建完成后返回一个镜像id 1dfa2905efac 。
3.运行容器
启动容器,运行刚才构建的镜像。
docker run -it -p 6500:8000 -v /home/code/webtest:/code --name web --restart always --privileged=true web
[root@CentOS webtest]# docker run -it -p 6500:8000 -v /home/code/webtest:/code --name web --restart always --privileged=true web
Performing system checks... System check identified no issues (0 silenced). You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them. August 09, 2018 - 09:56:51
Django version 2.1, using settings 'ShiHangTool.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
-p:把容器的8000端口映射到宿主机6500
-v:主机的目录/home/code/webtest映射到容器的目录/code
--name:给容器起个名字web,webtest是我们刚刚构建的镜像
--restart:always 容器退出时总是重启
--privileged=true:执行容器内文件需要的权限
输入 ip:6000/Home/OrderSettle-K8S/

运行成功!
Docker运行python容器的更多相关文章
- docker cp 和docker exec 查看docker 运行的容器信息
1. 使用docker 运行 redis 和 postgresql docker run -d -p : -v /redis/data/:/data redis docker run -d -p : ...
- 将springboot jar应用打包成镜像并在docker运行成容器
先看一下我的Dockerfile内容与服务器中的目录结构 上面 yibai-0.0.1-SNAPSHOT.jar 为springboot应用打成的jar包,Dockerfile为将应用打成镜像的配置文 ...
- Docker 运行Kafka容器
1. 启动Zookeeper docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper 2. 启动Kafka dock ...
- 使用docker 部署python 项目
使用python 开发了一个restfu api程序,使用docker镜像部署.主要有如下步骤,简单记录以供以后参考. 1. 创建DockerFile文件 创建一个DockerFile文件,文件名为D ...
- Docker 运行hello world
Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world docker run ubuntu:15.10 /bin/echo ...
- docker:python与docker
一:环境准备 pycharm:专业版(windows) docker ce 免费版(ubantu16.04) os: os:防火墙 二:开发流程 pycharm中开发环境搭建的工作原理: 1. pyc ...
- Dokcer运行Nacos容器自动退出问题
Dokcer运行Nacos容器自动退出问题 参考博文 学生党,租的云服务器,2核2G.使用Docker运行Nacos容器的时候发现总是自动退出.Nacos日志里面没有明显的报错信息.查了一下是内存溢出 ...
- Docker环境下运行python+selenium+chrome
Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...
- 用Docker打包Python运行环境
虽然Docker作为部署环境打包镜像的工具,和我的科研并没有直接的关系.但我觉得在项目中运用Docker来打包环境依赖也可以大大提高工作效率,于是准备专门学习一下Docker. 1. Docker基础 ...
随机推荐
- ie7 z-index 失效问题
解决办法: 父级元素加上position:relative;并设置z-index. 父级元素的z-index优先,其中包含的元素的z-index是相对于父级元素的index. <div styl ...
- 条件随机场(CRF)理论及应用
http://x-algo.cn/index.php/2016/02/15/conditional-random-field-crf-theory-and-implementation/ 条件随机场( ...
- 为Subline Text 3 添加支持ini文件语法高亮
转: http://lancelot.blog.51cto.com/393579/1783653 在Subline text 官网下载了Subline text 3 .不过发现没有对ini格式文件的语 ...
- Pandas对行情数据的预处理
库里是过去抓取的行情数据,间隔6秒,每分钟8-10个数据不等,还有开盘前后的一些数据,用Pandas可以更加优雅地进行处理. 需要把当前时间设置为index df=df.set_index('time ...
- String escape/unescape into XML
Is there any C# function which could be used to escape and un-escape a string, which could be used t ...
- OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so
OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so ...
- C++ 纯虚方法
1.纯虚方法解决什么样的问题,为什么要设计出纯虚方法? 考虑下面的需求,基类声明了一个方法,这个方法只针对具体的子类才有意义,比如Animal的Eat()方法,调用Animal的Eat方法是没有意义的 ...
- Global Web Index发布社交网络现状调查,Snapchat增速领跑移动端所有App,四分之一Facebook用户年龄在45岁以上【转载+整理】
原文地址 有次上班做公交,期间听到一个老太太说:"我加你微信啊--",还有一次去看老中医,并交换了电话,可当我回去后发现这个大夫竟然加了我微信--这些都令我有点吃惊,连60.70岁 ...
- vmware备份
http://wenku.baidu.com/view/fc317dcc050876323112128d.html vmware vcb文档 http://www.docin.com/p-423555 ...
- 014-Go Web 对pg增删改查测试
1:data/data.go package data import( "fmt" "database/sql" _"github.com/lib/p ...