【Docker 学习五】Docker安装nginx挂载

1.搜索镜像
2.下载镜像
3.运行测试

下载Nginx镜像

命令 描述
docker pull nginx 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest )
docker pull nginx:xxx 下载指定版本的Nginx镜像 (xxx指具体版本号)
1
2
3
docker pull nginx
# REPOSITORY TAG IMAGE ID CREATED SIZE
# nginx latest eea7b3dcba7e 8 days ago 187MB

/home/dockers/nginx目录下建立3个以下文件夹

1
mkdir -p /home/dockers/nginx/{log,conf,html}

执行创建并运行nginx容器的命令

创建临时nginx

因为之前创建好了三个文件夹,但文件却没有创建一些,所以咱们需要创建临时nginx之后把所需的文件拷贝到本地即可

1
docker run -d --name nginx-test nginx

拷贝容器的挂载文件

conf目录

1
docker cp nginx-test:/etc/nginx/conf.d /home/dockers/nginx/conf

nginx.conf文件

1
docker cp nginx-test:/etc/nginx/nginx.conf /home/dockers/nginx/conf/nginx.conf

html/index.html 文件

1
docker cp nginx-test:/usr/share/nginx/html/index.html /home/dockers/nginx/html/index.html

删除临时nginx

1
docker rm -f nginx-test

创建挂载nginx

关于暴露端口方法,下面是一些需要配置的内容做参考

本地端口 容器端口 类型
3344 80 tcp

建议最好容器和本地端口配置为相同的

关于挂载目录方法,下面是一些需要配置的内容做参考

文件/文件夹 挂载路径 类型
/home/dockers/nginx/conf/conf.d /etc/nginx/conf.d rw
/home/dockers/nginx/conf/nginx.conf /etc/nginx/nginx.conf rw
/home/dockers/nginx/html/index.html /usr/share/nginx/html/index.html rw
/home/dockers/nginx/log /var/log/nginx rw

三个文件夹是需要提前都在本地上配置好的。

1
2
3
4
5
6
7
8
9
10
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器内部端口
docker run -d -p 3344:80 --name nginx01 \
-v /home/dockers/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/dockers/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/dockers/nginx/html/index.html:/usr/share/nginx/html/index.html \
-v /home/dockers/nginx/log:/var/log/nginx \
nginx
# 558ef7bb8d24e6e02221cdf66be56e318de2b9b5effe7644378472c79b6dda80

查看nginx容器

1
2
3
docker ps
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 558ef7bb8d24 nginx "/docker-entrypoint.…" 45 seconds ago Up 43 seconds 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01

测试访问网址

1
2
3
4
5
6
7
curl localhost:3344
# <!DOCTYPE html>
# <html>
# <head>
# <title>Welcome to nginx!</title>
# <style>
# ...

进入nginx容器

1
2
docker exec -it nginx01 /bin/bash
# 558ef7bb8d24

查看nginx相关的目录路径

1
2
root@558ef7bb8d24:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx

端口暴露的概念

服务器IP或者域名:3344 测试nginx

问题:如果访问不了网站,记得给防火墙设为开放,回来刷新网站

测试修改本地文件,和容器是否同步了

打开本地nginx的默认文件index.html,把Welcome to nginx!改成Hello World Nginx!

1
vi /home/dockers/nginx/html/index.html

注意:如果挂载文件,在宿主机上对文件修改不会同步到容器中
必须将nginx容器重启才能同步将修改的配置信息同步到容器中
或者使用docker --mount代替-v就可以实现实时更新

重新运行容器

1
docker restart 558ef7
1
2
3
4
curl localhost:3344
# ...
# <h1>Hello World Nginx!</h1>
# ...

可以看到Hello World Nginx!被修改了,说明同步成功了