docker 构建nginx
1、查看可用的 Nginx 版本
docker search nginx
2、取最新版的 Nginx 镜像
这里我们拉取官方的最新版本的镜像:
$ docker pull nginx:latest
3、查看本地镜像
使用以下命令来查看是否已安装了 nginx:
$ docker images
4、运行容器
安装完成后,我们可以使用以下命令来运行 nginx 容器:
$ docker run --name nginx -p 8080:80 -d nginx
参数说明:
--name nginx:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
5、安装成功
最后我们可以通过浏览器可以直接访问 8080 端口的 nginx 服务:
6,进入Nginx容器当中
docker exec -it nginx /bin/bash
命令详解:
# docker exec 在运行的容器中执行命令
# -i 以交互模式运行容器,通常与 -t 同时使用;例如-it
# -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;例如-it
# nginx 容器名
# /bin/bash 其实就是表示载入容器后运行bash(命令语言解释程序), 因为docker中必须要保持一个进程(运行的程序)的运行,要不然整个容器就会退出,所以说,bash就担任起了docker中运行的那个进程的角色!
#而/bin/bash则是bash在linux下的位置
7, 在容器中查询出nginx的相关配置文件存放位置
whereis nginx
8 ,退出容器,回到本地linux系统
exit
9 .本地创建管理目录
mkdir /app/nginx/conf/
mkdir /app/nginx/log/
mkdir /app/nginx/html
10,将容器中的相应文件copy到刚创建的管理目录中
docker cp c4b5245b4cfb:/etc/nginx/nginx.conf /app/nginx/conf/nginx.conf
docker cp c4b5245b4cfb:/etc/nginx/conf.d /app/nginx/conf/conf.d
docker cp c4b5245b4cfb:/usr/share/nginx/html /app/nginx/
11,停止并移除Nginx容器
docker stop nginx #停止容器,容器id可不用写全,只要写到能识别到唯一一条就可以
docker rm nginx #移除容器
12,再次启动容器并作目录挂载
docker run -p 8080:80 --name nginx --restart=always -v /app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /app/nginx/conf/conf.d:/etc/nginx/conf.d -v /app/nginx/log:/var/log/nginx -v /app/nginx/html:/usr/share/nginx/html -v /etc/localtime:/etc/localtime:ro
--privileged=true -d nginx
docker run -p 8084:80 --name nginx_zhls --restart=always -v /app/nginx/nginx.conf:/etc/nginx/nginx.conf -v /app/nginx/conf.d:/etc/nginx/conf.d -v /app/nginx/log:/var/log/nginx -v /app/nginx/html:/usr/share/nginx/html -v /etc/localtime:/etc/localtime:ro --privileged=true -d nginx
-v /etc/localtime:/etc/localtime:ro
这个命令的作用是将宿主机上的时区设置文件(/etc/localtime
)挂载到Docker容器中相同的位置,使容器能够使用与宿主机相同的时区设置。
具体来说,这个命令的各部分意义如下:
-v
:这是Docker命令用来指定挂载卷的标志(Volume)。/etc/localtime
:这是宿主机上时区文件的路径。该文件包含了当前时区的信息。:/etc/localtime
:这是容器内部的挂载点,即容器内与宿主机/etc/localtime
文件对应的路径。:ro
:这表示以只读方式挂载(Read-Only)。容器可以读取该文件,但无法修改它,这样可以防止容器的操作影响宿主机的时区设置。
这样做的好处是保证容器内的应用程序可以正确处理与时区相关的操作,例如记录日志的时间戳、执行定时任务等。这对于需要时区一致性的应用程序来说非常重要。例如,如果你在上海运行宿主机,而你的容器也应当使用东京的时区,通过这种方式挂载/etc/localtime
,你的容器将会自动采用上海的时区,而无需在容器内单独配置时区。