首頁 >運維 >Nginx >怎麼使用docker安裝nginx提供的web服務

怎麼使用docker安裝nginx提供的web服務

PHPz
PHPz轉載
2023-05-24 23:38:171522瀏覽

一、拉取映像

docker pull指令用來拉取應用程式映像,docker pull nginx指令用來拉取最新版本的nginx映像。下文為拉取映像過程的回應結果:

# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
c229119241af: Pull complete 
2215908dc0a2: Pull complete 
08c3cb2073f1: Pull complete 
18f38162c0ce: Pull complete 
10e2168f148a: Pull complete 
c4ffe9532b5f: Pull complete 
Digest: sha256:2275af0f20d71b293916f1958f8497f987b8d8fd8113df54635f2a5915002bf1
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

從上文我們可以看出nginx映像像是從docker.io這個網址拉取下來的。

使用docker images指令可以查看目前作業系統中下載了哪些映像檔。

# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    12766a6745ee   33 hours ago   142MB
hello-world   latest    feb5d9fea6a5   6 months ago   13.3kB
  • REPOSITORY鏡像倉庫及映像名稱,若不顯示映像倉庫,預設為docker.io

  • TAG鏡像的版本或是里程碑標籤,latest表示最新​​版本

  • IMAGE ID 映像的唯一識別

  • CREATED 這個映像被建立的時間

  • SIZE表示鏡像檔案的大小

#2、執行映像啟動容器

透過docker run指令啟動一個容器,容器名稱為nginx-zimug。

# docker run -d --name nginx-zimug -p  80:80  nginx
81bb1211144bc0991a789f860458548643c60b5459466c14d0604be9a4ccbfd7
  • -d表示容器在後台運行

  • --name為容器起一個名字

  • -p連接埠映射,格式為宿主機連接埠:容器連接埠,上文中意義是將容器中的連接埠80映射到宿主機的連接埠80,對外提供存取服務。最後一個欄位為鏡像名稱

當瀏覽器透過HTTP協定存取宿主機的80連接埠時,可以省略連接埠號碼。得到的訪問結果如下,說明我們的nginx服務已經啟動成功了。

怎麼使用docker安裝nginx提供的web服務

透過docker ps可以查看正在運行中的容器,如下所示:

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
81bb1211144b   nginx     "/docker-entrypoint.…"   11 minutes ago   Up 11 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx-zimug

三、檔案映射

首先明確的是容器中的檔案內容是可以被修改的,但是一旦容器重啟,所有寫入到容器中的,針對資料檔案、設定檔的修改都會遺失。所以為了保存容器的運作狀態,執行結果,我們需要將容器內的一些重要的資料檔案、日誌檔案、設定檔對應到宿主機上。
以nginx為例,nginx有三個重要的檔案目錄:

容器中路徑 宿主機中自定義映射路徑
儲存網站網頁的目錄 #/usr/share/nginx/html /root/nginx /html
nginx設定檔目錄 /etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
日誌目錄 /var/log/nginx #/root/nginx/logs



怎麼使用docker安裝nginx提供的web服務

怎麼使用docker安裝nginx提供的web服務

#####################' ####在宿主機中新檔案目錄######
mkdir -p  /root/nginx/logs  /root/nginx/html  /root/nginx/conf;
######將容器中的檔案copy到宿主機中######將nginx設定檔copy到宿主機中# ##
docker cp nginx-zimug:/etc/nginx/nginx.conf /root/nginx/conf;
######將一個模擬的html檔案放入html目錄######將下面的檔案儲存為index.html放入宿主機的###/root/nginx/html## #目錄,因為存在映射關係,實際上也是放入了容器的###/usr/share/nginx/html###目錄。 ###
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用docker搭建nginx web服务</title>
</head>
<body>
    <h2>访问成功</h2>
    <p>厉害了!</p>
</body>
</html>
###四、再次啟動容器服務#########-v###參數表達了宿主機檔案與容器中檔案的對應關係,格式為###-v 宿主機目錄:容器檔案系統目錄###。啟動一個新的容器,容器的名字叫做nginx-prod###
docker run -d -p 80:80 \
--name nginx-prod \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx  nginx
###在啟動新容器之前,將nginx-zimug舊的容器刪掉。如果不刪除舊的容器,新容器的連接埠與舊容器連接埠會發生衝突。使用下列指令刪除容器:###
docker stop nginx-zimug;
docker rm nginx-zimug;
###執行上面的###docker run###指令,啟動新的容器。啟動後透過瀏覽器存取宿主機80端口,回應結果如下證明nginx正常提供web服務了。 ###############同時可以在宿主機上修改nginx配置,也可以查看執行時間日誌檔案。更改設定檔會影響到運行在容器中的nginx服務,因為宿主機與容器內的設定檔之間存在映射關係。 ############

以上是怎麼使用docker安裝nginx提供的web服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除