操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    明:

    這次開啟3臺nginx 來做測試,名稱為master,slave01,slave02

    步驟:

    tips:

    這里在使用-v進行掛載目錄時,出現了在宿主機里修改配置文件不生效的問題,解決辦法:先啟動一個nginx服務,但 不是掛載到宿主機上,把配置文件目錄拷貝到宿主機上,再啟動一個新的nginx服務進行掛載,使用docker-compose.yml并不會出現這個問題

    啟動第一個nginx服務,名稱為master,端口為8080

    docker run --name master -p 8080:80 -v /mnt/d/wsl_www/nginx-slb/conf/nginx:

    /etc/nginx -v /mnt/d/wsl_www/nginx-slb/www:/usr/share/nginx/html -d nginx:1.20.1

    #參數說明

    --name 給容器起名稱

    -p 指定端口

    -v 掛載目錄

    -d 以后臺運行


    由于在容器里編輯配置文件不方便,我就把它拷貝到宿主機里的掛載目錄中,命令如下:
    docker cp master:/etc/nginx/nginx.conf /mnt/d/wsl_www/nginx-slb/conf/nginx/
    #這里只復制的主文件,主要是為了演示

    啟動另外兩個nginx服務,名稱slave01,slave02,端口為8081,8082

    #slave01相關命令如下

    docker run --name slave01 -p 8081:80 -v /mnt/d/wsl_www/nginx-slb/conf01/nginx:/etc/nginx -v /mnt

    /d/wsl_www/nginx-slb/www01:/usr/share/nginx/html -d nginx:1.20.1

    #slave02相關命令如下

    docker run --name slave02 -p 8082:80 -v /mnt/d/wsl_www/nginx-slb/conf02/nginx:/etc/nginx -v /mnt

    /d/wsl_www/nginx-slb/www02:/usr/share/nginx/html -d nginx:1.20.1

    通過docker ps查看運行中的nginx服務

    配置masternginx.conf配置文件,添加如下內容

    upstream abc {

    server 172.21.105.60:8081;#這里的ip是個坑,下面有解釋

    server 172.21.105.60:8082;

    }

    再配置conf.d目錄下的default.conf文件

    重啟master服務

    docker exec -it master /etc/init.d/nginx reload

    天坑:

    我的環境如下:

    • win10系統
    • win10子系統wsl2的系統是ubuntu20.04
    • ubuntu系統里安裝docker服務
    • nginx容器運行在docker里

    我在一開始運行nginx負載均衡時,一直不成功,最后排查是因為是我的ip設置有問題,在真實服務器上不會有這問題,浪費了些時間

    在這里會有幾個ip需要說明一下

    • win10系統里的ip
    • ubuntu系統里的ip
    • docker容器里的ip

    我一開始配置的是upstream里的ip是直接寫的容器里的ip,始終也不行,其實在真實環境里,直接 寫內網地址就可以了,但是這里是不可以的!

    最終的解決辦法

    一定要寫ubuntu系統里的ip,也就是etho0對應的ip地址,網卡說的宿主機地址,也是指的docker容器所在的宿主機,也就是ubuntu20.04系統,千萬不要把windows當成宿主機呀(血的教訓!!!!)

    今天給大家聊聊docker具名、匿名掛載的相關知識,一起來學學吧!



    1. 匿名掛載

    1.1 含義

    匿名掛載就是指定容器內路徑,dockers run 每掛載一個目錄就會宿主主機自動創建一個隨機字符串的目錄。目錄/var/lib/docker/volumes/隨機字符串。



    注意:里面的_data目錄和對應容器內目錄進行同步


    1.2 匿名掛載示例


    運行容器
    docker run -d -p 8000:80  --name nginxtest -v /etc/nginx nginx 
    查看nginxtest容器目錄掛載情況
    docker inspect --format="{{json .Mounts}}" 7880ad6076b1
    
    
    


    查看掛載內容如下:


    [
        {
     "Type":"volume"undefined
            "Name":"6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8"undefined        "Source":"/var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data"undefined
            "Destination":"/etc/nginx"undefined 
            "Driver":"local"undefined
            "Mode":""undefined
            "RW":trueundefined
            "Propagation":""
        }
    ]
    
    
    


    返回參數說明:

    • 容器內路徑:Destination:/var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data
    • 宿主主機路徑:Source:/etc/nginx


    1.3 文件同步測試

    宿主主機測試命令


    #進入掛載目錄,創建 1.txt 文件
    cd /var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data
    touch 1.txt
    
    
    


    容器內部測試命令


    docker exec -it nginxtest /bin/bash
    cd /etc/nginx 
    touch 22.txt
    


    宿主主機

    容器內部


    1. 具名掛載

    2.1 含義

    具名掛載就是掛載的同時指定一個有具體含義的名字,方便后續和容器對應以及后續的運維,便于查找掛載目錄。

    2.2 具名掛載示例


    #運行容器
    docker run -d -p 8001:80  --name nginxtest02 -v nginxtest02:/etc/nginx nginx 
    #查看容器掛載目錄
    docker inspect --format="{{json .Mounts}}" 4cd1e3241698
    
    
    


    查看容器掛載內容


    [
        {
            "Type":"volume"undefined
            "Name":"nginxtest02"undefined
            "Source":"/var/lib/docker/volumes/nginxtest02/_data"undefined
            "Destination":"/etc/nginx"undefined
            "Driver":"local"undefined
            "Mode":"z"undefined
            "RW":trueundefined
            "Propagation":""
        }
    ]
    


    返回參數說明:

    容器內路徑:Destination:/etc/nginx

    宿主主機路徑:Source:/var/lib/docker/volumes/nginxtest02/_data

    具體的文件同步和匿名掛載一樣,大家可以自己測試。


    1. 查看掛載數據卷命令

    docker volume ls


    4、總結

    宿主主機掛載目錄對應同步的文件在_data 目錄里面。雙向實時同步。

    指定具體的掛載目錄名,便于查找和管理,如果你的容器比較多,都是不可讀的字符串,那么可維護性會比較差,建議采用具名掛載。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有