私有倉庫搭建


一、私有倉庫搭建

鏡像獲取方式:
方式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