GVKun编程网logo

Docker 安装 Nginx(docker安装nginx并挂载目录)

15

关于Docker安装Nginx和docker安装nginx并挂载目录的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于167dockerdocker构建nginx容器系列问题dockerre

关于Docker 安装 Nginxdocker安装nginx并挂载目录的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo、Centos7安装nginx(二)之docker中安装nginx、docker - nginx 安装、Docker Alpine Dockerfile 安装nginx,最小镜像等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

Docker 安装 Nginx(docker安装nginx并挂载目录)

Docker 安装 Nginx(docker安装nginx并挂载目录)

一。拉取 Nginx 镜像

docker pull nginx

二。先安装一个 Nginx 以便拷贝 nginx 配置文件

docker run --name nginxTest  -d nginx

三。从已安装容器中拷贝配置文件

docker cp nginxTest:/etc/nginx/nginx.conf /root/nginx/nginx.conf

   1. cp   // 拷贝命令

   2.  nginxTest:/etc/nginx/nginx.conf   // 容器 nginxTest nginx 配置文件地址

   3. /root/nginx/nginx.conf    // 宿主机用于挂载容器 Nginx 配置的地址

四。删除之前安装的临时镜像

docker stop nginxTest   //先停止容器
docker rm nginxTest       //再删除容器
 

五。切换目录到 nginx 地址

cd ~/nginx        //若无nginx 文件夹新建

六。安装正式容器

docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
1. -p 80:80  //把本机80端口 映射到 docker容器
2. --name mynginx //名称为mynginx
3. -v $PWD/www:/www //把当前目录下的www 文件夹 挂载到 docker的 www 目录
4. -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf //把当前目录下的conf/nginx.conf 挂载到 docker容器的/etc/nginx/nginx.conf文件上
5. -d nginx 以守护进程方式加载镜像 nginx

总结之所以要先安装并把nginx配置文件临时容器拷贝到宿主机,是因为宿主机如果nginx配置文件与容器nginx不一致无法挂载
回报异常:
Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo

167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo

docker构建nginx容器系列问题


background : 最近为小伙伴们筹划docker系列的技术分享,研究了一会docker相关技术, 在此记录一下构建nginx容器时候的坑

1.nginx服务器根目录问题

docker 官方镜像提供的nginx基于debian/jessie平台,其文件结构和ubuntu中的nginx中并不相同

eg:

run一个niginx容器

<span>//80端口被占用,so...</span>
$ sudo docker run <span>-it</span><span>-p</span><span>800</span>:<span>800</span> nginx
$ sudo docker ps 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                   NAMES
<span>1801</span>a32aab54        nginx               <span>"nginx -g ''daemon off"</span><span>2</span> minutes ago       Up <span>2</span> minutes        <span>80</span>/tcp, <span>443</span>/tcp, <span>0.0</span><span>.0</span><span>.0</span>:<span>800</span><span>-&gt;</span><span>800</span>/tcp   berserk_kare
登录后复制

进入容器内部

<span>$ </span>sudo docker exec -it <span>1801</span>a32aab54 /bin/bash
root<span>@1801a32aab54</span><span>:/</span><span># </span>
登录后复制

查看nginx目录

<span># cd /etc/nginx/</span>
conf<span>.d</span>/         koi-utf         mime<span>.types</span>      nginx<span>.conf</span>      uwsgi_params    
fastcgi_params  koi-win         modules/        scgi_params     win-utf  
登录后复制

可以看到不仅没有熟悉的 /sites-available,也没有 /sites-enabled

继续查看nginx配置

<span># cat /conf.d/default.conf</span><span>server</span> {
    listen       <span>80</span>;
    server_name  localhost;

    <span>#charset koi8-r;</span><span>#access_log  /var/log/nginx/log/host.access.log  main;</span>    location / {
        root   /usr/share/nginx/html;
        <span>index</span><span>index</span>.html <span>index</span>.htm;
    }

    <span>#error_page  404              /404.html;</span><span># redirect server error pages to the static page /50x.html</span><span>#</span>
    error_page   <span>500</span><span>502</span><span>503</span><span>504</span>  /<span>50</span>x.html;
    location = /<span>50</span>x.html {
        root   /usr/share/nginx/html;
    }
    <span>#...省略php-fpm配置,好长..</span>
}
登录后复制

根目录配置: root /usr/share/nginx/html;

测试

<span># cd /usr/share/nginx/html</span><span># touch index.html</span><span># echo "test nginx in docker" &gt;index.html</span>
登录后复制

php-fpm配置相关

'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了167 docker docker构建nginx容器系列问题,包括了docker,nginx方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Centos7安装nginx(二)之docker中安装nginx

Centos7安装nginx(二)之docker中安装nginx

一、简介

