docker-nginx
新建目錄
mkdir -p nginx/{log,conf,html}
切換到nginx目錄下
cd nginx
你會看到3個文件夾conf,html,log
他們分別對應着容器中的文件目錄,如下
宿主機下目錄 | 容器中的文件目錄 | 容器文件目錄說明 |
---|---|---|
conf | /etc/nginx/conf.d | 默認配置文件目錄 |
html | /usr/share/nginx/html | 靜態文件目錄 |
log | /var/log/nginx | 日誌目錄 |
簡單啓動
直接製作容器
docker run -p 80:80 --name sample-nginx -v $(pwd)/html:/usr/share/nginx/html:ro -d nginx
在html下創建一個index.html,設置一個簡單內容
<!doctype html>
<title>Hello from Docker Nginx</title>
<h1>Hello World</h1>
<h1>Hello from Docker Nginx</h1>
你訪問你的服務器ip會發現,頁面顯示了你的內容.
Dockerfile製作容器
將dockerfile文件放在第一步新建的nginx目錄下(也可自己重新創建一個目錄)
FROM nginx
COPY html /usr/share/nginx/html
執行該命令
docker build -t some-content-nginx .
注意:其中.表示當前Dockerfile的目錄
運行你的容器
docker run --name some-nginx -d some-content-nginx
暴露對外端口
docker run --name some-nginx -d -p 8080:80 some-content-nginx
-p指令
複雜配置
獲取一個默認的配置文件,方法如下
docker run --name tmp-nginx-container -d nginx
docker cp tmp-nginx-container:/etc/nginx/nginx.conf $(pwd)/nginx.conf
docker rm -f tmp-nginx-container
有了nginx.conf後,可以進行自定義編輯,編輯完然後使用如下命令
直接啓動方式
docker run --name pkuer_nginx -d -p 80:80 \
-v $(pwd)/log:/var/log/nginx \
-v $(pwd)/conf:/etc/nginx/conf.d \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
-v $(pwd)/html:/usr/share/nginx/html nginx
- 第一個-v:掛載日誌目錄
- 第二個-v:掛載配置目錄
- 第三個-v:掛載主配置文件
- 第四個-v:掛載項目目錄
Dockerfile方式
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
#EXPOSE 指令是聲明運行時容器提供服務端口,這只是一個聲明,在運行時並不會因爲這個聲明應用就會開啓這個端口的服務。
#在 Dockerfile 中寫入這樣的聲明有兩個好處,一個是幫助鏡像使用者理解這個鏡像服務的守護端口,以方便配置映射;
#另一個用處則是在運行時使用隨機端口映射時,也就是 docker run -P 時,會自動隨機映射 EXPOSE 的端口。
EXPOSE 80
#entrypoint的作用是,把整個container變成了一個可執行的文件,這樣不能夠通過替換CMD的方法來改變創建container的方式。
#但是可以通過參數傳遞的方法影響到container內部,每個Dockerfile只能夠包含一個entrypoint
#當定義了entrypoint以後,CMD只能夠作爲參數進行傳遞
ENTRYPOINT ["nginx"]
#相當於在容器執行:nginx -g "daemon off;"
CMD ["-g","daemon off;"]
執行該命令
docker build -t complex_nginx .
運行你的容器
docker run --name my-complex-nginx -d complex_nginx