前2篇都是相对于docker的运行环境Linux而来的,但是我们现实环境中,开发环境中都是使用的是Windows,所有很有必要学会在Windows下挂载容器,
如果你自己的机器也是
Linux
,那就不需要担心什么了,直接和上面一样,但是你如果是
Windows
系统,那么就有点麻烦了,具体怎么操作,看一下我的案例吧。
首先
docker
容器的
Linux
对
Windows
支持并不是很高,他只对
C:\Users
目录下进行挂载,其他目录都没有办法挂载,除非用
VirtualBox
修改这个虚拟机的共享目录设定,否则在虚拟机里只能看到
C:\Users
以下的文件
可以看到
Linux
系统只有关联到本地
C:\Users
这个目录,其他的目录都找不到,那么我们就在这个目录下进行挂载操作
docker run -d -p 8888:8080 -v /c/Users/systemDir:/usr/local/log balance
我们看到已经能够完美的挂载了,其他实验方法可以自行测试。
其实Windows下最主要的是要找对位置,其他的逻辑和之前的是一样的,还是Windows下的docker是在一个Linux虚拟机环境下运行的,这一点非常重要!
volume/
数据卷容器
(--volumes-from)
创建的方式所谓有一点不同,就是要在挂载的文件下创建一个数据卷容器,专门用户其他容器挂载,但是操作起来和挂载差不多,就是多了一个创建
db.properties
文件
比如在挂载目录
/data
下面创建一个
/data/dbdata
,然后再在里面创建一个
db.properties
文件
首先启动一个容器
docker run -it -d -p 8888:8080 -v /data/dbdata --name dbdata balance
在
/data/dbdata
,然后再在里面创建一个
db.properties
文件
然后再起一个容器
docker run -it -d -p 9999:8080 --volumes-from dbdata jpress
使用命令
docker inspect
时,发现他们的
Mounts
下的
Source
都是一样的,说明它们都绑定到宿主机的同一个目录,所以当某个容器的挂载修改时,其他容器也看到了同样的效果
Dockerfile
文件构建的时候设置
volume
前2篇都是相对于docker的运行环境Linux而来的,但是我们现实环境中,开发环境中都是使用的是Windows,所有很有必要学会在Windows下挂载容器,如果你自己的机器也是Linux,那就不需要担心什么了,直接和上面一样,但是你如果是Windows系统,那么就有点麻烦了,具体怎么操作,看一下我的案例吧。首先docker容器的Linux对Windows支持并不是很高,他只对C:\Users 目...
docker
run -t -i -v /d/PycharmProjects:/test –name test ldzm/myubuntu:14.04 /bin/bash-v /d/PycharmProjects:/test
-v
挂载
本地文件夹到
docker
容器
中,在
容器
中修改/test文件夹中的内容也就是修改D:\PycharmProjects文件夹中的内容
/d/PycharmProject
最近想搭建一套CI/CD环境尝试一下,因为手里云服务太小了(1C1G),撑不起来gitlab和jenkins。恰巧年前配了台高配版的
windows
机器,就想在家里的机器上通过
docker
装gitlab和jenkins。
但是经过尝试,发现
docker
在
windows
10下面使用有很多坑,从网上帖子看,好像这个问题短期之内修复不了(涉及到文件系统了),故总结,并将踩坑经验分享给大家
环境:win10专业版,使用hyper V支持
docker
,
docker
desktop community 2.2....
由于我是在
windows
上安装的
docker
,无法像linux上直接访问
挂载
的source路径,如果像修改
挂载
的共享文件夹,方式是在powershell里敲如下进入
>> cd \\wsl$\
docker
-desktop-data\version-pack-data\community\
docker
\volumes\
如果是mac可以通过sreen的方式进入
Data Volumes的初衷是实现独立于
容器
的生命周期实现数据持久化,实现多个
docker
容器
之间的数据持久化及共享,因此删除
容器
的时候不回删除卷,也不会对哪怕未被引用的卷作垃圾回收.
Volume在初始化的时候就会创建,由base image提供的卷中的数据会在此期间完成复制.
Docke-managed Volume
docker
run --name b1 -it -v /data bus...
本脚本也不限制从一台
Windows
10 上共享文件夹给另一台
Windows
10 上的
Docker
虚拟机中的
Docker
。
也可以是从一台
Windows
10 上共享文件夹给另一台 Mac OXS 上的
Docker
虚拟机中的
Docker
。
或者是从一台
Windows
10 上共享文件夹给另一台 Linux 上运行的
Docker
。
1、
docker
volume方式
在
Docker
中,要想实现数据的持久化(所谓
Docker
的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机
挂载
到
容器
中。目前
Docker
提供了三种不同的方式将数据从宿主机
挂载
到
容器
中:
(1)volumes:
Docker
管理宿主机文件系统的一部分,默认位于 /var/lib/
docker
/volumes
目录
中;(最常用的方式)
由上图可以知道,目前所有Container的数据都保存在了这个
目录
下边,由于没有在创建时指定卷,所以
Docker
启动一个tomcat
容器
docker
run -d -p 8080:8080 -v tomcat:/user/local/tomcat/webapps --name tomcat_volume tomcat
1、如果使用的数据卷不存在,也就是/var/lib/
docker
/volumes没有tomcat会自动创建
将
容器
内部/user/local/tom
之前写过一篇关于
Docker
容器
和本机之间的文件传输。的文章,但是此方法相对比较繁琐一些,在查看了官方关于数据管理的文档之后发现利用volume来实现主机和
容器
的文件传输效率更高一点,其实也就是将本地的
目录
进行
挂载
到
容器
上,官方一共有三种方法:Manage data in
Docker
,
这里只介绍使用volume的操作:Use volumes
1.使用Volume在主机和
容器
之间传输文件。
在官方文档中可以看到使用如下命令即可创建一个volume:
Create a volume:
$
docker
volume create my-vol
注意这个命令不是所有的
docker
版本都可以
这个问题可能是由于
挂载
的
目录
权限问题导致的。你可以尝试使用以下命令来更改
目录
的权限:
sudo chmod -R 777 /path/to/mounted/directory
如果问题仍然存在,你可以尝试使用
docker
-compose来管理你的
容器
,这样可以更方便地管理
容器
的数据卷。