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

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

原文地址:https://www.cnblogs.com/easyidea/p/14230636.html