docker實戰 容器互聯的一種方法、docker執行django nginx 並相互連結
阿新 • • 發佈:2018-12-13
這裡使用django + nginx做例項,前期準備: 1、一個可以執行的django工程 2、一個執行django的映象/容器 3、一個執行nginx的映象/容器
1、製作一個屬於自己的執行django的映象
拉取官方Ubuntu映象
docker pull ubuntu:16.04
執行一個容器
docker run -it ubuntu:16.04 /bin/bash
# 此命令執行後會進入一個容器偽終端,然後在終端內操作
進入容器後安裝需要的軟體
apt-get update apt-get install net-tools apt-get install iputils-ping apt-get install iproute2 ape-get install vim # 安裝Python3.5 apt-get install python3 # 如果需要安裝Python3.6 apt-get install software-properties-common python-software-properties add-apt-repository ppa:jonathonf/python-3.6 apt-get update apt-get install python3.6 # 安裝pip apt-get install python3-pip
退出偽終端後檢視容器id 找到你的容器id CONTAINER ID
docker ps -a
製作成自己的映象
docker commit -m="myubuntu" -a="my" e218edb10161(容器id) myubuntu:v2
2、拉取官方的nginx映象,並製作成自己的映象
拉取映象
docker pull nginx
進入容器
docker run -d nginx
docker exec -it dd61d7354d0a(開啟的nginx容器id) /bin/bash
編輯/etc/nginx/conf.d/defluat.conf 新增一下內容
server { listen 9001; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers Authorization,Origin,X-Requested-With,Content-Type,Accept; #add_header Access-Control-Allow-Methods POST,GET,PATCH,PUT,DELETE,OPTIONS,VIEW; add_header Access-Control-Allow-Methods POST,GET,PATCH,PUT,DELETE; add_header Access-Control-Allow-Credentials true; client_max_body_size 100m; location / { proxy_pass http://192.168.1.133:8000; #這個是你的安裝docker的機器的IP地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Protocol $scheme; } }
製作映象
docker commit -m="mynginx" -a="my" dd61d7354d0a(開啟的nginx容器id) mynginx:v2
3、製作django服務
使用製作好的Python映象
docker run -itd --name mypython -p 8000:8000 -v $PWD/yourproject:/usr/src/myapp myubuntu:v2
# -v $PWD/yourproject:/usr/src/myapp:表示掛載目錄,將你的目錄掛載到容器內/usr/src/myapp下
會開啟一個偽終端,偽終端內操作
# 前提是意義安裝好了需要的Python三方庫 python3 manage.py runserver 0.0.0.0:8000
好了,在外部瀏覽訪問看看是否成功
4、啟動 製作好的nginx
docker run -d --name mynginx -p 8080:80 -p 9001:9001 mynginx:v2
然後瀏覽器訪問127.0.0.1:8080看是否成功出現nginx歡迎介面,成功後訪問127.0.0.1:9001 就會訪問到沒有mypython的容器了
分析實現的原理:首先通過nginx可以指向ip:9001 的地址,然後它會交給ip:8000來處理,也就是交給mypython的容器來處理。