Docker(四)、运行Nginx

Docker 运行nginx

运行了hello world 还不是我们的目标,这章我们要来学习运行一个静态的页面

一、获取Nginx

获取镜像
docker pull nginx

二、启动镜像

方法一:指定端口映射

本机80端口 映射 容器的80端口,-d 是后台运行的意思,
# --name 是给它指定一个名字,我们这里给它指定的名字叫mynginx(不指定时docker会随机给它起一个名字)
docker run -d --name mynginx -p 80:80 nginx

方法二:随机端口映射

本机随机指定一个端口映射容器的nginx 启动端口,-d 是后台运行的意思
docker run -d --name mynginx -P 80:80 nginx

三、浏览器访问

nginx 默认启动的端口为 80

通过命令docker ps 或者 docker ps | grep nginx,查看端口的映射情况

浏览器访问:http://localhost/ 或者 curl http://localhost/

四、修改index.html 页面

方法一:进入容器内部修改index.html 页面

这就需要我们学新的一个命令docker exec了。格式如下:
# 参数-i是与用户交互式 -t 可以理解为一个伪终端,具体的可以通过 docker exec --help 命令来查看exec 的参数详解
docker exec -it mynginx bash

运行上面的命令之后我们就进到了运行nginx 容器里了,我们要修改的index页面的路径为/usr/share/nginx/html/index.html
当我们想使用vim 对它进行修改的时候,发现没有vim 这个命令。所以我们需要安装vim,运行如下命令(测试可以这么干)

# 更新源,然后安装vim,然后就可以编辑了。
apt-get update && apt-get install -y vim

接下来就可以修改了,想退出容器只需要运行exit 命令即可

方法二:映射页面目录(推荐)

1、首先我们新建一个目录,并进入该目录,建立一个html的子目录
# -p 是递归创建
mkdir -p docker-nginx/html
cd docker-nginx
2、在html目录下创建一个index.html页面
vim html/index.html

# 编辑内容如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Hello Docker</title>
</head>
<body>
<h1>Hello Docker!!!</h1>
</body>
</html>
3、运行容器

在运行容器之前我们要把刚刚运行的容器停止掉,以为我们需要用80来启动它(如果你不要80端口,可以不用停止它)

# 停止刚才运行的容器,mynginx 就是我们刚才命名的
docker stop mynginx

# 这里是把这个容器删除掉,也可以不删掉,但是下面我下面又使用了mynginx,
docker rm mynginx

# 启动本地映射html 页面的容器
docker run -d -p 80:80 --name mynginx -v "$PWD/html":/usr/share/nginx/html docker.io/nginx

打开浏览器,访问 http://localhost/,应该就能看到 Hello Docker!!! 了
我们可以在我们的主机上修改 index.html 的内容,然后刷新浏览器,看是否浏览器也更新了。

五、挂载配置文件

1、拷贝nginx容器的配置文件

# 别忘了后面有一个 `.`  这个点表示当前目录
docker cp mynginx:/etc/nginx .

2、改名

执行完成后,当前目录应该多出一个nginx子目录。然后,把这个子目录改名为conf

mv nginx conf

3、停止我们刚才运行的容器

docker stop mynginx

4、重新启动

我们的容器名字这里得改一下 mynginx 刚才我们已经用了

docker run -d --name mynginx2 -v "$PWD/html":/usr/share/nginx/html -v "$PWD/conf":/etc/nginx -p 80:80 docker.io/nginx

5、修改配置

只需要修改 conf/conf.d/default.conf文件即可

-------------本文结束 感谢您的阅读-------------