docker安装nginx非常简单,只需要docker pull nginx下载,并通过docker run命令进行启动即可。参考我的博客 https://blog.csdn.net/huangbaokang/article/details/97764768
docker部署nginx
我们在docker安装nginx,其实是为了在nginx访问我们程序静态页或者代理访问。
就像我们平时在linux里安装nginx一样,安装完之后会在我们的linux系统生成对应的安装目录。
比如默认的nginx安装在/usr/local/nginx等等。那么各位小伙伴是否有同样的疑问:docker安装的nginx,文件安装在哪里?日志文件在哪里?配置文件又在哪里?
其实前提需要理解docker容器的思想。
当docker运行nginx时,外界访问还是docker所在的那个IP地址,就相当于nginx在那台机器上运行一样。
但对于docker所在的那台机器来说,nginx就是附属于docker的一个镜像。若操作nginx还是由docker登录nginx容器,进行操作。
登录的nginx容器就是一个linux系统,只不过只有nginx而已,nginx按照linux默认路径安装。
也就是说,docker容器使用一个linux系统,在这个系统上安装了nginx。
使用docker exec进入对应容器的linux系统
[root@localhost bin]# docker exec -it hbk_nginx_test bash
root@6f046d11c395:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
可以看到是linux的目录结构,而这个linux系统可以理解成为了安装nginx,docker虚拟化出来的新系统。
其中/usr/share/nginx/html是docker安装nginx默认的存储位置。
root@6f046d11c395:/usr/share/nginx/html# ls
50x.html index.html
root@6f046d11c395:/usr/share/nginx/html# echo "huangbaokang" > hbk.txt
root@6f046d11c395:/usr/share/nginx/html# ls
50x.html hbk.txt index.html
访问我们的页面
默认的nginx配置文件 /etc/nginx/nginx.conf
默认的日志文件位置:/var/log/nginx
不过我们一般启动的时候,指定配置文件和静态页存放位置以及日志文件
我们跟容器里的linux还可以进行复制等通讯操作。
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f046d11c395 nginx "nginx -g 'daemon ..." 3 hours ago Up 3 hours 0.0.0.0:8888->80/tcp hbk_nginx_test
[root@localhost /]# mkdir test/conf test/logs test/www
[root@localhost /]# docker cp 6f046d11c395:/etc/nginx/nginx.conf test/conf/
启动的时候,如下:
[root@localhost /]# docker run --name hbk_nginx_web -p 8888:80 -v /test/www:/usr/share/nginx/html -v /test/conf/nginx.conf:/etc/nginx/nginx.conf -v /test/logs:/var/log/nginx -d nginx
这样的话,我们直接操作/test/www目录下的文件等同于操作docker容器里linux系统的/usr/share/nginx/html目录文件。
[root@localhost www]# echo "hello world" > hello.html
[root@localhost www]# pwd
/test/www
[root@localhost www]# ls
hello.html
重启 NGINX 容器命令:
$ docker restart container-name