Docker学习之启动容器并进行目录挂载

  • 简介
  • 适用场景
  • 语法说明
  • 单目录挂载
  • 多目录挂载
  • 只读目录挂载
  • 使用示例
  • 其他
  • 挂载的本地目录在容器中没有执行权限
  • 参考资料


简介

  • 内容介绍
    在创建容器的时候,将宿主机的目录与容器内的目录进行映射,从而实现宿主机和容器目录的双向数据自动同步

适用场景

  • 场景介绍
    通过容器目录挂载,能够轻松实现代码上传,配置修改,日志同步等需求

语法说明

单目录挂载

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集群启动

windows docker 挂载文件变文件夹 docker挂载单个文件到目录_centos