Docker學習筆記2,創建Nginx容器並且實現反向代理和負載均衡配置

首先還是 docker pull nginx

然後根據剛剛pull下來的image創建容器,docker run -p 8800:80 --name mynginx -d nginx

然後使用docker ps查看有木有這個容器(可能會看到you can get programm blabla.core,blabla.full什麼的,筆者也沒管,不知道做了操作了什麼就好了。。。也許是沒下載完把),如果你找到了這個mynginx,那麼就直接訪問localhost:8800(我們把docker的容器8800端口映射成了nginx的80端口),就能看到喜人的nginx歡迎頁面了。

但是我們還要配置nginx,使其能夠反向代理我們的後端接口,還能均衡一下請求(負載均衡)。

docker配置nginx有好幾種方式,我們主要說一下兩種:1,掛載宿主機的文件;2,直接進入容器去修改配置文件。

第二種比較好理解,我們來講一下第一種。

什麼叫做掛載宿主機的文件呢?其實很簡單。這就好比一女侍二夫。

在我的機器裏面搞出一個文件來,這個文件就是這個慾求不滿的女人,她的一個丈夫就是我們的宿主機,因爲她在我的操作系統裏面,所以我們可以使用cat命令看光她的身體,也可以用vi命令隨便蹂躪她。

然後我們在創建nginx容器的時候告訴容器,你老婆在外面被搞呢(好賤哦)。然後容器就很煩,但是也沒什麼好辦法,畢竟自己那麼小。

但是終究是自己的老婆,我們也得讓容器把這個 文件搞到自己的被窩裏面。

言歸正傳。

把這個文件存爲xxx.conf文件,(xxx自己起名字,後綴是.conf)就行了。

爲了不與剛纔創建的容器混淆,刪除掉剛剛創建的容器。(蛋疼麼)

然後docker run -p 8800:80 --name mynginx -d nginx -v xxx/xxx.conf:yyy/yyy.conf。

什麼意思呢,就是把容器外面的文件映射到裏面這個文件上(xxx路徑自己找,yyy路徑需要改爲nginx的配置文件路徑。一般十/etc/nginx/conf.d找不到的話別問我,問百度。yyy.conf文件名隨便取)。

這樣,如果你想修改nginx配置,就可以在外面直接修改,然後docker restart mynginx就行了,容器會自動刷新文件(自己的老婆當然要最新的狀態)。

第二種呢,就是直接進去bash修改了。但是一般鏡像不帶vim編輯器,所以需要先安裝一個vim。

後來,在進行Nginx配置的時候,筆者使用nginx的80端口映射到容器的8800端口,瑪德死活成功不了。後來改成808映射外面容器的8800,又出現了502 BateGateWay,度娘告訴我說docker有自己的虛擬網卡地址,所以配置的127.0.0.1訪問不到別的docker容器。嚇的我趕緊ifconfig,複製粘貼。沒想到,成功啦,啊哈哈哈哈。

PS:第一種必須重啓容器才能讀取最新的配置文件,但是第二種最好不要重啓容器,而是在bash裏面重啓nginx 。使用nginx -s reload。否則,配置寫錯了,容器就啓動不了了,也就無法進去修改配置文件了。

PPS:如果要修改已經創建容器的端口映射,去修改/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json就好了(筆者親測不管用)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章