本人最近对k8s+docker容器云、微服务进行一些调研,尝试着在docker中安装Nginx。先来安利docker一波,真是神器,但是对于docker的有点本人将在docker的相关文章中介绍。

  • 需求:做自动化运维的同学可能需要测试自己写完的shell脚本,docker是一个比虚拟机快照更方便的选择。只需要启动一个docker容器,将写好的脚本以挂载文件的方式,在docker容器中运行即可(copy进去再执行也可以)。
  • 环境: 虚拟机+docker
  • 优点:当shell脚本有问题的时候,直接kill掉docker容器,修改完shell后重启一个容器再运行即可。
  • 目的:为了练习Nginx的安装配置。由于docker使用Linux内核namespace\cgroup等隔离技术,近似等同于虚拟机(有些隔离做的不彻底,不能完全等同于),在docker中练习安装Nginx比跟在虚拟机上安装相差无异,但开销更少。如果仅仅是为了在docker中使用Nginx,只需要直接拉取Nginx镜像再开启容器即可。

二、安裝过程

在docker中安装Nginx的步骤跟上一篇文章Centos7安装nginx(一)大致相同。需要注意的是在docker中使用systemctl必须以特殊的方式启动容器,否则会报错Docker: Failed to get D-Bus connection: Operation not permitted

docker中使用systemctl报错

安装过程主要分为二部分:

  • 启动容器
  • 安装Nginx
    安装部分参考文章Centos7安装nginx(一),本文重点讲解如何启动docker容器,避免在配置systemctl来管理Nginx时出现报错信息。

1. 启动容器

  • 容器的正确启动姿势
  1. docker pull centos:7(拉取镜像)

    拉取镜像

  2. docker images(查看镜像具体信息)

    镜像信息


    步骤3中的镜像版本要与拉去下来的版本信息对应
  3. docker run -d --name Nginx --privileged=true docker.io/centos:7 /usr/sbin/init(以后台运行的方式启动容器)

    以后台的方式启动容器

  4. docker exec -it Nginx /bin/bash(进入容器)

    以交互的方式进入容器

  • docker容器中使用systemctl报错总结
  1. Docker: Failed to get D-Bus connection: Operation not permitted

    • 原因
      1. 这个的原因是因为dbus-daemon没能启动。启动容器时,带上参数--privileged=true、将你的CMD或者entrypoint设置为/usr/sbin/init即可(两者缺一不可)。会自动将dbus等服务启动起来。
    • 解决办法:
      • 在启动容器时添加参数
        • docker run -d --name centos7 --privileged=true centos:7 /usr/sbin/init
        • docker exec -it centos7 /bin/bash

          docker容器中成功使用systemctl

2. 安装Nginx

参考文章Centos7安装nginx(一)

三、总结

本文主要记录了docker中使用systemctl的报错问题,为下一篇文章Centos7安装nginx(三)之shell脚本自动化安装nginx,通过shell自动化安装Nginx做准备。文章可能在编辑过程中,由于个人疏忽、不同版本markdown解析器不兼容等原因导致字符书写错误,导致安装失败。本文属于原创,若有引用请注明出处。若有疑问或错误,欢迎各位指出,可以评论或者跟本人联系。

docker - nginx 安装

docker - nginx 安装

# docker pull nginx:1.15.12


docker run \
 --name nginx \
 -p 443:443 \
 -p 80:80 \
 -v /usr/local/nginx/html/:/usr/share/nginx/html:ro \
 -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
 -v /usr/local/nginx:/var/run \
 -v /usr/local/nginx/logs/:/var/log/nginx/:rw \
 -v /usr/local/nginx/ssl/:/ssl/:ro \
 -v /usr/local/nginx/include:/etc/nginx/include \
 -d nginx:1.15

 

vim

:set fileformat=unix

Docker Alpine Dockerfile 安装nginx,最小镜像

Docker Alpine Dockerfile 安装nginx,最小镜像

Docker Alpine Dockerfile 安装Nginx,最小镜像

 

FROM alpine
MAINTAINER will 

## 将alpine-linux:apk的安装源改为国内镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

## 安装需要编译Nginx扩展
## 安装正则表达式pcre模块,Nginx正则匹配URL
RUN apk add wget gcc g++ make && \ 
    cd /home && \
    wget "https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz" && \
    tar xvf pcre-8.44.tar.gz && \
    wget "http://Nginx.org/download/Nginx-1.18.0.tar.gz" && \
    tar xvf Nginx-1.18.0.tar.gz

## 编译Nginx
RUN cd /home/Nginx-1.18.0 && \
    ./configure --prefix=/usr/local/Nginx --with-pcre=/home/pcre-8.44 --without-http_gzip_module && \
    make && make install && \
    ln -s /usr/local/Nginx/sbin/Nginx /usr/sbin/ && \
    mkdir -p /usr/local/Nginx/conf/vhost/
    rm -rf /home/*

## 设置工作目录
workdir /var/www

## 启动Nginx
CMD ["Nginx","-g","daemon off;"]

EXPOSE 80

 

关于Docker 安装 Nginxdocker安装nginx并挂载目录的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo、Centos7安装nginx(二)之docker中安装nginx、docker - nginx 安装、Docker Alpine Dockerfile 安装nginx,最小镜像等相关内容,可以在本站寻找。

本文标签: