Skip to content

商务合作:vTikTok


公众号:



Docker启动Nginx

Nginx在容器中的目录

进入容器bash终端后,可以查看到nginx相关内容的目录位置如下:

  1. log 日志文件目录:/var/log/nginx
  2. config 配置文件目录: /etc/nginx
  3. web 资源存放目录: /usr/share/nginx/html

Nginx指令

1. 拉取Nginx镜像

shell
docker pull nginx
docker pull nginx

2. 运行Nginx容器

shell
docker run -d --name nginx -p 8080:80 nginx
docker run -d --name nginx -p 8080:80 nginx

映射目录前,我们需要把容器内的配置拷贝一份到宿主机上,然后再映射到容器内,这样我们就可以在宿主机上修改配置文件了。

shell
docker cp xkit-server:/etc/nginx/nginx.conf .
docker cp xkit-server:/etc/nginx/nginx.conf .

映射目录(Linux上)

shell
docker run -d --name xkit-server -p 8080:80 -v /root/www/wwwroot/html/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/www/wwwroot/html:/usr/share/nginx/html -v /root/www/wwwroot/html/nginx/log:/var/log/nginx nginx
docker run -d --name xkit-server -p 8080:80 -v /root/www/wwwroot/html/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/www/wwwroot/html:/usr/share/nginx/html -v /root/www/wwwroot/html/nginx/log:/var/log/nginx nginx

映射目录(MAC上)

shell
docker run -d --name xkit-server -p 8080:80 -v /Users/alien/www/wwwroot/html/nginx/nginx.conf:/etc/nginx/nginx.conf -v /Users/alien/www/wwwroot/html:/usr/share/nginx/html -v /Users/alien/www/wwwroot/html/nginx/log:/var/log/nginx nginx
docker run -d --name xkit-server -p 8080:80 -v /Users/alien/www/wwwroot/html/nginx/nginx.conf:/etc/nginx/nginx.conf -v /Users/alien/www/wwwroot/html:/usr/share/nginx/html -v /Users/alien/www/wwwroot/html/nginx/log:/var/log/nginx nginx

3. 进入Nginx容器

-i: 以交互模式运行 -t: 为容器重新分配一个伪输入终端 -i 与 -t 通常同时使用

shell
docker exec -it nginx /bin/bash
docker exec -it nginx /bin/bash

4. 修改Nginx配置文件

shell
cd /etc/nginx/conf.d
vim default.conf
cd /etc/nginx/conf.d
vim default.conf

5. 重启Nginx容器

shell
docker restart nginx
docker restart nginx

6. 退出Nginx容器

shell
exit
exit

7. 查看Nginx容器日志

shell
docker logs nginx
docker logs nginx

8. 停止Nginx容器

shell
docker stop nginx
docker stop nginx

9. 删除Nginx容器

shell
docker rm nginx
docker rm nginx

10. 删除Nginx镜像

shell
docker rmi nginx
docker rmi nginx

11. 保存Nginx容器为镜像

shell
docker commit nginx nginx:latest
docker commit nginx nginx:latest

端口问题

在通过 docker run 命令启动nginx的时候,通过 -p 设置了端口,默认选择的nginx容器的端口号是80。 如果通过配置文件修改了nginx容器的端口号,如把 server 80 改成 server 8080,在重启nginx容器,此时,nginx服务会失效,无法有效访问站点。

即非80端口的容器,无法访问。 如果要部署多个网站,可以启动多个容器,每个容器可以对应一个端口号。这时,可以修改每个容器的日志配置资源文件等内容。

不过,也有办法解决,修改运行中的容器的端口的方法

  1. 停止 nginx 容器的运行,docker stop nginx
  2. 查看 nginx 容器的id,docker inspect nginx | grep "Id", 会显示完整的容器Id
  3. 通用路径 /var/lib/docker/containers/{容器Id}/hostconfig.json,里面就存放有容器端口和本地端口,可以进行修改,通过 vi 命令查看、修改:80/tcp 是容器端口,HostPort: 8005 是本地端口,可修改。
  4. 重启docker, systemctl restart docker
  5. 重启nginx容器, docker start nginx

参考文章

Https的Docker部署Docker的部署