使用dockerfile创建docker镜像

什么是docker?看这里Docker_入门?只要这篇就够了!纯干货适合0基础小白

创建docker镜像

两种方式:docker commitdockerfile

commit命令创建本地镜像

commit命令是使用我们本地已经创建好的容器打包成镜像,这种方式方便简单,但是有一个缺点,就是这种方式生成的镜像中会包含很多我们使用容器过程中产生的中间文件,可能是缓存或者垃圾文件。这样创建出来的镜像拉起的容器都会包含这些垃圾文件。所以一般不推荐这种方式。

dockerfile

将需要对镜像进行的操作全部写到一个Dockerfile名字的文件中,然后使用docker build命令从这个文件中创建镜像。这种方法可以使镜像的创建变得透明和独立化,并且创建过程可以被重复执行。Dockerfile文件以行为单位,行首为Dockerfile命令,命令都是大写形式,其后紧跟着的是命令的参数。

先创建一个空目录mkdir /usr1/xmla_python,然后在目录下创建Dockerfile文件

# 基础镜像FROM python:3.6# 作者信息MAINTAINER xingxingzaixian "942274053@qq.com"# 设置工作目录WORKDIR /app# 拷贝本地requirements.txt文件到镜像的/app目录下ADD requirements.txt /app# 把scrapyd配置文件拷贝到镜像指定目录ADD scrapyd.conf ~/.scrapyd.conf# 创建scrapyd数据目录,设置时区,保证镜像时间正常,安装python环境库RUN mkdir /scrapyd  &&         pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com -r requirements.txt# 开放端口,主要是scrapyd端口EXPOSE 6800 80# docker容器启动时执行scrapyd命令,启动scrapydCMD ["scrapyd", "redis-server"]

创建requirements.txt,主要是用来初始化python环境

scrapy==1.5.0scrapyd==1.2.0redis==2.10.6scrapy-redis==0.6.8lxml==4.2.1requests==2.18.4

创建scrapyd.conf文件,主要是配置scrapyd环境,在我们的Dockerfile文件中使用ADD

[scrapyd]# 项目的eggs存储位置eggs_dir = /scrapyd/eggs# scrapy日志的存储目录。如果要禁用存储日志,请将此选项设置为空,logs_dir=logs_dir = /scrapyd/logs# scrapyitem将被存储的目录,默认情况下禁用此项,如果设置了值,会覆盖scrapy的FEED_URI配置项items_dir =# 每个蜘蛛保持完成的工作数量。默认为5jobs_to_keep = 5# 项目数据库存储的目录dbs_dir = /scrapyd/dbs# 并发scrapy进程的最大数量,默认为0,没有设置或者设置为0时,将使用系统中可用的cpus数乘以max_proc_per_cpu配置的值max_proc = 0# 每个CPU启动的进程数,默认4max_proc_per_cpu = 4# 保留在启动器中的完成进程的数量。默认为100finished_to_keep = 100# 用于轮询队列的时间间隔,以秒为单位。默认为5.0poll_interval = 5.0# webservices监听地址bind_address = 0.0.0.0# 默认 http 监听端口http_port = 6800# 是否调试模式debug = off# 将用于启动子流程的模块,可以使用自己的模块自定义从Scrapyd启动的Scrapy进程runner = scrapyd.runnerapplication = scrapyd.app.applicationlauncher = scrapyd.launcher.Launcherwebroot = scrapyd.website.Root[services]schedule.json     = scrapyd.webservice.Schedulecancel.json       = scrapyd.webservice.Canceladdversion.json   = scrapyd.webservice.AddVersionlistprojects.json = scrapyd.webservice.ListProjectslistversions.json = scrapyd.webservice.ListVersionslistspiders.json  = scrapyd.webservice.ListSpidersdelproject.json   = scrapyd.webservice.DeleteProjectdelversion.json   = scrapyd.webservice.DeleteVersionlistjobs.json     = scrapyd.webservice.ListJobsdaemonstatus.json = scrapyd.webservice.DaemonStatus

主要是eggsdir、logsdir、dbs_dir三个目录配置,其他的可以默认,这三个目录的主目录/scrapyd,我们在Dockerfile文件的RUN命令中添加mkdir /scrapyd来创建

以上创建完以后我们就可以使用docker build命令来构建镜像了

执行docker build -t scrapy_python .命令构建镜像,其中-t参数指定镜像名,.则为Dockerfile文件的路径

数据库就不安装在docker里面了,我们只需要在一台机器上安装redis和MongoDB就行了,没必要在每台机器上都部署,这块我们暂时不做集群处理,以后再优化。

安装完docker后就可以启动了:docker run -it /bin/bash -p 6800:6800

-p:映射容器端口到主机

原文发布于微信公众号 - python爬虫实战之路(gh_f26a568fdea8)

原文发表时间:2018-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿说1024

Docker 安装

3786
来自专栏JMCui

Docker 系列五(Docker Compose 项目).

    Docker Compose 是官方编排项目之一,负责快速的部署分布式应用。它允许用户通过一个单独的 docker-compose.yml 模板文件(Y...

902
来自专栏大魏分享(微信公众号:david-share)

深度理解:Openshift端口方式全解析

一、几种网络端口模式 Openshift/Docker中,我们会遇到(听到)的几种网络端口模式有: Hostport Nodeport Hostnetwork ...

62710
来自专栏编程坑太多

『中级篇』Docker Compose到底是什么(38)

PS:上节通过image 和container的方式创建wordpress,一般麻烦吧还不算特别麻烦,但是相比今天的docker-compose.yml来说,还...

1133
来自专栏糊一笑

centos中docker的安装

1883

Docker Hub:保存并分享你的Docker镜像

Docker Hub 是一个基于云的注册服务网站,提供容器应用或容器服务的构建功能。

2356
来自专栏魏艾斯博客www.vpsss.net

windows 下如何生成 tar 或 gz 压缩包

2204
来自专栏Rainbond开源「容器云平台」

云帮两周问答集锦(2017.03.20-2017.04.02)

993
来自专栏编程坑太多

『中级篇』Docker Compose到底是什么(38)

PS:上节通过image 和container的方式创建wordpress,一般麻烦吧还不算特别麻烦,但是相比今天的docker-compose.yml来说,还...

1494
来自专栏编程

手把手教你制作漏洞复现环境

在学习的过程中, 是否看到别人搭建的练习平台心痒痒呢? 通过本篇教程的学习, 将手把手教你搭建属于自己的漏洞测试利用环境, 不管是自己学习还有分享给小伙伴都将轻...

32710

扫码关注云+社区