如何为已经启动的docker容器挂载目录?

docker容器挂载目录

#拉取镜像 docker pull registry.cn-beijing.aliyuncs.com/test/ovn-gw:22.06.0-ubuntu1 
#查看iamges 
docker images
REPOSITORY                                      TAG               IMAGE ID       CREATED      SIZE
registry.cn-beijing.aliyuncs.com/test/ovn-gw   22.06.0-ubuntu1   40624ba13f79   8 days ago   862MB 
#运行容器,并挂载需要的目录-v,赋予权限--privileged,(host下的/usr/bin有python,容器没有,所以找了一个在path下的空目录挂载) 
docker run -itd --name=gw --net=host --privileged -v /usr/bin:/usr/local/bin -v /tmp:/tmp -v /dev:/dev -v /root:/root -v /home:/home -v /var/run/openvswitch:/var/run/openvswitch -v /etc/openvswitch:/etc/openvswitch -v /lib:/lib registry.cn-beijing.aliyuncs.com/test/ovn-gw:22.06.0-ubuntu1 
#查看容器 
docker ps
CONTAINER ID   IMAGE                                                           COMMAND       CREATED          STATUS          PORTS     NAMES
ae5e437dbe36   registry.cn-beijing.aliyuncs.com/test/ovn-gw:22.06.0-ubuntu1   "/bin/bash"   34 minutes ago   Up 34 minutes             gw

#docker run参数解释
docker run -itd --name=gw --net=host --privileged -v /usr/bin:/usr/local/bin -v /tmp:/tmp -v /dev:/dev -v /root:/root -v /home:/home -v /var/run/openvswitch:/var/run/openvswitch -v /etc/openvswitch:/etc/openvswitch -v /lib:/lib registry.cn-beijing.aliyuncs.com/test/ovn-gw:22.06.0-ubuntu1 
--net=host: 使用主机网络模式,容器将与主机共享网络命名空间 
--privileged: 提供容器内的特权访问,允许容器对主机的一些功能进行更高级别的访问 
-v /usr/bin:/usr/local/bin: 将主机上的/usr/bin目录挂载到容器内的/usr/local/bin目录,实现主机和容器之间的文件共享。

如何为已经启动的docker容器挂载目录?

上述已经使用docker run起了一个容器,发现没有modprobe模块,需要下载

但是容器没有网络,无法下载,而主机上有modprobe,which modprobe找到模块路径,直接挂载

modprobe在/usr/sbin下

#找到容器所在位置
root@server007-gw:~# docker info |grep Root
 Docker Root Dir: /var/lib/docker
#停止容器
root@server007-gw:~# docker stop gw
#停止docker
root@server007-gw:~# systemctl stop docker
#修改容器中的config.v2.json文件,找到MountPoints,添加/usr/sbin的映射,可以复制其他的修改即可,可使用python的json工具格式化成json形式方便查看:%!python3 -m json.tool
root@server007-gw:/var/lib/docker/containers/cc4bba99579a80ba531712641f632ba6d57d565564b255b69e85047c3425ba50# vim config.v2.json
{
                ......
    "MountPoints": {
                ......
            "/usr/local/sbin": {
                "Source": "/usr/sbin",
                "Destination": "/usr/local/sbin",
                "RW": true,
                "Name": "",
                "Driver": "",
                "Type": "bind",
                "Propagation": "rprivate",
                "Spec": {
                    "Type": "bind",
                    "Source": "/usr/sbin",
                    "Target": "/usr/local/sbin"
                 },
                "SkipMountpointCreation": false
            },
                ......
}
#修改hostconfig.json,在Binds中添加映射,"/usr/sbin:/usr/local/sbin"
root@server007-gw:/var/lib/docker/containers/cc4bba99579a80ba531712641f632ba6d57d565564b255b69e85047c3425ba50# vim hostconfig.json
{
    "Binds": [
        "/etc/openvswitch:/etc/openvswitch",
        "/lib:/lib",
        "/usr/bin:/usr/local/bin",
        "/usr/sbin:/usr/local/sbin",
        "/tmp:/tmp",
        "/dev:/dev",
        "/root:/root",
        "/home:/home",
        "/var/run/openvswitch:/var/run/openvswitch"
                ......
}

#启动docker和容器
root@server007-gw:~# systemctl start docker
root@server007-gw:~# docker start gw
#进入容器查看是否挂载上,
root@server007-gw:~# docker exec gw ls /usr/local/sbin
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一个长不大的孩子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值