docker搭建私有仓库并部署爬虫项目(自己部署的过程)

一.docker原理

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。
    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
在这里插入图片描述

概念说明
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统
Docker 容器(Container)容器是独立运行的一个或一组应用,是镜像运行时的实体
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker 仓库(Registry)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker MachineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

二.安装docker并启动

环境:centos7

(1)环境准备:关闭防火墙、selinux和swap。
systemctl stop firewalld

systemctl disable firewalld

setenforce 0

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

swapoff -a

sed -i 's/.*swap.*/#&/' /etc/fstab
(2)方法一:
yum update -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
(3)方法二:
yum install -y wget
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io

启动docker:

systemctl enable docker
systemctl start docker

测试是否启动成功:

docker info   /  docker version

在这里插入图片描述

三.编写Dockerfile文件

FROM python:3.6
MAINTAINER name "xxxxx@qq.com"
ENV PATH /usr/local/bin:$PATH
ADD . /code
WORKDIR /code/TestSpider
RUN pip3 install -r requirements
CMD /usr/local/bin/scrapy crawl test
  • FROM 指定使用哪个镜像源
  • MAINTAINER 设置作者名与联系邮箱
  • ENV 是环境变量设置,将/usr/local/bin:$PATH赋值给PATH,即增加/usr/local/bin这个环境变量路径。
  • ADD是将本地的代码放置到虚拟容器中。它有两个参数:第一个参数是 “ . ”,代表本地当前路径;第二个参数是/code,代表虚拟容器中的路径,也就是将本地项目所有内容放置到虚拟容器的/code目录下,以便于在虚拟容器中运行代码
  • WORKDIR是指定工作目录,这里将刚才添加的代码路径设成工作路径。这个路径下的目录结构和当前本地目录结构是相同的,所以我们可以直接执行库安装命令、爬虫运行命令等。
  • RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
  • CMD是容器启动命令。在容器运行时,此命令会被执行。在这里我们直接用scrapy crawl test来启动爬虫。

四.构建Docker镜像

docker build -t spider:0.01 .

注意后面有个点
运行测试:

docker run 镜像名

五.搭建私有仓库

(1)搭建私有镜像仓库并查看
docker pull registry
docker images
(2)创建文件夹,往文件中添加密码
cd /opt/
mkdir auth
cd /opt/auth/
echo "user:root passwd:123456" >htpasswd
cd ..
docker run --entrypoint htpasswd registry:latest -Bbn root 123456 >auth/htpasswd
cat auth/htpasswd
## 类似 root:$2y$05$KBeLoXDIaXwSzt7ah/gUGOrbPTfsT/Uy2j92YXCuMBkg.Kl2b2Jby

(3)启动registry1容器 ,默认端口5000映射到5000
docker run  -d -p 5000:5000 --restart=always --name registry1 \
     -v `pwd`/auth:/auth \
     -e "REGISTRY_AUTH=htpasswd" \
     -e  "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
     -e  REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
     registry
(4)搭建私有镜像仓库

配置使用私有仓库

vim /etc/docker/daemon.json
##添加如下内容:
{
"insecure-registries":["192.168.5.120:5000"]
}

重启服务

systemctl restart docker

六.上传镜像到仓库

(1)登录私有仓库
docker login 192.168.5.120:5000

输入之前设定的账号密码,如下所示则成功
在这里插入图片描述

(2)给镜像打tag
docker tag  spider:0.01   192.168.5.120:5000/spider:0.01
(3)上传到仓库
docker push 192.168.5.120:5000/spider:0.01

七.将爬虫镜像下载到本地

(1)登录私有仓库
docker login 192.168.5.120:5000
(2)下载镜像
# 先删除本地镜像
docker rmi -f 192.168.5.120:5000/spider:0.01
# 查看所有镜像
docker images
# 下载镜像
docker pull 192.168.5.120:5000/spider:0.01

八.启动容器

docker run 192.168.5.120:5000/spider:0.01

九.自己配置需要的环境并保存镜像

(1)注册docker hub 账号并登录
(2)下载centos镜像或ubuntu镜像
docker pull centos 
(3)进入centos容器交互模式
docker run -i -t centos  /bin/bash
(4)在centos容器配置需要的环境

配置环境变量

vim /etc/profile

在容器内source是没有作用的,退出容器调用镜像的时候环境变量并未生效

cd ~
vim ./.bashrc
# .bashrc
  
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
source /etc/profile  # 在次数添加刷新环境变量的命令
fi
(5)退出centos容器并保存
Ctrl + P + Q   # 退出容器
docker ps -a  # 查看运行的容器ID
docker stop 容器ID  # 停止容器
docker commit 容器ID 新容器名称   # 从容器创建一个新的镜像

docker安装内容参考
docker部署爬虫内容参考
私有仓库的搭建内容参考
交互式搭建镜像环境内容参考

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值