从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
相关推荐
MarkGosling10 分钟前
【开源项目】网络诊断告别命令行!NetSonar:开源多协议网络诊断利器
运维·后端·自动化运维
Codebee13 分钟前
OneCode3.0 VFS分布式文件管理API速查手册
后端·架构·开源
_新一15 分钟前
Go 调度器(二):一个线程的执行流程
后端
无敌的牛16 分钟前
Linux基础开发工具
linux·运维·服务器
Edingbrugh.南空17 分钟前
实战指南:用pmap+gdb排查Linux进程内存问题
linux·运维·服务器
estarlee17 分钟前
腾讯云轻量服务器创建镜像免费API接口教程
后端
风流 少年1 小时前
Cursor创建Spring Boot项目
java·spring boot·后端
亚马逊云开发者1 小时前
将 Go 应用从 x86 平台迁移至 Amazon Graviton:场景剖析与最佳实践
linux·数据库·golang
大叔是90后大叔1 小时前
Linux/Ubuntu安装go
linux·ubuntu·golang
孙克旭_1 小时前
day051-ansible循环、判断与jinja2模板
linux·运维·服务器·网络·ansible