Docker安装Nginx入门示例

测试环境:

Ubuntu 20.04

Docker version 23.0.1

Nginx容器版本:1.23.3

1.拉取镜像

拉取命令:

docker pull nginx:1.23.3

查看镜像:

yyj@yyj:~$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        1.23.3    904b8cb13b93   9 days ago     142MB

可以看到成功拉取到了nginx:1.23.3镜像

2.创建映射目录

在宿主机上,创建需要映射的目录,命令如下:

mkdir -p /home/yyj/Data/Docker/nginx/conf
mkdir -p /home/yyj/Data/Docker/nginx/logs
mkdir -p /home/yyj/Data/Docker/nginx/html

创建的路经说明:

路经 作用
/home/yyj/Data/Docker/nginx/conf 用来映射nginx容器中/etc/nginx/nginx.conf路经下的配置文件
/home/yyj/Data/Docker/nginx/logs 用来映射nginx容器中/var/log/nginx路经下的日志
/home/yyj/Data/Docker/nginx/html 用来映射nginx容器中/usr/share/nginx/html路经下的静态文件

3.创建配置文件

下载好的nginx镜像中其实有个nginx.conf配置文件了,我们只需要启动一个临时的nginx容器,把容器中的nginx.conf文件复制到我们指定的路经就行了;当然你也可以从其他地方找到合适的nginx.conf配置文件;这里以第一种方式为例,复制一个nginx.conf文件即可:

# 使用nginx:1.23.3创建并启动一个叫“nginx”的nginx容器
docker run --rm -d --name nginx nginx:1.23.3
# 复制容器内部的nginx.conf配置文件到指定的“/home/yyj/Data/Docker/nginx/conf/”路经下
docker cp nginx:/etc/nginx/nginx.conf /home/yyj/Data/Docker/nginx/conf/
# 关闭运行的容器;由于使用了--rm参数,容器会在停止运行并退出时自动删除容器
docker stop nginx

至此,我们可以用ls命令查看配置文件是否复制到了指定的目录下:

yyj@yyj:~$ ls /home/yyj/Data/Docker/nginx/conf/nginx.conf 
/home/yyj/Data/Docker/nginx/conf/nginx.conf

nginx.conf配置文件内容如下:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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"';
    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

4.创建容器并运行

命令如下:

docker run -itd \
  --name nginx \
  --network yyj_network \
  --ip 192.168.7.4 \
  -p 80:80 \
  -p 443:443 \
  -p 8080:8080 \
  -v /home/yyj/Data/Docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /home/yyj/Data/Docker/nginx/html:/usr/share/nginx/html \
  -v /home/yyj/Data/Docker/nginx/logs:/var/log/nginx \
  nginx:1.23.3

到步骤4,容器已经创建并运行了,可以使用docker ps命令查看。

其他说明:

如果你的docker不需要指定使用的network固定的ip,即使用--network yyj_network--ip 192.168.7.4参数,可以去掉这2处。

5.测试

此步骤仅仅为了简单测试反向代理

  • 创建静态文件

在宿主机/home/yyj/Data/Docker/nginx/html目录下新建一个叫”test.html“的文件

vim /home/yyj/Data/Docker/nginx/html/test.html

内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <h1>测试Nginx</h1>
</body>
</html>
  • 修改配置文件

修改/home/yyj/Data/Docker/nginx/conf/nginx.conf路经下的nginx.conf配置文件,在http块中加入如下server块,内容如下:

# 这是加入的server块,用来测试反向代理访问静态文件
server {
	listen 80;
	server_name example.com;

	location /static/ {
		alias /usr/share/nginx/html/;
	}
}
  • 重启nginx测试

重启nginx容器:

docker restart nginx

浏览器访问如下地址:

127.0.0.1:80/static/test.html

avatar

发现可以代理成功。

posted @ 2023-03-11 19:59  youngyajun  阅读(179)  评论(0编辑  收藏  举报