Docker实践2

来源:互联网 发布:手机淘宝怎么秒杀东西 编辑:程序博客网 时间:2024/06/03 14:57

Docker环境部署

Docker安装: 我使用的是企鹅的云服务器,ubuntu 32位
网上有根多安装教程,我找了个最简单的
sudo apt-get install -y docker.io

如果安装成功: docker info 后会出现docker版本信息

但是不出所料,肯定没那么顺利
Cannot connect to the Docker daemon.

网上查询一番。原来是sudo的原因

使用sudo docker info就不存在这个问题,但每个docker命令都要加sudo似乎太麻烦
按照下列步骤就可以完美解决
1.创建docker组:sudo groupadd docker
2.将当前用户加入docker组:sudo gpasswd -a ${USER} docker
3.重启服务:sudo service docker restart
4.刷新Docker成员:newgrp - docker

然后我想下载一个Anaconda的镜像
docker search anaconda
anaconda images
因为用的的python3,所以选择了continuumio/anaconda3 ,下下来总共有2个G..
docker images

然后我想进入该镜像,docker run continuumio/anaconda3
错误!!
panic: standard_init_linux.go:178: exec user process caused “exec format error”
panic: standard_init_linux.go:178: exec user process caused “exec format error”

然后老夫从中文查到英文。。。原来是他鸟的docker不支持32位ubuntu…”exec format error”当时就有点怀疑是不是系统的问题=,=,唉,还是太年轻

然后重装系统,重复上面的操作!Bingo!

Docker 应用部署

因为continuumio/anaconda3太大了,所以选择现在官方的python3.5镜像,然后惊奇的发现里面竟然包含了pip,json等常用库。

docker run -t -i python:3.5 /bin/bash

进入交互界面,然后通过pip完成scrapy的安装,完成scrapy安装后,将电脑上的scrapy工程scp到云主机上

scp -r file name@ip:/home/ubuntu/docker/scrapydocker run -ti -v $PWD/docker/scrapy/cnki:/usr/src/myapp -w /usr/src/myapp python:3.5 /bin/sh  

然后在容器中运行爬虫

scrapy crawl cnki1

但是,提示的是没有scrapy命令..这个咋回事,进入python后,import scrapy也不存在。
后来仔细想了下,当你停止一个Docker容器,对初始状态(创建容器所用的镜像的状态)做的所有变化都会丢失。因此当我退出时,刚刚pip下来的scrapy已经丢失了,回到了初始状态。

所以我又重复了一遍scrapy的安装,后来知道通过docker ps -al可以找到之前运行的容器然后直接commit为新的镜像。

docker ps   #获取当前容器idCONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES6a1971dc899c        python:3.5          "/bin/bash"         About a minute ago   Up About a minute                       cranky_euler2a7240457ee0        python:3.5          "/bin/bash"         About an hour ago    Up About an hour docker commit 2a7240457ee0 scrapy #将该镜像保存docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEscrapy              latest              7f53ab80aa28        6 seconds ago       766.2 MBpython              3.5                 538287ecca03        13 hours ago        689.1 MBubuntu              latest              f7b3f317ec73        2 weeks ago         117.3 MBdocker run -ti -v /home/ubuntu/docker/scrapy/cnki:/usr/src/myapp -w /usr/src/myapp scrapy /bin/shscrapy crawl spider1

命令说明:

-v /home/ubuntu/docker/scrapy/cnkimyapp:/usr/src/myapp :将主机中目录下的myapp挂载到容器的/usr/src/myapp

-w /usr/src/myapp :指定容器的/usr/src/myapp目录为工作目录

成功爬取数据

Docker容器链接

由于在服务器端部署的docker,所以希望能够远程直接使用,因此考虑使用ssh远程连接docker。
首先交互模式进入容器,安装ssh并启动

sudo apt-get install openssh-server/etc/init.d/ssh start vim /etc/ssh/sshd_config //添加5001端口,修改完了记得docker commit 一下Port 5001docker run -d -p 5001:22 scrapy/cnki /etc/init.d/ssh start

期间也出了很多问题…但是由于时间比较久了,都没咋记录,不过都通过百度谷歌等方法找到了解决方案。

ssh root@ip -p 5001

因为容器是root用户所以这里是root,然后就可以直接进入容器操作了

0 0
原创粉丝点击