拉取nginx的docker镜像
docker pull nginx,直接用最新的就行
运行nginx,等会要删除,随意就行
$ docker run --name nginx-test -p 8080:80 -d nginx
复制nginx主配置文件
zilong@zilongdeMacBook nginx % docker cp nginx-test:/etc/nginx/nginx.conf /Users/zilong/docker/nginx/conf
复制nginx默认站点配置文件
zilong@zilongdeMacBook nginx % docker cp nginx-test:/etc/nginx/conf.d /Users/zilong/docker/nginx
停止容器nginx-test
docker stop nginx-test
删除nginx-test
docker rm nginx-test
正式运行
docker run --privileged --name nginx -it -p 80:80 \
-v /Users/zilong/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /Users/zilong/docker/nginx/conf.d:/etc/nginx/conf.d:ro \
-v /Users/zilong/docker/nginx/html:/usr/share/nginx/html:rw \
-v /Users/zilong/docker/nginx/logs:/var/log/nginx -d nginx
命令解释:
--privileged
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。
--name
设置nginx容器的名称
-p 8193:8193
设置访问端口和nginx容器的监听端口的映射关系
第一个8193是你访问的端口
第二个8193是docker的nginx配置文件监听端口
-d 后台挂载运行nginx
:rw、:ro和不指定模式,是比较重要的一个环节,关系到宿主机与容器的文件、文件夹变化关系,下面来一一详解
一、不指定
(1)文件:宿主机修改该文件后容器里面看不到变化;容器里面修改该文件,宿主机也看不到变化
(2)文件夹:不管是宿主机还是容器内修改、新增、删除文件,都会相互同步
二、ro
(1)文件:容器内不能修改,会提示read-only
(2)文件夹:容器内不能修改、新增、删除文件夹中的文件,会提示read-only
三、rw
(1)文件:不管是宿主机还是容器内修改,都会相互同步,但容器内不允许删除,会提示Device or resource busy;宿主机删除文件,容器内的不会被同步
如果要增加站点,或者变更配置,直接修改宿主机(自己电脑docker/nginx)的配置,然后docker restart nginx即可,非常的方便。