Docker離線部署Nginx


Docker離線部署Nginx

說明:

在有網絡的環境上制作Nginx的鏡像包,導出並上傳至無網絡的環境上,啟動Nginx即可

1.搜索nginx鏡像包

docker search nginx

 

2.拉取nginx鏡像

說明:

如果:后不寫版本號,則默認拉取最新的

docker pull nginx

查看鏡像

docker images

 

3.創建容器並啟動nginx

docker run -d -p 8080:80 --name nginx_docker nginx:latest

說明:

-d: 后台運行容器

-p :指定容器暴露的端口,映射宿主機端口號和容器端口號

--name:指定容器名字,后續可以通過名字進行容器管理

4.測試

瀏覽器中輸入你的ip地址 + 端口號,如下圖所示:(成功狀態)

5.創建宿主機配置文件(用於后續掛載nginx配置文件)

 cd /usr/local/
 mkdir nginx
 cd nginx/
 mkdir data logs conf conf.d
 ll

說明:

data:靜態資源,一般前端頁面

logs:nginx日志

conf:nginx配置,一般配置緩存、限流在這個里面

conf.d: nginx配置,代理、轉發、負載、集群

5.1 編輯data文件夾下的index.html

 cd /usr/local/nginx/data
 vim index.html
 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title>成功訪問nginx</title>
     </head>
     <body>
         <h1>這是用docker啟動的</h1>
     </body>
 </html>

5.2 編輯conf文件夾下的nginx.conf

 cd /usr/local/nginx/conf
 vim nginx.conf
 user  nginx;
 worker_processes  1;
 ​
 error_log  /var/log/nginx/error.log warn;
 pid        /var/run/nginx.pid;
 ​
 ​
 events {
     worker_connections  1024;
 }
 ​
 ​
 http {
     include       /etc/nginx/mime.types;
     default_type  application/octet-stream;
 ​
     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"';
 ​
     access_log  /var/log/nginx/access.log  main;
 ​
     sendfile        on;
     #tcp_nopush     on;
 ​
     keepalive_timeout  65;
 ​
     #gzip  on;
 ​
     include /etc/nginx/conf.d/*.conf;
 }

5.3 編輯conf.d文件夾下的host.conf

 cd /usr/local/nginx/conf.d
 vim host.conf
 # 后端轉發
 server {
     listen 9264;
     server_name  192.168.94.110;
 ​
     location / {
         proxy_set_header  Host  $http_host;
         proxy_set_header  X-Real-IP  $remote_addr;
         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_pass  http://192.168.94.110:9264/;
    }
    
 }
 ​
 # 前端轉發
 server{
         listen 8081;
         server_name 192.168.94.110;
         location / {
                 root /usr/share/nginx/html;
         }
 }

6.創建新的容器並掛載宿主機配置文件啟動nginx(開一個相同的服務,端口號不同)

docker run -d -p 8081:80 --name nginx_docker_2 --restart=always --privileged=true -v /usr/local/nginx/data:/usr/share/nginx/html nginx:latest

說明:

-d: 后台運行容器

-p :指定容器暴露的端口,映射宿主機端口號和容器端口號

--name:指定容器名字,后續可以通過名字進行容器管理

--restart=always:使容器自動啟動

--privileged=true:開啟特權模式(如遇到權限問題錯誤,可加此參數)

-v:掛載宿主機目錄和 docker容器中的目錄,前面是宿主機目錄,后面是容器內部目錄

7.測試(掛載宿主機配置文件)

瀏覽器中輸入你的ip地址 + 端口號,如下圖所示:(成功狀態)

8.停止並刪除容器

docker rm -f f86c8cc956e3

9.導出鏡像

docker save -o nginx.tar nginx:latest

 

10.將鏡像包nginx.tar上傳至無網絡的環境上,執行

docker load -i nginx.tar

查看鏡像是否導入進來

docker images

 

11.直接啟動nginx

docker run -d -p 8081:80 --name nginx --restart=always --privileged=true nginx:latest

說明:

-d: 后台運行容器

-p :指定容器暴露的端口,映射宿主機端口號和容器端口號

--name:指定容器名字,后續可以通過名字進行容器管理

--restart=always:使容器自動啟動

--privileged=true:開啟特權模式(如遇到權限問題錯誤,可加此參數)

12.測試

瀏覽器中輸入你的ip地址 + 端口號,如下圖所示:(成功狀態)

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM