Docker安装nginx
1、拉取nginx镜像并查看
# docker搜索nignx docker search nginx # 拉取nginx镜像--会从docker官方镜像中拉取 docker pull nginx # 查看docker镜像 docker images
2、运行镜像容器
docker run --name myNginx -p 80:80 -d nginx
参数含义:
-d 指定容器以守护进程方式在后台运行
–-name 指定启动容器名称,此处名字为:myNginx
-p 指定主机与容器内部的端口号映射关系,格式 -p [宿主机端口号]:[容器内部端口],此处为: 主机80端口,映射容器80端口
最后那个nginx是指要依赖镜像的名称
3、运行起来后可以进入镜像查看信息
# 进入容器内部 docker exec -it 容器id /bin/bash # 退出容器 exit
容器内部就是一个安装了nginx的简易版的linux系统,进入容器后可以发现内部的文件目录和linux的基本一致,包括nginx的配置文件,日志文件等信息。
4、设置nginx挂载
由于nginx运行是依赖一些配置的文件,比如转发的配置,默认页面,日志等信息,这些配置不适合直接放在容器里,因为容器一旦重新部署或者删除的话,这些配置将会丢失。
所以,我们需要将nginx的一些配置挂载到宿主机上(或者其他内网机器上也行,这里只示例挂载在宿主机)
我们要先将docker容器启动起来,然后将容器内部的文件复制到宿主机上(不要问为什么不直接在宿主机上新建文件,cv他不香吗?)
具体步骤:
4.1、运行容器(如果已运行则忽略此步骤)
docker run --name myNginx -p 80:80 -d nginx
4.2、在宿主机上创建挂载目录(/home/docker/volumes/nginx/log和/home/docker/volumes/nginx/conf)
# 绝对路径方式 mkdir -p /home/docker/volumes/nginx/{log,conf} # 相对路径方式(首先要cd到相应目录) mkdir -p ./docker/volumes/nginx/{log,conf}
4.3、将容器中的配置复制到挂载目录
# 从容器中复制配置文件 docker cp myNginx:/etc/nginx/nginx.conf /home/docker/volumes/nginx/conf/nginx.conf # 从容器中复制配置文件夹 docker cp myNginx:/etc/nginx/conf.d /home/docker/volumes/nginx/conf/ # 从容器中复制html文件 docker cp myNginx:/usr/share/nginx/html /home/docker/volumes/nginx/ # 从容器中复制日志文件 docker cp myNginx:/var/log/nginx /home/docker/volumes/nginx/log
其中myNginx是指启动的容器name,
4.4、停止并删除nginx容器(因为需要在docker run的时候设置挂载,所以之前启动的容器需要删除重新起一个)
docker stop myNginx docker rm myNginx
4.5、使用挂载方式启动nginx容器
chmod 777 /home/docker/volumes/nginx/conf/nginx.conf docker run -d -p 7777:80 --name myNginx \ -v /home/docker/volumes/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/docker/volumes/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /home/docker/volumes/nginx/html:/usr/share/nginx/html \ -v /home/docker/volumes/nginx/log:/var/log/nginx \ -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 \ --privileged=true --restart=always nginx