Docker入門之網絡Network篇

端口映射
默認容器在外部默認是不可訪問的.
比如進入到容器裏面纔可以操作.
這對於提供網絡請求的應用就不大又好了.
比如我們常見的Nginx.
如果想讓容器可被訪問.
這就需要使用-P參數分配端口.

docker run -d -P nginx

這裏Docker給隨機分配了一個端口32768:
在這裏插入圖片描述
通過瀏覽器訪問這個斷就就可以看到Nginx的歡迎頁了.
在這裏插入圖片描述
如果是使用的歌雲服務器需要注意的是要開放端口:
如果想讓Docker分配指定的端口可以使用-p參數:

docker run -d -p 80:80 nginx

80::80左邊的80是宿主機的端口,右邊的80 是容器內的端口.
在這裏插入圖片描述
這裏我們再瞭解一個–name參數,它可以指定容器的NAME,這個NAME可以在跟其他容器互聯的時候非常有用.

docker run -it --name nginx nginx /bin/bash

接着再開一個窗口啓動一個MySQL容器:

docker run -it --name mysql /bin/bash

在這裏插入圖片描述
默認的Nginx和M有SQL容器中很多常用的命令都沒有:
比如ifconfig和ping;有個叫busybox正好就包含了這些命令.
這裏在Nginx和MySQL鏡像中分別安裝busybox:

apt update
apt install busybox

busybox的使用非常簡單,比如要使用ifconfig查看這兩個容器的ip:

/bin/busybox ifconfig

在這裏插入圖片描述
在這裏插入圖片描述
互相ping ip也是通的:
在這裏插入圖片描述
但是這個ip是在容器創建後我們才知道的.
而Nginx容器中我們可能需要先填寫MySQL的ip,這就成了先有雞還是先有蛋的問題.
那如果我們能像使用localhost這個關鍵字一樣來使用剛定義的nginx和mysql容器.那麼問題就迎刃而解了,當然我們ping的時候會發現是不通的.
在這裏插入圖片描述
容器互聯
Nginx是需要對外提供服務的,而MySQL一般不向外提供服務,但是Nginx需要能訪問MySQL容器,而且需要通過容器name來訪問,這時候就需要容器之間互聯了,我們可以創建一個網絡,把這些需要互聯的容器放到一個網絡中.
查看網絡
查看網絡列表:

docker network ls

在這裏插入圖片描述
默認已經有了3個網絡.
創建網絡
創建一個測試網絡:

docker network create test

在這裏插入圖片描述
刪除之前的nginx和mysql容器,這時候就可以使用容器名了.

docker rm -f nginx
docker rm -f mysql

接着創建自帶網絡的容器:

docker run -it --name nginx --network test nginx /bin/bash
docker run -it --name mysql --network test mysql /bin/bash

在這裏插入圖片描述
愉快地ping通了

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