windows 中使用 docker 運行 nginx

1. 下載安裝文件html

http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/linux

我選擇了 1.9.1 版本的,但安裝後運行:docker -v (或 docker --version )卻顯示是:1.8.0 的版本。nginx

 

2. 安裝後的桌面有兩個圖標git

按文檔上說的:docker

在圖標上點擊右鍵,應該能找到 settings 的選項,但我試了並無,右鍵中只有和其它圖標同樣常見的選項。(win7 64位系統)shell

文檔來自:https://docs.docker.com/docker-for-windows/windows

 

另外,雙擊第一個快速啓動的圖標,提示沒有找到 base.exe,因而放棄了!瀏覽器

 

3.  重點:kitematic 客戶端:bash

即桌面上的第二個圖標,是 docker 的 GUI 工具,初次打開會提示登陸,沒有帳號的話註冊一個就是了。登陸後的界面是這樣的:工具

若是你比較喜歡命令行的話,直接點擊左下角的 DOCKER CLI 卻可進入。

接下來就是NEW+ 去搜索你要的鏡像,選擇下載就是了:

至關於命令行:

docker search nginx

docker pull nginx

點擊 START 開始運行,至關於:

docker run -d nginx --name nginx

這時,應該能夠在右邊的地方看到打開的頁面,但很不明顯,點擊一下應該會在瀏覽器中打開 nginx 的默認首頁。

你也能夠在 settings 下的 ports 的界面中看到本地的ip與端口,手動在瀏覽器中輸入它們也能夠看到效果。

 

四. 文件映射:

這是挺重要的,你不可能進入docker 去編寫代碼,最好的方式是我在本身的電腦上寫代碼,容器 (docker) 本身去讀取它。

在命令行中添加文件映射的方法是:

在 run 的時候添加 -v 本地目錄或文件:容器中的目錄或文件

好比:

docker run -d --name mynignx -v /www:/var/www nginx

在網上看到不少地方都是這樣寫的,但你在 windows 中運行後多是提示目錄不正確或者不存在,或者不是目錄之類的錯誤。

或者是沒有錯誤提示,但你在主機中的www目錄下添加的文件就是不生效。

緣由可能有兩個:

1. 本地的 目錄並非你覺得的那個;

2. 容器內的目錄可能不是nginx存在代碼的目錄。

通常第一點不太會有疑問,由於本身用的 windows 電腦目錄在哪裏還不清楚嗎?

那第二點呢,方法之一就是去網上看一下別人給的目錄,通常你第一次運行的時候也就是這麼作的,有些直接給 /www 目錄的,但其實我是以爲很奇怪的,通常 linux 的根目錄下不會放個 www目錄,通常可能在 /var/www或者是 /home/wwwroot 之類的,但畢竟這不是 linux 系統,而只是一個 nginx 的容器鏡像,可能爲了方便建立了呢,因而就會去試一下。

但結果是讓我失望的!

固然,你可能運氣比我好,你安裝的那個 nginx 鏡像可能恰好是這個目錄。

 

可靠一點的方法是本身進入 nginx 容器去查看一下 nginx.conf 文件中配置的目錄。

但由於我以前使用的是 boot2docker 提供的命令行客戶端,不管是用:

 docker exec -i mynginx bash

仍是

docker attach mynignx

都沒法進入容器。

前者老是提示:cannot enable tty mode on non tty input 

( 聽說是由於 git 客戶端不支持 tty,須要使用其它客戶端,好比 powershell 或 cmd 。)

把 -t 取消掉後就是一直沒有反應的狀態。

後者在你刷新 nginx 的首頁後,控制檯中會有 http 請求的頁面輸出。

這種狀況困擾了我好久,直到我使用了 kitematic 客戶端提供的 cli 工具後才發現:不是個人錯,是工具的錯。

(因此,不兼容的工具真的是害死人!)

 

好了,進入 nginx 容器後,肯定了 www所在的目錄,但設置後仍是不生效,大約此時,WTF 會脫口而出!

 

但當你打開 kitematic 客戶端 的 settings 下的 Vulumes 設置目錄映射時,選擇了一個不在用戶文件下的目錄,它會提示你必須須要「用戶」目錄下的目錄!

原來如此,但以前使用命令行卻不報錯,也沒有任何警告,這真的很不友好!

因此,選擇當前用戶目錄下建立的 www 目錄,通常是:C:\Users\Administrator 目錄下建立一個 www,就應該沒有問題了。

 

. 仍然存在的問題:

文件映射文件了,能夠在本地目錄下愉快地寫代碼了,刷新了在瀏覽器中馬上看到了效果!

但我發現當我在 index.html 文件中加入中文後,神奇的問題出現了:

不是亂碼,而是這個文件廢了,自你加入中文後,這個文件中一切修改都會變得無效,即便你把文件中的中文刪除也沒有用了,必須刪除這個文件後從新建立的一個,不能加入中文,緣由不明,但我很想知道爲何?

 

另外,GUI 客戶端 提示,只能進行目錄映射,不能進行文件映射;但爲何我看到不少地方都寫到能夠映射文件?

相關文章
相關標籤/搜索