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
发现可以代理成功。