私有仓库搭建


一、私有仓库搭建

镜像获取方式:
方式1、docker pull  镜像
方式2、dockerfile构建
方式3、拷贝tar文件,load过来

注意:一般是 公司内部用的镜像,docker hub上没有,私服(私有服务器)

私有仓库搭建

操作步骤:
步骤 1 拉一个registry镜像 (本质是个什么?答:web服务(想像成 web项目在里面))
docker pull registry
步骤 2 跑起容器来
docker run -di --name=registry -p 5000:5000 registry
步骤3 浏览器输入地址(目前是空的)
http://宿主机IP:5000/v2/_catalog

例如:http://10.0.0.203:5000/v2/_catalog

 

 

 以上就是搭建好了私有仓库


步骤 4 vi /etc/docker/daemon.json (文件 如果没有就创建出来:vim daemon.json)。以后docker pull 镜像时 先从自己配置的这个拉,再去远程拉
{"insecure-registries":["10.0.0.203:5000"]}

 

 

 图型解释 步骤4 的意思

 

 

 

 

 

 

步骤 5 重启docker 服务。发现容器停了
systemctl restart docker

步骤 6 启动容器
docker restart registry

步骤 7 标记本地的镜像(本地的镜像可能是dockerfile构建的,也可能是通过容器打包成的)
docker tag django1.11.9 10.0.0.203:5000/django1.11.9                 django1.11.9          表示镜像的名字

 

 

 

步骤 8 把标记好的本地镜像,传到搭建好的私有仓库上
docker push 10.0.0.203:5000/django1.11.9

问题:

 

 解决:

原因:docker镜像仓库暂不支持https

办法:

在”/etc/docker/“目录下,创建”daemon.json“文件(如果有的话直接覆盖)。在文件中写入


{ "insecure-registries":["10.0.0.203:5000"] }

然后重启docker服务,重启registry容器,再docker push 10.0.0.203:5000/django1.11.9


步骤9 再访问这个地址http://宿主机:5000/v2/_catalog ,就能看到你上次的镜像再里面了


 

 

注意:

只要在他自己的电脑上 etc/docker/daemon.json,配置了这个{"insecure-registries":["10.0.0.203:5000"]} 的所有小伙伴,都可以拉取我上传的镜像

docker pull10.0.0.203:5000/django1.11.9

注意:

 公司可能没有私服,直接通过dockerfile构建
大一点的公司,搭建私有仓库,里面放了一些镜像(不让你去docker hub下了,直接只从私有仓库下载)


私服传奇 大哥传奇,一刀传奇
现成的代码,只需要买台服务器,部署上就行了(只要有用户,充钱,就冲在你那里),利润非常非常高,请到一些明星代言

安卓修改器,apk解压,修改源代码,把原来的服务器地址,改成你的就可以了
安卓的破解软件多,安卓逆向

二、cgi,fastcgi,WSGI,uWSGI,uwsgi,ASGI

 1 、CGI  :通用 网关接口,一句话总结: 一个标准,定义了客户端服务器之间如何传数据
 2 、FastCGI:快速通用 网关接口,一句话总结: CGI的升级版,更快。

 

 web服务器作用:接收请求,转发请求,做负载均衡,还可以做 动静分离

-Nginx:符合快速通用网关接口的web服务器
-apache:类似于nginx 的web服务器

例子:架构
-lamp:表示  linux+apache+mysql+php
-lnmp:表示 linux+nginx+mysql+php

-tomcat ,uwsgi,php,gunicorn    这些都是协议
-nginx ,apache        
-tomcat,jboss,weblogic(java),uwsgi,gunicorn(python),php(php服务器)(php的web服务器)

 

 


3、 WSGI:协议,Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI),只针对python
Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口
为Python定义的web服务器和web框架之间的接口标准
规定了什么?规定了http请求来了后,如何拆,拆成一个一个key和value 放到一个字典中,env对象

