容器数据挂载到物理机上的三种方式
1 ) 实名(指定路径)挂载数据卷
docker run -v 物理机目录:容器内目录 镜像id
- 示例
docker run -it -d --name mynginx_p_v -p 82:80 -v /root/www:/usr/share/nginx/html nginx
- 此时访问 会报 403 forbidden
- 因为 物理机上的 root/www 中是没有东西的,所以403
- touch root/www/index.html 并写一些东西进去
- 再次访问就行了
- 查看容器内信息:
docker inspect 容器Id | grep www
- 这种用法的最多的,清晰方便的管理
2 )匿名(自动分配)挂载数据卷
docker run -v 容器内目录 镜像ID
docker volume ls
可以看到 数据卷的列表docker inspect 容器ID | grep volume
可查看到当前数据卷在哪个目录中- 这种在具体项目中,也可以使用,也就是对存储位置要求不严格
3 )具名挂载数据卷
docker run -v 卷名称:容器内目录 镜像ID
- 这个和匿名挂载非常相似
- 这个卷名称是指定的
docker volume ls
- 可看到具名挂载的数据卷信息
docker inspect 容器ID | grep volume
- 可看到这个具名数据卷的具体信息
- 这种基于卷名称自主设定的数据卷挂载比匿名挂载的好处是名称上的简洁和好认
- 匿名挂载产生的是一长串的随机hash字符串
以上,三种方式挂载后,在物理机或容器内操作,都会互相同步数据
运行容器时传递的环境变量
docker run -e 变量名=变量值 镜像ID/镜像NAME
- 举例
docker run -it centos printenv
这时候打印的都是系统变量docker run -it -e TEST_ENV=sssss centos printenv
这样就多打印出了新加的这个变量docker run -it -e TEST_ENV=sssss -e NNN_ENV=dddd centos printenv
这样可以传递多个环境变量
- 习惯上,传递的变量名都是大写