在 docker 中运行 nginx
拉取 nginx 最新镜像
docker pull nginx:latest
如果需要指定版本,可以到 Docker Hub 镜像仓库 选择指定 Tag
docker pull nginx:1.21.3
查看是否拉取成功
docker images
运行 nginx
一般需要代理转发,需要修改配置。直接修改容器的配置不是很方便,这时候,可以用上挂载功能,让容器加载或写入宿主机器上的挂载目录。
这样,我们直接在宿主机上就可以修改配置或查看日志了。
首先在宿主机上创建 3 个 nginx 的文件夹(笔者是使用 Windows 版的 Docker Desktop 进行测试的,故宿主机是 windows,如果是部署到 Linux 的话则使用 mkdir -p 进行创建):
html: 挂载静态页面目录
conf: 挂载 nginx 的主配置文件,以方便在宿主机上直接修改容器的配置文件
log: 挂载容器内 nginx 的日志,容器运行起来之后,可以直接在宿主机的这个目录中查看 nginx 日志
拷贝容器中默认的配置文件
# 先简单运行 nginx
docker run --name nginx -it -p 80:80 -d nginx
# 查看 nginx 运行的容器 ID
docker ps
# 找到 nginx 的容器 id 如笔者的是 02e4a2b4767a 拷贝 conf 到宿主机对应目录
docker cp 容器 id:/etc/nginx/nginx.conf D:\Software\docker\env\nginx\conf\
docker cp 容器 id:/etc/nginx/conf.d D:\Software\docker\env\nginx\conf\
docker cp 容器 id:/usr/share/nginx/html D:\Software\docker\env\nginx\html\
# 拷贝完之后停止并删除容器
docker stop 容器 id
docker rm 容器 id
新版本的 docker desktop 设置中设置后支持直接 D:\ 如果不支持的则可以使用/d/ 代表 D:\
可以看到我们在本地的 conf 文件夹中多了一个 nginx.conf,这个就是 nginx 的核心配置文件了
当然如果本地已经有了配置文件,则可以不用拷贝容器中默认的配置文件,直接进入下一步
挂载后运行
# docker run --name my-nginx -p 80:80 --restart=always -v /d/Software/docker/env/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /d/Software/docker/env/nginx/log:/var/log/nginx -v /d/Software/docker/env/nginx/html:/usr/share/nginx/html -d nginx
docker run --name my-nginx -p 80:80 --restart=always -v D:\Software\docker\env\nginx\conf\nginx.conf:/etc/nginx/nginx.conf -v D:\Software\docker\env\nginx\log:/var/log/nginx -v D:\Software\docker\env\nginx\html:/usr/share/nginx/html -d nginx
–restart=always 一直保持运行,自动启动 -d 表示在一直在后台运行容器
打开浏览器输入 localhost 后看到如下页面,就说明 nginx 已经启动成功,后面就根据项目需要配置更改 nginx.conf 即可
常用命令
修改配置后,我们可以重启镜像,或者进入镜像中 ./nginx -s reload,即可让修改生效:
查看 nginx 运行的容器 ID
docker ps
进入容器
docker exec -it 容器 id /bin/bash
重新加载
docker exec -t 容器 id nginx -s reload
如果有需要则可以重启容器容器重启
docker exec -t 容器 id nginx -t
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论