总体思路:在有网络的环境上制作Nginx的镜像包,导出并上传至无网络的环境上,启动Nginx即可。

   在上一篇 《无网环境Docker Rpm离线安装》 里面,已经在联网的机器上安装好了干净的docker环境,接下来就可以安装自己需要的软件镜像了。

docker镜像保存成 tar 归档文件(导出nginx离线镜像包)

  • 1,通过docker search : 从Docker Hub查找需要的镜像。

从 Docker Hub 查找所有镜像名包含 nginx,并且收藏数大于 10 的镜像:sudo docker search -f stars=10 nginx如下:



图中第一行列出的是官方发布的nginx镜像。

列字段说明:

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

  • 2,拉取镜像。

通过docker pull : 从镜像仓库中拉取或者更新指定镜像:sudo docker pull nginx 如下:



说明: 如果:后不写版本号,则默认拉取最新的。如图实际拉取的是标签为tag: latest的nginx:latest镜像。

  • 3,创建容器并启动nginx

拉取下来镜像后还需要创建容器并启动nginx才能使用。

# 创建nginx容器并指定映射端口
sudo docker run -d --name nginx_docker -p 8080:80 nginx:latest

说明:

-d: 后台运行容器

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

--name:指定容器名字,后续可以通过名字进行容器管理

如图:

如果想删除docker容器可以执行:sudo docker rm -f nginx_docker 后面的参数可以是镜像ID或名称。

  • 4,访问测试nginx

浏览器中输入你的ip地址 + 端口号,如下图所示:(成功状态)

  • 5,创建宿主机配置文件(用于后续挂载nginx配置文件)
 cd /usr/local/
mkdir nginx
cd nginx/
mkdir -vp data html logs ssl conf/conf.d
ll

如图:

说明:

data:资源数据

html:静态资源,一般前端页面

logs:nginx日志

ssl:SSL证书(https)

conf:nginx配置,一般配置缓存、限流在这个里面

conf.d: nginx配置,代理、转发、负载、集群

  • 5.1,编辑html文件夹下的index.html

cd /usr/local/nginx/html/

sudo vi 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/

