docker部署nginx
docker部署nginx
1. 拉取nginx镜像
docker pull nginx:latest
1
latest表示最新版的nginx, 拉取到最新版本的Nginx镜像完毕后,我们就可以通过docker images来查看是否下载完毕:
2. 启动nginx
镜像下载完毕后,我们可以就使用docker来启动一个nginx容器,启动命令如下:
docker run --name my-nginx -p 8080:80 -d nginx
参数解析:
–name: 给容器取一个别名,启动成功后会在NAMES列显示。
-p: 将服务器的8080端口映射到nginx容器的80端口。
-d: 容器将会以后台的形式来运行。
启动成功后,我们可以通过docker ps命令来查看正在运行的容器:
run一个容器后,我们可以通过Start和stop命令来重写启动或停止容器, 后面带上容器的id或者NAMES即可
另外我们可以通过命令进入到nginx的终端,查看nginx镜像里的配置文件。
docker exec -it nginx bash
启动成功后,我们就可以访问nginx了, 如果用的是8080端口,服务器用的是阿里云,那么先要去配置一下安全组:
将8080端口加入访问的权限即可:
配置完毕后,再次访问http://192.168.2.130:8080/
3. 通过docker修改nginx配置
1) 挂载配置文件
在这里我使用了默认的nginx配置来启动容器, 接下来修改nginx.conf文件,这里需要我们在外部挂载一个配置文件nginx.conf来挂载容器里的nginx的配置文件,因为我们知道在docker里进入到nginx容器时,再去修改 /etc/nginx/nginx.conf文件是极其不方便的,想要在nginx容器外面去操作配置是极其不方便的,因此就有了挂载配置文件的方案。
首先在docker容器的外部新建一个/data/nginx/{conf,log,conf.d}, 其中conf目录下面为nginx的配置文件,default.conf为nginx的默认配置文件,这两个文件的内容可以先从docker容器里的nginx里拿出来,此路径需要通过指令进入到nginx容器的终端才能查看到, 另外不挂载的时候才能够进入到nginx容器的终端去查看路径。
注: 外挂时一定需要 nginx.conf和default.conf两个文件才行,并且要保证配置内容没有出错。
nginx.conf:
default.conf:
以下这两个配置文件的路径是用docker run起来以后,我们可以在没有指定挂载的时候,进入到nginx容器终端里显示出来的路径。
文件名 在nginx容器里的路径
nginx.conf /etc/nginx/conf
default.conf /etc/nginx/conf.d/default.conf
准备好如上所需要的配置文件后,我们就可以通过如下命令启动nginx容器:
docker run --name my-nginx -p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/log:/var/log/nginx \
-v /data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-d nginx
参数解析:
-v: 表示的是将容器所需要的文件进行挂载, 本例中是将nginx镜像所在容器里的/etc/nginx/nginx.conf 文件挂载到 我们自定义的 /data/nginx/conf/nginx.conf 文件。
-d: 容器以后台的方式进行运行,关闭终端后也不停止。
-p: 80:80 , 将nginx容器的80端口映射到Docker的80端口。
启动成功后,通过docker ps命令查看容器是否在运行:
如果失败了,那么用docker logs 加上返回的一串字母串查看失败的日志。
2) 重新加载配置文件
通过上述步骤,我可以将nginx的配置文件挂载到了docker容器外,然后我们只需要在外部修改 /data/nginx/conf/nginx.conf 文件即可, 修改好后需要重新启动一下容器。
docker restart my-nginx
如果在run容器出现容器已经存在,那么可以通过以下指令删除指定的容器, 后面接容器的id或者Name, 前提是要将运行中的容器先暂停:
docker stop my-nginx
docker rm my-nginx
4. 配置我的域名
接下来,我想把我刚申请的域名配置到nginx里,这样就能够起到保护ip地址的作用,这样看起来更像是一个完整的网站。首先,刚通过阿里云申请的域名审批通过后,需要在域名控制台下做下域名解析,解析完毕后,方可使用该域名,可以在windows环境下通过ping指令来确定是否解析成功,该域名是否可以直接访问! 解析过程,添加阿里云服务器下的公网ip地址即可!
windows环境下看是否能够Ping通:
发现可以ping通之后,我们就可以开始配置域名了! 修改nginx.conf文件, 我的域名是192.168.2.130
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; client_max_body_size 1024m; client_body_buffer_size 10m; client_header_buffer_size 10m; proxy_buffers 4 128k; proxy_busy_buffers_size 128k; server { listen 80; server_name 192.168.2.130; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
访问192.168.2.130, nginx提示页面表示成功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南