Docker 启动挂载Nginx并对启动后的容器操作

一、启动并挂载Nginx容器

1. 搜索镜像

docker search nginx

2. 拉取镜像

docker pull nginx:latest

3. 创建要挂载的目录

mkdir -p /home/kevin/project1/nginx/{conf,logs}

4. 启动临时的Nginx容器【目的是为了获取里面的文件】

docker run -d -P --name nginx1 nginx

5. 从容器nginx1中拷贝nginx的配置文件【最好不用容器名】

# docker cp 容器id:容器内路径 目的主机路径
docker cp nginx1:/etc/nginx/nginx.conf /home/kevin/project1/nginx/conf/nginx.conf
docker cp nginx1:/etc/nginx/conf.d/default.conf /home/kevin/project1/nginx/conf/default.conf
docker cp nginx1:/usr/share/nginx/html /home/kevin/project1/nginx

docker rm -f nginx1

ps:拷贝完后,可以删掉临时的Nginx容器

docker rm -f nginx1

6. 启动容器,并挂载

这里挂载出includ_conf,是为了给nginx创建可以引入的配置文件

注意:启动的nginx中原本不含有includ_conf路径,通过在启动时挂载,容器会自动创建该路径
【在conf/nginx.conf文件中,server下的location中的root里设置,前端页面的文件路径(这个路径一定要挂载)】

docker run -d --restart=always \
--privileged=true \
--name nginx01 \
-p 8081:80 \
-p 8082:8082 \
-v /home/kevin/project1/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/kevin/project1/nginx/includ_conf:/etc/nginx/includ_conf \
-v /home/kevin/project1/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf \
-v /home/kevin/project1/nginx/html:/usr/share/nginx/html \
-v /home/kevin/project1/nginx/logs:/var/log/nginx  \
nginx

解释:这里对外暴露了8081和8082两个端口,但Nginx配置中只有默认的80;8082在Nginx中并未配置,这个是预留给后续启动的项目使用,到时只需要在nginx.conf中配置8082端口即可

7. 判断Nginx是否可用

在服务器上输入命令,查看是否打开欢迎界面
或者在公网上打开页面查看

curl localhost:8081

二、对已经启动的容器进行操作(-p,-v)

重要的事情反复说:对已经启动的容器操作前一定要先停止dokcer

1. 暴露新的端口

查看现在容器

docker inspect nginx01

找到容器的端口情况
(第一幅图:对应当前容器的hostconfig.json;第二幅图:对应当前容器的config.v2.json)
在这里插入图片描述
在这里插入图片描述

1.1 停止docker(一定要先停止dokcer,不然直接修改配置文件不会生效)

systemctl stop docker

1.2 修改这个容器的config.v2.json文件中的端口

配置文件路径

cd /var/lib/docker/containers/容器id全称
vim config.v2.json

在这里插入图片描述

目的:在容器中暴露出8083端口
# 修改前
"ExposedPorts":{"80/tcp":{},"8082/tcp":{}}

# 修改后
"ExposedPorts":{"80/tcp":{},"8082/tcp":{},"8083/tcp":{}}

1.3 修改这个容器的hostconfig.json文件中的端口

配置文件路径

cd /var/lib/docker/containers/容器id全称
vim hostconfig.json

在这里插入图片描述
前一个数字是容器端口, 后一个是宿主机端口

目的: -v 8083:8083
# 修改前
"PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8081"}],"8082/tcp":[{"HostIp":"","HostPort":"8082"}]}

# 修改后  添加"8083/tcp":[{"HostIp":"","HostPort":"8083"}]
"PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8081"}],"8082/tcp":[{"HostIp":"","HostPort":"8082"}],
"8083/tcp":[{"HostIp":"","HostPort":"8083"}]}

1.4 重启 docker服务

systemctl restart docker

1.5 查看配置项已经修改成功

docker inspect nginx01

2. 挂载一个新的目录

2.1 停止docker(一定要先停止dokcer,不然直接修改配置文件不会生效)

systemctl stop docker

2.2 修改这个容器的config.v2.json文件中的端口

配置文件路径

cd /var/lib/docker/containers/容器id全称
vim config.v2.json

对标有注释的地方,修改自己要挂载的目录就可以

例如:
新挂载的宿主机目录		/home/kevin/project1/nginx/includ_conf_test
新挂载的容器目录		/etc/nginx/includ_conf_test
{
    ......
	
	"MountPoints": {
		......,
		"/home/kevin/project1/nginx/includ_conf_test": {	# 宿主机目录
			"Source": "/home/kevin/project1/nginx/includ_conf_test", # 宿主机目录
			"Destination": "/etc/nginx/includ_conf_test", # 容器目录
			"RW": true,
			"Name": "",
			"Driver": "",
			"Type": "bind",
			"Propagation": "rprivate",
			"Spec": {
				"Type": "bind",
				"Source": "/home/kevin/project1/nginx/includ_conf_test", # 宿主机目录
				"Target": "/etc/nginx/includ_conf_test"  # 容器目录
			},
			"SkipMountpointCreation": false
		}
	},
	......
}

2.3 修改这个容器的hostconfig.json文件中的端口

配置文件路径

cd /var/lib/docker/containers/容器id全称
vim hostconfig.json

前一个宿主机目录, 后一个是容器目录
把要挂载的目录,照着下面的样式写就可以

{
	"Binds": [
		......,
		"/home/kevin/project1/nginx/includ_conf_test:/etc/nginx/includ_conf_test"
		# 新挂载宿主机目录:新挂载容器目录
	],
	......
}

2.4 重启 docker服务

systemctl restart docker

2.5 查看配置项已经修改成功

docker inspect nginx01
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值