docker-nginx

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

  1. 第一個-v:掛載日誌目錄
  2. 第二個-v:掛載配置目錄
  3. 第三個-v:掛載主配置文件
  4. 第四個-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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章