从0起步,在Ubuntu上使用docker或docker compose部署nginx

需求描述

公司新买了一台服务器,想在上面部署一个nginx服务器,/opt/nginx/config/存放nginx的配置文件,/opt/nginx/html存放nginx的静态网站文件,/opt/nginx/logs存放nginx的日志信息,这时候该怎么办?

一、安装Docker

如果你的服务器上还没有安装Docker,首先需要安装它。可以使用以下命令:

bash 复制代码
sudo apt update
sudo apt install docker.io

安装完成后,启动 Docker 服务并设置为开机自启动:

bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker

查看Docker是否开启,出现绿色圆点表示服务正常开启

bash 复制代码
sudo systemctl status docker

二、Docker 镜像源配置

1、打开终端,运行以下命令以编辑 Docker 配置文件

bash 复制代码
nano /etc/docker/daemon.json

2、将以下配置信息复制并粘贴到 nano 编辑器中:

json 复制代码
{
    "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}

按下 Ctrl + O 键,然后按 Enter 键,以保存文件。接着按下 Ctrl + X 键,退出 nano 编辑器。

3、重启 Docker 服务

复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

三、创建Nginx配置文件夹和文件

在服务器上创建需要的文件夹,用于存放 Nginx 的配置文件。

bash 复制代码
sudo mkdir -p /opt/nginx/config   # 创建Nginx配置文件夹
sudo mkdir -p /opt/nginx/html     # 创建Nginx静态网站文件夹
sudo mkdir -p /opt/nginx/logs     # 创建Nginx日志文件夹

/opt/nginx/config 目录下创建一个 nginx.conf 文件,

bash 复制代码
sudo nano /opt/nginx/config/nginx.conf

文件内容参考下面的配置,注意配置中的路径要使用容器中的路径,而不是宿主机中的路径

ini 复制代码
nginxCopy code
worker_processes 1;

events {
    worker_connections 1024;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    server {
        listen 80;
        server_name localhost;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /usr/share/nginx/html;
        }
    }
}

四、使用Docker部署nginx

上述创建的配置文件和文件夹,使用Docker运行Nginx容器。运行以下命令:

bash 复制代码
sudo docker run -d \
    --name nginx \ # 容器的名称为nginx
    -p 80:80 \  # 映射主机端口80到容器端口80
    -v /opt/nginx/config/nginx.conf:/etc/nginx/nginx.conf \
    -v /opt/nginx/html:/opt/nginx/html \
    -v /opt/nginx/logs:/var/log/nginx \
    nginx:latest # 使用的版本,可以指定版本号,比如 `nginx:1.20`.

运行以下命令检查容器的运行状态:

bash 复制代码
sudo docker ps

五、使用Docker Compose部署nginx

在服务器上创建一个名为 docker-compose.yml 的文件,并添加以下内容:

yaml 复制代码
version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    volumes:
      - /opt/nginx/config:/etc/nginx/conf.d
      - /opt/nginx/html:/usr/share/nginx/html
      - /opt/nginx/logs:/var/log/nginx
    ports:
      - "80:80"
    restart: always

在包含 docker-compose.yml 文件的目录中运行以下命令启动Nginx容器:

bash 复制代码
sudo docker-compose up -d
相关推荐
Piper蛋窝5 小时前
深入 Go 语言垃圾回收:从原理到内建类型 Slice、Map 的陷阱以及为何需要 strings.Builder
后端·go
2401_826097625 小时前
JavaEE-Linux环境部署
java·linux·java-ee
(:满天星:)6 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
爱莉希雅&&&7 小时前
shell编程之awk命令详解
linux·服务器·git
笑稀了的野生俊7 小时前
在服务器中下载 HuggingFace 模型:终极指南
linux·服务器·python·bash·gpu算力
渡我白衣7 小时前
Linux操作系统之文件(四):文件系统(上)
linux
ZZH1120KQ7 小时前
Linux系统安全及应用
linux·运维·系统安全
六毛的毛7 小时前
Springboot开发常见注解一览
java·spring boot·后端
AntBlack8 小时前
拖了五个月 ,不当韭菜体验版算是正式发布了
前端·后端·python
31535669138 小时前
一个简单的脚本,让pdf开启夜间模式
前端·后端