sudo vi 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" "$request_time" "$upstream_response_time"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on; map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
} include /etc/nginx/conf.d/*.conf;
}
  • 5.3,编辑conf.d文件夹下的host.conf

cd /usr/local/nginx/conf/conf.d/

sudo vi host.conf

# http转发到后端http
server {
listen 8081;
server_name 10.90.5.70; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto "http";
proxy_set_header User-Agent $http_user_agent;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade; location / {
proxy_redirect off;
proxy_pass http://10.90.5.70:8081/;
} }
  • 6,创建新的容器并挂载宿主机配置文件启动nginx(开一个相同的服务,端口号不同)

    创建新的nginx容器并启动后验证。
# 创建nginx容器并指定映射端口
sudo docker run -d -p 8081:80 --name nginx_docker_2 --restart=always --privileged=true -v /usr/local/nginx/html:/usr/share/nginx/html nginx:latest

如图:



说明:

-d: 后台运行容器

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

--name:指定容器名字,后续可以通过名字进行容器管理

--restart=always:使容器自动启动

--privileged=true:开启特权模式(如遇到权限问题错误,可加此参数)

-v:挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录

  • 7,测试(挂载宿主机配置文件)

浏览器中输入你的ip地址 + 端口号,如下图所示:(成功状态)

  • 7.1,进入nginx容器查看版本
# 进入nginx容器
sudo docker exec -it nginx_docker_2 bash
# 查看版本
nginx -v

如图:

  • 8,停止并删除容器(测试完废弃了就可以删除)
# 停止并删除容器(容器ID或名称都行)
sudo docker rm -f 97c4b81efbc8
sudo docker rm -f nginx_docker_2
  • 9,docker镜像保存成 tar 归档文件(导出nginx离线镜像包)
# 进入nginx容器
sudo docker save -o nginx-v1.23.2-dockerimage.tar nginx:latest

如图:

将镜像包.tar上传至无网络的环境上创建并启动

  • 1,将镜像包nginx.tar上传至无网络的环境上执行导入。

    docker load : 导入使用 docker save 命令导出的镜像。执行:
# 在.tar所在位置执行
sudo docker load -i nginx-v1.23.2-dockerimage.tar
# 检查本地镜像仓库
sudo docker images

如图(成功):

  • 2,直接创建并启动nginx

    命令:
# 建议提前创建本地映射目录及配置文件,前面讲过这里不再赘述。
sudo docker run -dit --name nginx_docker -p 8080:80 -p 8081:8081 -p 8443:443 --add-host web1.test.com:10.90.3.101 --add-host web2.test.com:10.90.3.102 --restart=always --privileged=true -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/log:/var/log/nginx -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/ssl:/etc/nginx/cert nginx:latest # 上面那一行命令太长不方便阅读,可以改成多行形式(每行末尾反转义换行符),效果是一样的。
sudo docker run -dit --name nginx_docker \
-p 8080:80 \
-p 8081:8081 \
-p 8443:443 \
--add-host web1.test.com:10.90.3.101 \
--add-host web2.test.com:10.90.3.102 \
--restart=always \
--privileged=true \
-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/log:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/ssl:/etc/nginx/cert \
nginx:latest # 检查容器运行状态
sudo docker ps -a

如图:



查看容器日志:

说明:

-d: 后台运行容器

-i: 以交互模式运行容器,通常与 -t 同时使用;

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-p :指定容器暴露的端口,映射宿主机端口号和容器端口号。指定端口映射,格式为:主机(宿主)端口:容器端口

--volume , -v: 绑定一个卷(本地路径或文件映射)

--name:指定容器名字,后续可以通过名字进行容器管理

--restart=always:使容器自动启动

--privileged=true:开启特权模式(如遇到权限问题错误,可加此参数)

--add-host:使用docker run的--add-host命令选项,将要访问的其他服务器的host和ip加入到/etc/hosts文件。--add-host命令选项表示,在启动容器时,向/etc/hosts文件添加一个host:ip的映射。

  • 3,测试

浏览器中输入你的ip地址 + 端口号,如下图所示:(成功状态)

重启docker容器里的nginx服务

如果修改了nginx配置文件,需要重启服务才能生效。

方法一:通过docker命令重启

sudo docker exec nginx_docker sh -c "nginx -t"
sudo docker exec nginx_docker sh -c "nginx -s reload"

如图:

方法二:进入docker容器内执行nginx命令重启

sudo docker exec -it nginx_docker sh
nginx -t
nginx -s reload

Docker离线部署Nginx的更多相关文章

  1. 在Docker下部署Nginx

    在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...

  2. Docker Compose部署 nginx代理Tomcat集群

    一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...

  3. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  4. 阿里云服务器安装Docker并部署nginx、jdk、redis、mysql

    阿里云服务器安装Docker并部署nginx.jdk.redis.mysql 一.安装Docker 1.安装Docker的依赖库 yum install -y yum-utils device-map ...

  5. Docker应用部署(Nginx、Tomcat)

    Docker hub官方链接: https://hub.docker.com 部署Nginx 官方已经给出了方法: https://hub.docker.com/_/nginx 运行容器 $ dock ...

  6. Linux运维之docker虚拟化部署nginx

    一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...

  7. docker stack 部署nginx

    =============================================== 2018/7/29_第1次修改                       ccb_warlock == ...

  8. Docker(二)-在Docker中部署Nginx实现负载均衡(视频教程)

    本教程介绍利用Docker部署Nginx服务实现负载均衡. (双击全屏播放)

  9. docker - compose 部署 Nginx

    主要介绍 docker 中 Nginx 的部署及项目目录挂载券的方法.docker 中部署一个服务,有三种方法,分别是 docker run.Dockerfile.docker-compose . 下 ...

  10. Docker 06 部署Nginx

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

随机推荐

  1. 制作并量化GGUF模型上传到HuggingFace和ModelScope

    llama.cpp 是 Ollama.LMStudio 和其他很多热门项目的底层实现,也是 GPUStack 所支持的推理引擎之一,它提供了 GGUF 模型文件格式.GGUF (General Gau ...

  2. 盘点Air780E的FTP应用,你了解吗?

    ​ 一.FTP 概述 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一. FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端. ...

  3. P4629 SHOI2015 聚变反应炉

    P4629 SHOI2015 聚变反应炉 树上背包+树形dp. 算是套娃题吗? 思路 看到数据考虑数据分治. part1 贪心 \(c_i\leq 1\) 对于这种情况,我们考虑贪心的点亮. 手玩几组 ...

  4. Stratum挖矿协议&XMR挖矿流量分析

    目录 前言 区块链和挖矿相关概念 挖矿木马 挖矿协议Stratum Stratum工作过程 XMR挖矿流量分析 环境搭建 流量分析 总结 前言 之前参与了一个关于"挖矿行为检测"的 ...

  5. XSS跨站脚本之portswigger labs练习

    目录 1 什么是XSS 2 XSS的类型有哪些 3 XSS攻击的过程和原理 4 XSS的防御 5 可能会用到的XSS Payload资源 6 靶场训练 portswigger labs 6.1 没有任 ...

  6. 前端截图取色工具Snipaste

    在Web前端开发中,在写页面CSS样式时经常要用工具去取色来设置字体颜色.背景颜色.边框颜色等等,以还原设计图的最佳效果.今天给大家推荐的取色工具是Snipaste.Snipaste 是一个简单但强大 ...

  7. Ubuntu apt-cache命令查找可用软件包

    本文GoFace给大家讲解下在Ubuntu及相同包管理的linux系统下如何查找可用软件包.在Ubuntu上大家一般使用apt-get安装软件,如果想查找某一包软件仓库中是否有,并不是使用apt-ge ...

  8. JDBC性能小贴

    本文由 ImportNew - 刘志军 翻译自 javarevisited.如需转载本文,请先参见文章末尾处的转载要求. 本文收集了一些用于提升JDBC性能的方法.Java应用或者JavaEE Web ...

  9. 攻防世界:web习题之disabled_button

    攻防世界:web习题之disabled_button 题目内容 https://adworld.xctf.org.cn/challenges/list 打开网页会发现有一个无法点击的按钮 思路 查看该 ...

  10. oracle客户端安装先决条件检查出现PRVF-7531错误

    场景:在局域网内,远程一台客户机进行客户端安装 度娘后,说一般情况下,由于操作系统未开启默认共享,导致Oracle无法检查环境的可用性. 查看server服务正常开启. 通过net share将c进行 ...