久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Docker 容器間基于Link實現單向通信

     忠波irlphwt1ng 2020-02-22

    前戲

    我們啟動一個nginx和mysql的容器,nginx經常需要到mysql的容器里去讀取數據。這兩個容器之間的ip是可以互通的,我們只需要在nginx容器內配置一下mysql的地址就可以了。當有一天,我們的mysql掛了,重新啟動一個mysql容器,在去nginx容器內部配置一下就可以了。而實際上,nginx和mysql都是集群部署的。當有一個mysql掛了之后,我們就需要一個一個進入到nginx容器內部進行修改。而docker也替我們考慮到了這種情況

    Docker 容器間基于Link實現單向通信

    什么叫單向通信呢?拿上面的例子來說,就是nginx可以ping通mysql,而mysql不能ping通nginx

    啟動mysql容器

    docker run --name mydb -d -e MYSQL_ROOT_PASSWORD=zou123456 mysql:5.7

    啟動nginx應用容器并link到mysql數據庫:

    docker run -itd --name mynginx --link mydb nginx

    其中的--link mydb 表示link到mysql數據庫,這樣nginx就能和mysql單向通信了

    注意:mydb 這個容器一定要存在!

    進入到nginx容器內部ping一下mydb

    如果你是拉取的nginx鏡像,需要安裝一下ping的插件,在nginx容器內部安裝哦。

    apt-get update && apt-get install iputils-ping

    進入到mysql容器里,是ping不通mynginx鏡像的。但是ip是可以ping通的

    Docker容器間利用brige網橋實現雙向通信

    上面我們使用link實現了單向通信,而單向通信往往不能滿足我們的全部需求,可以利用bridge實現雙向通信

    使用 docker network ls 查看下有哪些網絡模式

    這是docker默認的三種網絡模式。創建一個新的網橋叫 my_bridge

    docker network create -d bridge my_bridge

    -d bridge my_bridge 表示創建一個bridge的網橋叫做my_bridge

    啟動兩個容器,mysql和nginx

    docker run -d --name mydb mysql:5.7
    docker run -d --name mynginx nginx

    把兩個容器mydb和mynginx加入my_bridge的網橋

    docker network connect my_bridge mydb
    docker network connect my_bridge mynginx

    進入兩個容器分別驗證,ping mynginx和ping mydb 是可以互相ping通的

    部署flask應用

    現在我們有一個flask應用,需要部署到服務器上,flask代碼如下

    復制代碼
    from flask import Flaskfrom redis import Redisimport osimport socket
    
    app = Flask(__name__)
    redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)
    
    
    @app.route('/')def hello():
        redis.incr('hits')return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())if __name__ == "__main__":
        app.run(host="0.0.0.0", port=5000, debug=True)
    復制代碼

    這個flask應用還需要用到redis,所以我們需要兩個容器,一個是redis容器,還有一個是python容器。

    先來拉取redis和python3.7的鏡像

    docker pull redis
    docker pull python:3.7

    啟動redis容器

    docker run -d --name myredis redis

    redis只供自己內部訪問,不提供給外部訪問,所以不需要 -p 參數暴露出端口

    在來創建python的dockerfile,內容如下

    復制代碼
    FROM python:3.7LABEL maintaner="zouzou"COPY app.py /app/WORKDIR /appRUN pip install flask redisEXPOSE 5000CMD ["python","app.py"]
    復制代碼

    這樣我們的flask代碼和Dockerfile都準備好了,構建python鏡像

    docker build -t flask-python:v1 .

    啟動python鏡像

    docker run -d --name myflask -p 8002:5000 --link myredis -e REDIS_HOST=myredis flask-python:v1

    其中的 -e REDIS_HOST=myredis 是設置環境變量,REDIS_HOST的變量值為myredis,這樣flask代碼就能根據myredis獲取到ip地址了

    瀏覽器訪問8002端口,如下

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 人妻日韩人妻中文字幕| 亚洲欧美日韩综合久久久| 亚洲国产成人综合精品| 国产乱码1卡二卡3卡四卡5| 亚洲中文字幕无码爆乳APP| 中文午夜乱理片无码| 亚洲欧洲日产国无高清码图片| 亚洲中文字幕无码不卡电影| 无套内射视频囯产| 久久亚洲精品中文字幕波多野结衣| 色悠久久久久综合网伊| 精品免费看国产一区二区| 久久夜色撩人精品国产小说| 国产成人啪精品午夜网站| 亚洲国产精品久久久久久久| 国产精品SM捆绑调教视频| 亚洲AV日韩精品久久久久久久| 青青草无码免费一二三区| 精品国产乱码久久久久久郑州公司 | 黄色A级国产免费大片视频| 亚洲AV永久无码一区| 亚洲精品韩国一区二区| 欧美成人精品一区二区综合| 国产免费高清69式视频在线观看| 午夜无码大尺度福利视频| 久久天堂综合亚洲伊人HD妓女| 五月丁香啪啪| 久久久久久亚洲精品成人| 熟女系列丰满熟妇AV| a级黑人大硬长爽猛出猛进| 亚洲伊人久久精品影院| 亚洲人成网站18禁止无码| 少妇人妻无码专区视频| 亚洲夂夂婷婷色拍WW47| 国产精成人品日日拍夜夜| 污污污污污污WWW网站免费| 久久99精品久久久久久齐齐| 精品国产迷系列在线观看| 中文字幕无码AV激情不卡 | 狠狠色噜噜狠狠亚洲AV| 国产性一交一乱一伦一色一情|