从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
相关推荐
钢门狂鸭28 分钟前
关于rust的crates.io
开发语言·后端·rust
脑子慢且灵2 小时前
[JavaWeb]模拟一个简易的Tomcat服务(Servlet注解)
java·后端·servlet·tomcat·intellij-idea·web
Empty_7772 小时前
SELinux安全上下文
linux·服务器·安全
华仔啊3 小时前
SpringBoot 中 6 种数据脱敏方案,第 5 种太强了,支持深度递归!
java·后端
bug攻城狮3 小时前
解决Ubuntu中apt-get -y安装时弹出交互提示的问题
linux·运维·ubuntu
xiachong273 小时前
ubuntu18.04安装PCL1.14
linux·ubuntu
夜阑珊夭夭4 小时前
linux自定义网卡名字
linux·运维
czhc11400756634 小时前
Linux912 shell:$# $1 $?;RHEL 8 AppStream BaseOS
linux
佛天华4 小时前
centos 时间校准
linux·运维·centos
小柯J桑_5 小时前
Linux:线程封装
linux·运维·c++