docker中离线安装nginx

为什么要离线安装?

其实离线安装是建立在在线安装的基础上的;因为有可能我们的服务器由于安全问题无法访问外网,自此我们需要将镜像手动上传至服务器中。

所以现在的场景就是:我们手上有一台笔记本,可以上网;笔记本上可以远程连接到我们的服务器,而服务器无法连接外网。

 

离线安装

环境准备

需要在本地拉取所需镜像,但拉取镜像需要相关docker环境,故先安装Docker,本文默认已经在Linux环境上安装了Docker。

  注:一般不会在Windows上安装Docker环境

 

拉取所需镜像至本地

# 搜索有哪些镜像可以下载
docker search 镜像名
# 拉取镜像到本地
docker pull 镜像名
# 查看当前本机有哪些镜像
docker images 
# 打包
docker save -o  要打镜像包名称     镜像
示例:docker save -o nginx.tar nginx        # tar包的保存路径为当前路径

DockerHub官网

 

使用ftp将打包好的tar包上传到目标服务器中

 

加载镜像

  当然服务器中的docker也需要手动安装,该安装过程请参考https://blog.csdn.net/qq_42511550/article/details/119188889

# 加载镜像;默认已经启动docker服务
docker load -i nginx.tar

 

查看镜像是否加载成功

docker image ls

 

创建docker-compose.yml文件

version: '3'
services:
  nginx:
    restart: always
    container_name: nginx
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - /data/nginx/html:/usr/share/nginx/html
      - /data/nginx/logs:/var/log/nginx
      # 有可能会出现不能挂载,这个时候用手动拷贝配置文件就行
      - /data/nginx/nginx.conf/:/etc/nginx/nginx.conf
      - /data/nginx/etc/cert:/etc/nginx/cert
      - /data/nginx/conf.d:/etc/nginx/conf.d
    environment:
      - NGINX_PORT=80
      - TZ=Asia/Shanghai
    privileged: true

 

根据yml文件中的数据卷volume创建相应文件夹(若不手动创建其实也会自动被创建)

mkdir /data/nginx/conf.d    # 不要以为有后缀就是文件,此处的conf.d仍是一个文件夹
mkdir /data/nginx/log
8mkdir /data/nginx/www

 

进入/data/nginx/conf.d目录下创建一个default.conf文件

server{
        listen 80;                                              #  监听80端口
        server_name localhost;                  #  请求的域名

        location / {                                    #  当请求进来后,映射上 /
                root /usr/share/nginx/html;                     # 将请求会映射到路径上.
                index index.html;                                       # 默认请求会去寻找index.html作为欢迎页面.
        }
}

 

启动nginx服务

docker-compose -f yml文件所在路径 up -d

 

进入nginx容器

docker exec -it nginx bash

 

查看nginx容器中端口开放情况

netstat -tlpn

 

测试端口映射连通性

telnet 宿主机IP 8080  # 端口映射为8080:80 表示宿主机的8080端口对应到nginx容器的80端口

 

web页面验证nginx服务

# 网页中输入
宿主机IP:8080

 

 

 

自此,nginx在docker中已经安装成功!

 

posted @ 2023-01-15 12:22  先娶国王后取经  阅读(1576)  评论(0编辑  收藏  举报