docker离线安装nginx并配置nginx.conf

本文详细介绍了如何在有网络环境下获取和标记Nginx镜像,以及在无网络情况下如何使用Docker将镜像打包、加载并在宿主机上配置和运行,包括映射文件夹和端口的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 在有网环境下拉取Nginx镜像

1. 该指令没有指定nginx版本号,会拉取最新的镜像,相当于docker pull nginx:latest

docker pull nginx
docker images # 查看镜像

在这里插入图片描述

2. 但是我想把TAG改成确定的版本号,先查看该nginx的镜像的版本

docker image inspect nginx:latest | grep -i versiondocker image inspect nginx:latest | grep -i version

在这里插入图片描述

3. 修改TAG

docker tag [IMAGE ID] [REPOSITORY]:[版本号]

docker tag 605c nginx:1.21.5 

在这里插入图片描述

4. 打包nginx镜像,并把nginx.tar包放到无网环境服务里

 docker save -o nginx.tar nginx:1.21.5

二. 在无网环境下的docker安装nginx

1. 加载nginx.tar包

docker load -i nginx.tar

查看结果
在这里插入图片描述

2. 创建映射目录

# 创建挂载目录
mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/log
mkdir -p /usr/local/nginx/html

3. 然后运行nginx容器,并将容器里的文件复制到宿主机对应的文件夹

# 生成容器
docker run --name nginx -p 80:80 -d nginx:1.21.5
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /usr/local/nginx/

4. 复制完容器里对应的文件后,将容器删除

# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx

5. 配置nginx.conf

我的nginx.conf配置:
注意:在nginx.conf里涉及都路径都是nginx容器里的路径,如果要使用宿主机的路径,必须在创建容器时【下面第6步】映射对应目录

er  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;

     server {
        listen 80;
        server_name localhost;
        root /usr/share/nginx/html;   #注意!这里是容器中路径,不是宿主机里的路径
     }
     server {
        listen 9002;
        server_name localhost;
        root /usr/share/nginx/html;   #注意!这里是容器中路径,不是宿主机里的路径
        
        location /panos_xu {
            # 跨域设置
            add_header 'Access-Control-Allow-Credentials' true;
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'Content-Type.*';

            root /home/data/;   #注意!这里是容器中路径,不是宿主机里的路径
            autoindex on;
        }
     }
 }

6. 创建和启动容器

因为我个人的需要,监听了80和9002端口,未来可能还需要监听更多的端口,所以如下命令:

docker run --net host \
--name nginx \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/log:/var/log/nginx \
-v /home/data:/home/data
-d nginx:1.21.5

单行指令

docker run --net host --name nginx -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/log:/var/log/nginx -v /home/data:/home/data -d nginx:1.21.5
命令描述
-d后台运行
–net host映射全部端口,由nginx.conf里配置实际的端口。如果你不想映射全部端口,则可以用 -p 宿主机端口:容器端口(如 -p 9002:80)替代该指令
–name nginx容器的名字
-v /usrl/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf挂载nginx.conf配置文件
-v /usrl/local/nginx/conf/conf.d:/etc/nginx/conf.d挂载nginx配置文件
-v /usr/local/nginx/html:/usr/share/nginx/html挂载nginx内容
-v /usr/local/nginx/log:/var/log/nginx挂载nginx日志文件
-v /home/data:/home/data挂载静态文件目录,必须与nginx.conf的location下的root路径对应上,如果你不需要配置location的root映射宿主机目录,可省略
nginx:1.21.5镜像名称

注意:修改nginx.conf后,需要重启nginx容器

docker restart [容器id]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值