苹果手机换原装电池电池2195毫安能换3400毫安?

你的位置: &
& Docker 文件系统以及启动容器的文件系统变化
Docker 文件系统以及启动容器的文件系统变化
本文主要介绍一下 Docker 基础的东西,先介绍一下我的实现环境:
1. windows 10 正式版
1. Docker Toolbox
1. Docker version 1.8.2
1. 官方镜像 ubuntu:latest
这里我们主要只说 aufs/containers/graph 这三个目录。
1. 先进入 Docker 文件系统目录
ll /var/lib/docker #其中目录是这样的 /var/lib/docker -& /mnt/sda1/var/lib/docker/
df -h # 查看挂载情况
Filesystem
Used Available Use% Mounted on
0% /dev/shm
2% /mnt/sda1
0% /sys/fs/cgroup
42% /c/Users
2% /mnt/sda1/var/lib/docker/aufs
ls -l /mnt/sda1/var/lib/docker/
drwxr-xr-x
4096 Sep 28 01:59 aufs/
# 系统挂载目录,系统使用的aufs
drwx------
7 03:48 containers/
# 容器文件系统
drwx------
7 03:48 graph/
# 本地镜像
-rw-r--r--
7 03:48 linkgraph.db
-rw-------
7 03:48 repositories-aufs # 存储与image有关的基本信息
drwx------
7 02:52 tmp/
drwx------
4096 Sep 28 02:01 trust/
drwx------
4096 Sep 28 01:59 volumes/
查看一下我本地的镜像
docker images
REPOSITORY
VIRTUAL SIZE
91e54dfb1179
6 weeks ago
我本地有一个 ubuntu:latest 的 office image, Image 的短 ID 是 91e54dfb1179。这里说明说一下 Docker 的镜像是由镜像层文件内容 和 json文件组成。
1. 镜像层文件存储在 /var/lib/docker/aufs/diff 中
1. 本地镜像的 json 文件存放在 /var/lib/docker/graph 文件夹下。
如上图所示,其中镜像的 json 文件中存储着镜像的元数据,譬如父镜像 id
在 /var/lib/docker/aufs/layers 存放着镜像ID以及层级关系,如下图,我们知道最底层的 IMAGE ID 是 d3a1f33e8a5abb7eb1c2abf4d711efe1ae2248cfde1391
我们查看容器层级内容
$ cd /var/lib/docker/aufs/diff/d3a1f33e8a5abb7eb1c2abf4d711efe1ae2248cfde1391
我们就看到了如上图所示的 rootfs 文件目录,而这个镜像就作为最根部的 Images ,我们使用的最终镜像 ubuntu:latest 就是在这个镜像的基础上根据各层级的关系动态添加的。
如上图,/var/lib/docker/graph 下的镜像 ID 以及镜像 json,查看 json 文件内容如下图:
如上图所示包含了,所有父镜像id,和在父镜像id 上执行的命令以及生成镜像id 等等所有元数据。当我们启动容器的时候,就会一步一步逐步的从 rootfs 上累加过来。
2. 启动容器
docker run -i -t ubuntu bash
当我们运行上边的命令的时候,基础过程如下:
1. 它会先检查我们本地是否存在 ubuntu:latest 的镜像,如果存在就加载镜像,也就是我们之前提到的 91e54dfb11794fadbf0cb0a4fa710cfa3fc 。
2. 创建容器,程序的 CreateRootfs 会调用 Create 函数来在 mnt 和 diff 文件夹下创建 ID-init 文件夹,然后通过程序的 GET 函数将依赖的 layers 层根据层级关系依次加载到 ID-init 文件夹下。只有 ID-init是可写,其它都是可读。
3. 再次调用 Create 函数来创建 ID文件夹,并在containers 文件夹下创建 ID 文件夹和所有配置文件 ,然后启动容器,将依赖的容器的层依次挂载到 ID 文件夹下。
当我们在容器内进行操作的时候,在 /var/lib/docker/containers/ID/ID-json.log 中就会进行日志存储,如下图
上图,从日志中我们可以看出,我们对容器操作有两部:
touch 1.txt
然后我们创建的 1.txt 文件,记在 /var/lib/docker/diff/ID/root/ 下,如下图
这就能很简单的看出 docker 的层级关系和数据关系。
今天就说到这里,哪里不懂的或者文章有错误的,请发送邮件到 (#换成@)
转载请注明来自,本文标题:
与本文相关的文章使用DockerToolbox在Windows下搭建Docker环境 - 简书
使用DockerToolbox在Windows下搭建Docker环境
Docker是一种比虚拟机更轻量级的应用程序执行容器,受云计算技术普及以及微服务架构的影响,Docker这两年风声水起,成为用于管理应用部署的最佳利器,很多DevOps团队宣称使用该技术后能极大缩减开发、测试、生产环境切换的时间,提升整体效率。
考虑到目前很多开发人员仍是在Mac和Windows系统进行开发,为了方便环境的部署和管理,Docker公司近期推出了DockerToolbox工具包,可以跨平台(Mac、Windows)使用,对于想在Windows环境下体验容器技术并开发产品的程序员来说真是福音。
安装过程很简单,直接去对应的安装包到本地执行安装程序即可,安装后会自动在系统中打包安装VirtualBox虚拟机(因为Docker依赖Linux系统,必须模拟Linux环境)、Docker-engine、Docker-machine、Docker-compose等组件,基本做到了即开即用。
然后主要就是进入命令行管理界面(安装包会创建快捷方式),执行各种docker命令进行工作了,我在使用过程中主要遇到了如下问题:
1、CPU虚拟化的开启,现在的CPU一般都在硬件级别支持虚拟化技术,但是有的可能默认没有打开,需要到BIOS中手动开启,查看是否开启的方法是,在windows系统任务管理器的“性能”页,是否有虚拟化已开启的字样,当然目前也有一些比较老的低端CPU不支持,这个就建议更换设备吧。
2、与Windows系统自带的虚拟化技术Hyper-V冲突,专业版的Windows系统一般带有虚拟化技术组件,是微软自有的,名叫Hyper-V(与virtual box等类似),但是与我们要安装的工具有冲突,需要关闭Hyper-V后才能正常使用,具体操作方法为到控制面板的“程序和功能”里面的“启用或关闭windows功能”将Hyper-V关掉。
3、VirtualBox虚拟机网段IP分配冲突,这个是我遇到的特例,VirtualBox会自动给用于模拟Docker环境的虚拟机分配内网IP地址,且默认为10.0.2网段,这个恰恰与我的工作环境存在冲突,而且界面中和配置文件里都没有可配置的地方,经过多天研究,终于找到通过命令行的方式将这个默认配置可以改掉 ,命令如下VBoxManage.exe modifyvm "default" --natnet1 "10.0.20.0/24"(需要在virtualbox安装目录下执行,default是虚拟机的名字。)
4、系统重启后环境丢失(偶然发生),这个可能是工具存在bug,我在下载各种镜像进行测试后,将我的Windows重启后发现default虚拟机里的东西都丢了,这个可能是由于环境在运行的状态下我重启了系统导致。目前我的解决办法是在每次关机或重启的时候,先将default虚拟机停掉,方法是在命令行下执行如下指令docker-machine stop default 。
总的来说,这套工具包非常方便在windows下开发的人员,基本可以做到与容器环境的无缝对接,合理使用这一套工具包,对于我们的“持续集成”、“持续交付”等工作将有很大的促进作用。
技术控/编程/迷音乐/爱喝点儿/轻微强迫症/爱幻想最近在研究虚拟化,容器和大数据,所以从Docker入手,下面介绍一下在Windows下怎么玩转Docker。
Docker本身在Windows下有两个软件,一个就是Docker,另一个是Docker Toolbox。这里我选择的是Docker Toolbox,为什么呢?参见官方文档:
首先我们从官网下载最新版的Windows Docker Toolbox。安装后会安装一个VirtualBox虚拟机,一个Kitematic,这是GUI管理Docker的工具,没有发布正式版,不推荐使用,另外还有就是我们在命令行下用到的docker-machine和docker命令了。
安装完成Toolbox后会有一个Docker Quickstart Terminal的快捷方式,双击运行如果报错,那可能是因为你已经安装了Hyper-v,所以VirtualBox无法用64位的虚拟机。需要卸载Hyper-v。
运行后会在Virtualbox中创建一个叫做default的虚拟机,然后很有可能会卡在waiting for an IP的命令下,然后就死活不动了。我的做法是彻底放弃Docker Quickstart Terminal,根本不用这玩意儿,关掉,我们用PowerShell进行虚拟机的管理。
打开PowerShell,输入:
docker-machine ls
我们可以看到我们当前的Docker虚拟机的状态。如果什么都没有的话,那么我们可以使用以下命令创建一个Docker虚拟机。
docker-machine create --driver=virtualbox default
创建完毕后,我们在用docker-machine ls确认我们的Docker虚拟机在运行中。
然后使用以下命令获得虚拟机的环境变量:
docker-machine env default
然后再输入:
docker-machine env default | Invoke-Expression
这样我们就把当前的PowerShell和虚拟机里面的Docker Linux建立的连接,接下来就可以在PowerShell中使用docker命令了。
比如我们要查看当前有哪些镜像:
docker images
当前有哪些容器:
docker ps &a
其他各种docker命令我就不在这里累述了。
Docker虚拟机文件地址修改
默认情况下,docker-machine创建的虚拟机文件,是保存在C盘的C:\Users\用户名\.docker\machine\machines\default 目录下的,如果下载和使用的镜像过多,那么必然导致该文件夹膨胀过大,如果C盘比较吃紧,那么我们就得考虑把该虚拟机移到另一个盘上。具体操作如下:
1.使用docker-machine stop default停掉Docker的虚拟机。
2.打开VirtualBox,选择&管理&菜单下的&虚拟介质管理&,我们可以看到Docker虚拟机用的虚拟硬盘的文件disk。
3.选中&disk&,然后点击菜单中的&复制&命令,根据向导,把当前的disk复制到另一个盘上面去。
4.回到VirtualBox主界面,右键&default&这个虚拟机,选择&设置&命令,在弹出的窗口中选择&存储&选项。
5.把disk从&控制器SATA&中删除,然后重新添加我们刚才复制到另外一个磁盘上的那个文件。
这是我设置好后的界面,可以看到我在步骤3复制的时候,复制到E:\VirtualBox\default\dockerdisk.vdi文件去了。
6.确定,回到PowerShell,我们使用docker-machine start default就可以启动新地址的Docker虚拟机了。确保新磁盘的虚拟机没有问题。就可以把C盘那个disk文件删除了。
【注意:不要在Window中直接去复制粘贴disk文件,这样会在步骤5的时候报错的,报错的内容如下,所以一定要在VirtualBox中去复制!】
Failed to open the hard disk file D:\Docker\boot2docker-vm\boot2docker-vm.vmdk. Cannot register the hard disk 'D:\Docker\boot2docker-vm\boot2docker-vm.vmdk' {9a4ed2ae-40f7--a59dccb2905c} because a hard disk C:\Users\用户名\.docker\machine\machines\default\disk.vmdk' with UUID {9a4ed2ae-40f7--a59dccb2905c} already exists. Result Code: E_INVALIDARG (0x) Component: VirtualBox Interface: IVirtualBox {fafa4e17-1ee2-4905-a10e-fe7c18bf5554} Callee RC: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
在国内使用Docker Hub的话就特别慢,为此,我们可以给Docker配置国内的加速地址。我看了一下,DaoCloud和阿里云的镜像加速还不错,另外还有网易的蜂巢。选一个就行了。以DaoClound为例,注册账号,然后在 就可以看到DaoClound提供给您的镜像加速的URL。然后到PowerShell中去依次执行:
docker-machine ssh default
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile
docker-machine restart default
这样重启Docker后就可以用国内的镜像来加速下载了。
试一下下载一个mysql看看快不快:
docker pull mysql
下载完镜像,我们运行一个容器:
docker run -d -p
--name mysql -e MYSQL_ROOT_PASSWORD=123 mysql:latest
接下来我们打开windows下的mysql客户端,服务器地址填docker虚拟机的IP地址,通过docker-machine env可以看到,我这里是192.168.99.100,然后用户名root,密码123,这样我们就可以连接到docker容器里面的mysql了。
【注意,Docker容器是在VirtualBox的虚拟机里面,不是在Windows里面,所以不能用127.0.0.1访问】
阅读(...) 评论()- 最好的系统光盘下载网站!
当前位置: >
> 详细页面
Linux更改Docker运行根目录的方法
来源:系统之家
作者:小兰
  许多Linux用户在安装系统的时候,并没有分配/var 分区,而在安装Docker后才发现,它的默认存放位置是在 /var/lib/docker。因此导致了Docker在运行的很慢,那么要怎么解决这个问题呢?下面一起来看看解决的方法吧。
  解决方法:
  一是重装系统,这也太不人性化了,忽略。。。下次部署 Docker 宿主机的时候得好好分区下。
  二是改变 Docker 默认存放路径。
  查了下手册发现: -g, --graph=&/var/lib/docker& 设置Docker运行时根目录
  使用 --graph 参数:docker --graph=/opt/docker -d,会自动生成/opt/docker目录(0700),并在该目录下创建 docker 相关文件
  原来的镜像和容器都找不到了,因为路径改了(原来的镜像是在/var/lib/docker/devicemapper/devicemapper/{data,metadata})
  Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致
  在 ubuntu 中的位置是:/etc/default/docker
  在 centos 中的位置是:/etc/sysconfig/docker
  我使用 CentOS 7,所以只需要更改 vim /etc/sysconfig/docker 成
  OPTIONS=--graph=&/home/lib/docker& --selinux-enabled -H fd://
  然后 service docker start 重新启动 Docker 的路径就改成 /home/lib/docker 了
  上面的就是就是解决Docker存放位置的空间太小,导致Docker运行缓慢的方法了,有遇到这个问题的用户,就用这种方法进行解决吧。
栏目热门教程
人气教程排行
热门系统下载
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!如侵犯到您的权益,请及时通知我们,我们会及时处理。
Copyright&2011 系统之家(www.xitongzhijia.net) 版权所有 闽ICP备号-1

我要回帖

更多关于 苹果手机换原装电池 的文章

 

随机推荐