使用Docker 安装Nginx

3,082 阅读3分钟

拉取镜像

访问hub.docker.com/,检索 nginx

我们可以通过指定TAG,来选择安装不同版本的nginx,拉取最新的镜像直接使用 docker pull nginx就可以了。

使用 docker images 命令可以查看镜像 ,如下:

启动容器

方式一 使用docker run最简单启动

这种方式只指定端口映射,不会把容器内的配置文件挂载到宿主机上,使用以下命令:

docker run -d --name nginx -p 80:80 35c43ace9216

  • -d 指定容器以守护进程方式在后台运行

  • --name 指定容器名称,此处我指定的是nginx

  • -p 指定主机与容器内部的端口号映射关系,格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口

  • 35c43ace9216 是nginx的镜像IMAGE ID

由于nginx配置文件并没有挂载在宿主机上,如果我们需要修改nginx配置,可以使用如下方式:

执行命令:

docker exec -it ba1052282514 /bin/bash
  • exec 命令代表附着到运行着的容器内部
  • -it 是 -i 与 -t两个参数合并写法,-i -t 标志着为我们指定的容器创建了TTY并捕捉了STDIN
  • ba1052282514是我们要进入的容器Id
  • /bin/bash 指定了执行命令的shell

进入到nginx容器内部后,我们可以cd /etc/nginx,可以看到相关的nginx配置文件都在/etc/nginx目录下

而nginx容器内的默认首页html文件目录为/usr/share/nginx/html,日志文件位于/var/log/nginx

这种方式,对于需要经常修改配置文件,十分不方面,来,我们看下如何将配置文件映射到宿主机上的呢

方式二 使用docker run挂载配置文件启动

  • 在主机/mnt目录下执行 mkdir -p ./nginx/{conf,html,logs}创建挂载目录

  • 将容器内的nginx.confdefault.conf文件分别拷贝到主机/mnt/nginx与目录/mnt/nginx/conf下,分别执行

    docker cp ba1052282514:/etc/nginx/nginx.conf ./
    docker cp ba1052282514:/etc/nginx/conf.d/default.conf ./conf/
    

    cp 命令代表复制

    ba1052282514是我们nginx容器的ID,/etc/nginx/nginx.conf 是容器内部nginx.conf 路径

  • 执行docker stop ba1052282514命令停止刚刚创建的nginx容器,ba1052282514是容器Id,然后执行docker rm ba1052282514移除容器,

  • 执行以下命令重新创建容器

    docker run -d --name nginx -p 80:80 -v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/nginx/logs:/var/log/nginx -v /mnt/nginx/html:/usr/share/nginx/html -v /mnt/nginx/conf:/etc/nginx/conf.d --privileged=true 35c43ace9216
    

方法三 使用docker-compose工具进行容器编排(强烈推荐)

nginx:
  images: nginx:latest
  restart: always
  container_name: nginx
  hostname: 'nginx'
  ports:
    - 80:80
  volumes:
    - /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf
    - /mnt/nginx/logs:/var/log/nginx
    - /mnt/nginx/html:/usr/share/nginx/html
    - /mnt/nginx/conf:/etc/nginx/conf.d

在 docker-compose.yml 所在路径下执行该命令 Compose 就会自动构建镜像并使用镜像启动容器

docker-compose up
docker-compose up -d  // 后台启动并运行容器

最后说一句

如果这篇文章对您有所帮助,或者有所启发的话,帮忙关注一下,您的支持是我坚持写作最大的动力,多谢支持。

此外,关注公众号:黑色的灯塔,专注Java后端技术分享,涵盖Spring,Spring Boot,SpringCloud,Docker,Kubernetes中间件等技术。