zoukankan      html  css  js  c++  java
  • docker 使用教程3-(Docker安装Nginx)

    上一篇 Docker安装MySQL https://www.cnblogs.com/easyidea/p/14218131.html 

    本篇文件通过nginx安装的例子,学习如何把容器内部文件拷贝的主机当中反之亦可,学习如何挂载目录/文件到容器当中。

    下一篇  Docker创建java容器运行SpringBoot项目 https://www.cnblogs.com/easyidea/p/14234807.html

    一、基本操纵

    ①、拉取nginx镜像

    docker pull nginx

    执行上面的命令之后输出如下:

    镜像名称 版本 ID 创建时间 大小
    REPOSITORY TAG IMAGE ID CREATED SIZE
    nginx latest ae2feff98a0c 2 weeks ago 133MB

    ②、运行nginx

    docker run --name nginx-test -p 80:80 -d nginx

    参数解释:

    -p 指定端口映射,格式为:主机端口:容器端口
    --name 设置容器名称
    -d 后台运行
    nginx 镜像名称 格式:镜像名称:版本号TAG(有多个版本的同名镜像,需要指定版本)

    ③、查看

    在浏览器上面 输入 IP+端口 即可看到:

    Welcome to nginx!

    二、高级操作

    需求:把主页 Welcome to nginx!改成 Hello Nginx

    思路 修改容器内部的 /usr/shan/nginx/html/index.html 文件

    ①、查看容器

    docker ps -a

    执行上面的命令输出如下:

    容器 ID 镜像名称 启动容器时运行的命令 容器的创建时间 容器的状态 容器的端口 容器名称
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7bef20762a42 nginx "/docker-entrypoint.…" 10 minutes ago Up 10 minutes  0.0.0.0:80->80/tcp nginx-test

    ②、进入容器

    docker exec -it 容器ID bash

    参数说明:

    -i 即使未连接标准输入也保持打开状态
    -t 分配一个伪终端
    bash 通过bash交互式运行

    ③、修改index.html

    容器中的nginx相关文件在如下位置:

    (如果不存在如下目录 ,需要重启容器:docker restart 容器ID)

    conf /etc/nginx/nginx.conf
    index.html /usr/share/nginx/html/index.html
    log /var/log/nginx

     坑来了:

    进入容器之后当使用vim或者其他命令对index.html进行修改的时候发现,这些命令根本不能使用,因为容器提供了nginx的最小运行环境,其他多余的东西都没有,所有只能另寻它法。

    解决方法1

    通过cp命令把容器外的文件拷贝进入容器内部:

    ①、先退出容器

    exit

    ②、创建文件夹及文件

    1、使用 mkdir 创建 html 文件夹。

    2、在html文件夹内部,使用vim创建index.html 文件 内容:Hello Nginx

    ③、复制index.html到容器内部

    格式: docker cp 主机路径  容器ID:容器内部路径

    docker cp ./html 7bef2:/usr/share/nginx

    解释:把当前目录下的html 文件夹(内部包含 index.html 文件)拷贝到容器 /usr/share/nginx 目录下。

    特别说明:cp命令也可以把容器内部的文件考到 主机,只需要把两个路径相互交换即可

    ④、查看

    输入IP+端口即可看到 Hello Nginx

    解决方法2

    可以把主机目录挂载到容器当中

    (这里的路径要用绝对路径)

    docker run --name nginx-test -p 80:80 -d -v /root/html/index.html:/usr/share/nginx/html/index.html nginx

    如果执行命令之后不生效需要重启容器:

    docker restart 容器ID

    这里的逻辑逻辑是这样的:如果是文件挂载就需要重启容器才生效,如果是目录挂载就不需要重启容器

  • 相关阅读:
    Linux
    memory库函数的实现
    剑指Offer面试题1
    Linux
    Linux-配置vim开发环境
    Linux-Find命令
    busybox,alphine,ubuntu,centos/fedore操作系统
    端口映射与容器互联
    docker 数据管理数据卷
    Celery
  • 原文地址:https://www.cnblogs.com/easyidea/p/14230636.html
Copyright © 2011-2022 走看看