zoukankan      html  css  js  c++  java
  • Docker容器挂载文件(转载)

    一、Docker pull 安装 Nginx 

        1、查看docker仓库中的 nginx 命令

    
    # 使用 docker search 命令搜索存放在 Docker Hub 中的镜像
    docker search nginx
    

        以看到下图所示的信息:

            

        2、为选定需要pull到系统中的官方 Nginx 镜像

    # docker pull nginx -------- nginx 为选定需要pull到系统中的官方 nginx 镜像
    
    docker pull nginx

            

        整个pull过程需要花费一些时间,耐心等待。

        若见下图证明pull成功。 

            

    二、查看并启动Docker 镜像

        1、列出已下载的镜像

    # 使用 docker images 命令即可列出已下载的镜像
    
    docker images

        执行命令后,可看到类似于如下的表格:

            

        2、列出运行中的容器

    
    # 使用 docker ps 命令即可列出运行中的容器
    docker ps
    
    
    # 使用 docker ps -a 命令即可列出所有(包括已停止的)的容器
    docker ps -a
    
    

        执行命令后,可看到类似于如下的表格:

            

        可以发现,目前没有运行的 nginx 容器。故,接下来我们新建并启动一个 nginx 容器。

            

    三、启动容器,部署nginx并修改配置文件

        1、启动跑个静态网页,测试下 nginx 容器

    # 启动一个名为nginx81(名字自己根据需求起名字,一般见名知意即可) 的容器 
    docker run --name nginx81 -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html nginx
    
    
    # 默认容器对这个目录有可读写权限,可以通过指定ro,将权限改为只读(readonly)
    # docker run --name my-nginx -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html:ro -d nginx

            

        访问 http://Docker宿主机IP:指定的Docker宿主机端口 ,可以访问说明

            

        2、部署nginx 项目并修改配置文件

        一般情况下docker启动时进行配置,只要把配置文件的目录挂载出来就可以,但是nginx却是先加载一个主配置文件nginx.conf,在nginx.conf里再加载conf.d目录下的子配置文件(一般最少一个default.conf文件)。 

    # 普通的挂载方式
    docker run --name mynginx2 --mount source=/var/www,target==/usr/share/nginx/html,readonly 
    --mount source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx

        docker 启动 nginx 加载自定义配置:

    
    # 1. 第一个“-v”,是项目位置,把项目放到挂载到的目录下即可 
    # 2. 第二个“-v”,是挂载的主配置文件"nginx.conf",注意"nginx.conf"文件内有一行 
    #    "include /etc/nginx/conf.d/*.conf;" ,
    #    这个include指向了子配置文件的路径,此处注意include后所跟的路径一定不能出错
    # 3. 第三个“-v”,把docker内子配置文件的路径也挂载了出来,注意要与 “2.” 中include指向路径一致
    # 4. nginx.conf是挂载了一个文件(docker是不推荐这样用的),conf.d挂载的是一个目录
    
    docker run 
      --name nginx81 
      -d -p 81:80 
      -v /usr/docker/nginx81/html:/usr/share/nginx/html 
      -v /etc/docker/nginx81/nginx.conf:/etc/nginx/nginx.conf:ro 
      -v /etc/docker/nginx81/conf.d:/etc/nginx/conf.d 
      nginx

        准备挂载的 nginx.conf :

    
    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }
    

            准备挂载的 default.conf :

    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        location /api{
            proxy_pass http://192.168.1.1:9999/api;
            # access_log "logs/test.log";
        }
       
    
    
    }
    

        

        上述的依然不够灵活,可以直接进入容器操作:

        1) 启动

    # 启动一个名 nginx81 的 nginx 容器
    docker run --name nginx81 -d -p 81:80 -v 
    /usr/docker/nginx81/html/:/usr/share/nginx/html:ro -d nginx
    
    # 添加日志记录启动
    docker run --name nginx81 -d -p 81:80 -v /usr/docker/nginx81/html/:/usr/share/nginx/html:ro 
     -v /logs:/var/log/nginx -d nginx

            

        2)拷贝容器内的配置文件到本地,进行个性化配置等操作

    
    docker cp nginx:/etc/nginx/nginx.conf /usr/docker/nginx81/nginx.conf
    
    

        3)重新指定配置文件启动

    
    docker run --name nginx81 -d -p 81:80 -v /usr/docker/nginx81/html:/usr/share/nginx/html:ro 
    -v $PWD/logs:/var/log/nginx -v /usr/docker/nginx81/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx

        4)进入容器

    
    sudo docker exec -it d3a86da6fad1 /bin/bash
    
    # 退出容器:Ctrl+P+Q

  • 相关阅读:
    【转】JavaScript里的this指针
    userscript.user.js 文件头
    css clearfix
    callback调用测试
    【个人】IIS Express 配置
    Js中 关于top、clientTop、scrollTop、offsetTop的用法
    【设为首页】/【收藏本站】
    JQuery插件开发
    Google Ajax Library API使用方法(JQuery)
    并发操作问题
  • 原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/11348117.html
Copyright © 2011-2022 走看看