在本小節裏,咱們將從Image
倉庫里拉取並運行Nginx
,嘗試下將本地文件和container
文件相映射,Nginx
相比hello-world
多了些啓動參數,咱們將逐個攻破。html
咱們在本機新建一個項目文件夾,在裏面建立咱們的靜態資源文件,隨後往index.html
隨便寫點內容,執行下pwd
命令獲取一下當前文件夾所在路徑。nginx
mkdir class01 && cd class01 touch index.html pwd
咱們打開國內的Docker Hub鏡像站,搜索Nginx
,第一個即是咱們所須要的,打開Image詳情頁,會有詳細地使用說明,咱們先使用命令行方式去運行這個Image
。docker
docker pull nginx docker run --name my-nginx -d -p 3000:80 nginx
命令解釋:bash
--name
爲當前建立的container
起一個好記的暱稱,默認狀況下docker
會隨機分配一個暱稱spa
-d
即Deamon,可以讓進程在後臺運行而不阻塞命令行。命令行
-p
端口暴露,nginx一般運行在80端口,爲了可以在主機訪問container
裏的nginx
,因此須要進行端口暴露,格式爲:[host port]:[container port]
code
這時咱們在本機訪問localhost:3000
,將會看到nginx
的歡迎頁。htm
掛載本機目錄進程
若是想讓nginx
伺服本機的某個目錄,咱們須要加上-v
命令,-v
即Volume,咱們但願nginx
可以以當前文件夾做爲資源目錄,這個過程稱爲掛載,經過[Host dir]:[container dir]
的形式將主機的目錄覆蓋container
裏面的目錄,固然b
目錄原本的內容不會丟失,當咱們不選擇掛載時,其又將會生效。資源
docker ps # 顯示當前正在運行的container,咱們能夠找到剛剛建立的my-nginx docker stop my-nginx docker rm my-nginx # 中止並刪除my-nginx docker run --name my-nginx -v [your pwd]:/usr/share/nginx/html:ro -d -p 3000:80 nginx
添加的[your pwd]
爲最開始建立的index.html
所在的文件夾,如~/coding/docker-learn/class01
命令解釋:
:ro
意爲Read Only,對container
增長只讀權限,默認爲可讀寫
咱們再次訪問localhost:3000
,顯示的內容已是咱們建立的index.html
了。
複用掛載的目錄
上一步咱們爲my-nginx
這個container
掛載了數據卷,若是咱們新的container
也想用和my-nginx
相同的數據卷呢?咱們可使用--volumns-from
來複用數據卷地址。
docker run --name my-nginx1 --volumes-from my-nginx -d -p 3001:80 nginx
如今訪問localhost:3001
即可以獲得同3000端口同樣的效果了,試試docker ps
看看目前運行中的container
信息吧。