简介
-
内容介绍
在创建容器的时候,将宿主机的目录与容器内的目录进行映射,从而实现宿主机和容器目录的双向数据自动同步。
适用场景
-
场景介绍
通过容器目录挂载,能够轻松实现代码上传,配置修改,日志同步等需求
语法说明
单目录挂载
docker run -it -v /宿主机目录:/容器目录 镜像名:版本号
多目录挂载
docker run -it -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名:版本号
只读目录挂载
docker run -it -v /宿主机目录:/容器目录:ro 镜像名:版本号
使用示例
-
运行自定义镜像容器
docker run -it -p 8070:8080 -v /root/software:/software --privileged=true docker.io/centos /bin/bash
-it 创建一个交互式的容器
-p 映射端口8070 本机的端口 映射的容器的端口
-v 挂载目录/root/software 本地目录 /software容器目录,在创建前容器是没有software目录的,docker 容器会自己创建
–privileged=true 关闭安全权限,否则你容器操作文件夹没有权限
–容器名称
–CMD
-
查看容器运行情况
docker ps -a
-
进入容器
# 可以是容器名称,也可以使用container id docker exec -it 容器名称 /bin/bash # 退出容器并关闭容器 ctrl+c # 退出不关闭容器 ctrl+p+q
其他
挂载的本地目录在容器中没有执行权限
-
privileged参数
如果你同步的是多级目录,可能会出现权限不足的提示;
这是因为Centos7中的安全模块selinux把权限禁掉了,我们需要添加 --privileged=true 来解决挂载的目录没有权限的问题
-
实现方式
docker容器启动
# docker run -d --name centos7 --privileged=true centos:7 /usr/sbin/init
k8s集群启动
参考资料
-
docker容器目录挂载
https://www.cnblogs.com/makalochen/p/14241052.html
-
docker 启动,端口映射,挂载本地目录
https://www.cnblogs.com/YasinXiao/p/7736075.html
-
怎么以特权模式运行容器
https://cloud.tencent.com/developer/article/1549664