from wsgiref.simple_server import make_server
def mya(environ, start_response):
    print(environ)
    #request对象:environ包装成了一个对象
    start_response('200 OK', [('Content-Type', 'text/html')])
    if environ.get('PATH_INFO') == '/index':
        with open('index.html','rb') as f:
        data=f.read()

   elif environ.get('PATH_INFO') == '/login':
        with open('login.html', 'rb') as f:
         data = f.read()
   else:
        data=b'<h1>Hello, web!</h1>'
        return [data]

if __name__ == '__main__':
myserver = make_server('', 8011, mya)
# 请求来了,执行后面的可调用对象 mya(environ:http请求拆了,拆成字典, start_response:响应对象)
print('监听8010')
myserver.serve_forever()

例子:这是请求来的入口

 

 


 4 、uWSGI/gunicorn/wsgiref/ tornado 部署。注意:(tornado可能是服务器,可能是框架)
         一个是符合WSGI协议的web服务器
         一句话总结: 一个Web Server,即一个实现了WSGI的服务器,大体和Apache是一个类型的东西,处理发来的请求

 5 、uwsgi
一句话总结: uWSGI自有的一个协议


uWSGI uwsgi的区别

pip install uwsgi(真正装的uWSGI)

 

 

 

 

 

 

 6 、ASGI :是WSGI的升级,性能更高,支持的更多,支持websocket和异步
       异步网关协议接口,一个介于网络协议服务和Python应用之间的标准接口,能够处理多种通用的协议类型,包括HTTP,HTTP2和WebSocket
      django3.0 以后支持异步

 

 三、GIL,IO模型,BIO,NIO,IO多路复用,AIO

1 、GIL:只针对cpython解释器,只适用于cpython解释器,(pypy:没有gil锁)。python出的时候,是单核cup,开启线程,垃圾回收,让其他线程停掉,只走垃圾回收线程,不会有并发问题
              -同一时刻,实际上只有一条线程在执行,有一把全局锁,只要线程执行,必须获得这把锁,才能执行
              -多核cpu出现,cpython,只能有一条线程执行,就是由于GIL锁的原因
              -python不能利用多核优势
              -想要分到不同cpu上执行,需要开进程(解释器进程),进程里最少有一条线程,开进程,非常耗资源
              -在某些情况下,并不是进程开的越多,程序执行越快
              -IO密集型,开线程,计算密集型,开进程 只适用于python

 

 

 注意:

 

 2 、线程是cpu调度的最小单位

3、IO模型
-内存分为:内核缓冲区,用户缓冲区

例子:你打开你的QQ,从内核缓冲区挪到用户缓冲区

例子:你打开浏览器去请求数据,先到内核缓冲区再挪到用户缓冲区
-BIO : 同步阻塞模式I/O
-NIO:同步非阻塞模式I/O

-AIO:异步非阻塞模式I/O


4、IO多路复用

 


5、总结:BIO,NIO,IO多路复用 都是同步IO   (nginx,tornado:都是epoll模型),windows平台不支持epoll,用的是select(最大可以监听1024个)
                AIO:真正的异步io,用的很少


6、 epoll和select的区别
       一个老师检查10个学生写作业
-select:小明,你写好了么?小红你写好了么?.......
-epoll:同学写好了,举手告诉老师来检查

 四、pycharm远程连接docker开发

步骤1、 配置docker服务端(docker是c/s架构)

01、设置 允许远程客户端连接
        vim /lib/systemd/system/docker.service

 

把标红的注释掉

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

添加
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock

02、 systemctl daemon-reload && systemctl restart docker

 

 


03、 验证
内部能访问到:
curl 127.0.0.1:2376/version

外部能访问到:

http://宿主机ip:2376/version

例如:http://10.0.0.203:2376/version
若:外部访问不到,则 防火墙关了,入网规则 改一下

步骤2、 配置pycharm

 

 

 

 

 

 

 

3 上传代码到远端服务器

image-20200430162637589

4 配置sftp

image-20200430162835399

5 配置sftp连接

image-20200430163054300

6 配置映射路径

image-20200430163348661

7 把本地代码传到远端

image-20200430163424631

8 配置自动上传代码

image-20200430163632041

9 通过本地dockerfile构建远端的镜像(直接在远端安装是一样的)

image-20200430163921600

10 修改构建镜像的名字

image-20200430164043359

 

 

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM