命令记录:
119 docker build -t realtor:latest
120 docker build -t realtor:latest .
121 docker ps
122 docker images
123 docker build -t realtor:latest .
124 docker images
125 docker run realtor
126 docker build -t realtor1:latest .
127 docker images
128 docker run realtor1
129 docker build -t realtor2:latest .
130 docker ps
131 docker run realtor2
132 docker exec -it a61915f03c32 bash
133 docker iamges
134 docker images
135 docker exec -it a61915f03c32 bash
136 docker ps
137 docker run -d realtor2
138 docker ps
139 docker pas -a
140 docker ps -a
141 docker run -dit realtor2
142 docker attach realtor
143 docker attach realtor2
144 docker ps
145 docker exec -it realtor2 bash
146 docker exec -it 36ed93a2cfa5 bash
147 history
出现的问题:
1:关于文件的目录问题:
FROM python:3.6
ENV PATH /usr/local/bin:$PATH
ADD . /code
WORKDIR /code
RUN pip3 install -r requirements.txt -i https://pypi.douban.com/simple
#CMD scrapy crawl realtor
第一行的FROM
代表使用的Docker基础镜像,在这里我们直接使用python:3.6的镜像,在此基础上运行Scrapy项目。
第二行ENV
是环境变量设置,将/usr/local/bin:$PATH
赋值给PATH
,即增加/usr/local/bin
这个环境变量路径。
第三行ADD
是将本地的代码放置到虚拟容器中。它有两个参数:第一个参数是.
,代表本地当前路径;第二个参数是/code
,代表虚拟容器中的路径,也就是将本地项目所有内容放置到虚拟容器的/code目录下,以便于在虚拟容器中运行代码。
第四行WORKDIR
是指定工作目录,这里将刚才添加的代码路径设成工作路径。这个路径下的目录结构和当前本地目录结构是相同的,所以我们可以直接执行库安装命令、爬虫运行命令等。
第五行RUN
是执行某些命令来做一些环境准备工作。由于Docker虚拟容器内只有Python 3环境,而没有所需要的Python库,所以我们运行此命令来在虚拟容器中安装相应的Python库如Scrapy,这样就可以在虚拟容器中执行Scrapy命令了。
第六行CMD
是容器启动命令。在容器运行时,此命令会被执行。在这里我们直接用scrapy crawl quotes来启动爬虫。
ADD 命令是是将代码放入容器中的命令,很关键,
我在爬虫项目中有read 文件的命令,但是路径不是相对于项目的位置,而是一个固定位置,所以会报错,要结合这里的命令
来确定真的文件路径
还有一个问题是关于进入docker容器的问题:
默认自己创建的容器会在执行了dockerfile中的cmd命令之后会退出,所以就算你是使用了
docker run -d container_name ;
容器也不会在后台运行,需要用到:
docker run -dit container-name 才行
查看容器运行命令:
docker ps
查看镜像:docker images
进入容器:
docker exec -it 容器id bash
注意这里只能是容器的id,不能是名字,但是好像能通过名字,后面来补充;
3:关于linux文件目录问题:
/code/AmericanRealEstate/ 只能以这种"/" 分隔目录,不然会找不到目录:
4:还是ADD 的问题:对于创建的项目,我们命名可能与ADD 的名称不一样,这里一定要一样,不然会提示找不到模块;