您的位置:首页 > 运维架构 > Docker

【1】Docker---Windows系统上安装Boot2Docker以及安装的一些问题

2016-04-17 14:46 1026 查看
系统:win7 64位 / Ubuntu 14.04LTS双系统
描述:未安装过虚拟机之类的软件
状态:win7
安装:下载当前时间的最新版本https://github.com/boot2docker/windows-installer/releases v1.9.0


1 Windows系统上安装Docker

  Docker引擎使用了一个定制的Linux内核,所以要在Windows下运行Docker就需要用到一个轻量级的虚拟机(VM),即提供一个Linux运行环境—boot2docker ISO。boot2docker ISO完全运行在内存中,只有20几兆的大小。他们在测试环境下,启动这个内核只需要5秒钟。

  下载docker-install.exe(目前为v1.8.0):

  https://github.com/boot2docker/windows-installer/releases

2 安装





  这里最好使用集成好了的VirtualBox和MSYS-git版本。

3 安装遇到的问题



  安装完了之后桌面会出现Boot2Docker Start图标,但是双击后会出现上面的情况,然后闪退。这里看看什么错误也没有,但是当直接去用命令行去启动Boot2Docker时,会出现下面的错误:

error in run: Failed to start machine “boot2docker-vm”: exit status 1


  网上查阅资料,有人说机器未支持虚拟化,重启到BIOS将虚拟化Enable,但是我重启了看了下BIOS,虚拟化已经Enable了。

  再尝试直接打开Oracle VM VirtualBox,然后开启Boot2docker,就出现了下面的错误:

BIOS将虚拟化Unable to load R3 module C:\Program Files\Oracle\VirtualBox/VBox


  网上资料说其实这个问题是破解了windows主题的原因,只要还原了破解的主题就可以了。 破解windows主题的3个文件是:

themeservice.dll,themeui.dll,uxtheme.dll


,然后去下载了这几个文件,我只在C:\Windows\System32下替换了uxtheme.dll这个文件就可以在Virtual Box中启动boot2docker了。

4 docker的一些简单操作

  好了,还是在命令行中启动boot2docker,关闭Virtual box,然后重新双击桌面上的Boot2Docker Start图标,启动成功:





  通过ssh登陆虚拟中的Linux环境系统:



  当然还可以利用ssh工具,如secureCRT、putty等软件来实现远程登录docker Linux环境系统。用户名为
docker
,默认密码为
tcuser


docker@boot2docker:~$ docker info


  这条命令是查看你的Docker 引擎是否正确安装和配置好了。



5 Windows 主机与Docker怎么共享文件?

  Boot2Docker怎么与Windows主机共享文件夹呢?Boot2Docker是运行在Virtual Box中的,所以,这里可以设置Virtual Box的共享,当然,默认已经有了一个共享的文件夹:C:\Users

  即C盘User文件夹,自己也可以重新去Virtual Box中设置其他的共享文件夹,这样如果我们有什么镜像文件,比如用docker安装操作系统,就很方便的使用Windows主机上的镜像文件了。但是要理解,当docker在容器中安装了一个操作系统时,如Ubuntu,要让Ubuntu系统也与Windows主机共享文件夹,那么Windows主机中docker本身就是一个虚拟机,然后容器是又虚拟了一层,所以要挂载两次。

  注:但是这个系统有个默认的挂载机制,只能有如下此类挂载共享,不过能共享就行了:

Users    挂载到  /Users
/Users   挂载到  /Users
c/Users  挂载到  /c/Users
/c/Users 挂载到  /c/Users
c:/Users 挂载到  /c/Users




6 获取docker官方提供的镜像

  要获取云端镜像,先注册docker账号,通过命令行注册docker.com的账户(docker login):



  警告:完成注册后,需要到邮箱进行验证,最后才能注册成功。注册的过程中,用户名只能是小写字母开头。

  完成注册后,就可以获取hub.docker.com上面海量的镜像了。

  但是这里有一个问题,我们在Window上面安装Docker可以干什么,首先要明白的是,我们不能在Docker容器中安装Windows系统,至少目前是不行的,为什么呢?因为从Docker的架构来看,它是共用操作系统的底层资源,其本身就是一个Linux系统,要让Windows系统去用Linux系统的下半部分是不可以的(个人理解)。

  镜像、容器的理解:

  镜像可以理解为软件安装包,而容器里面是运行的镜像,多个容器可以运行同样的镜像,比如有一个Ubuntu14.04的镜像(-i:运行一个交互式的容器;-t:创建一个可以输入输出的伪终端):

docker@boot2docker:~$ sudo docker run -t -i ubuntu:14.04 /bin/bash
docker@boot2docker:~$ sudo docker run -t -i ubuntu:14.04 /bin/bash
docker@boot2docker:~$ sudo docker run -t -i ubuntu:14.04 /bin/bash
docker@boot2docker:~$ sudo docker run ubuntu:14.04 /bin/echo "just echo hello world"


  都是用的同一个镜像,但是可以多个容器,互不影响,每次运行了一个镜像,就产生了一个容器(如果运行的这个镜像不在本地,会去Docker Hub上面去搜索是否存在,如果存在,则从上面下载镜像,然后再运行)。

  查看docker中所有的容器和状态:

docker@boot2docker:~$ docker ps -a




  只查看所有容器的ID,加上-q选项:

docker@boot2docker:~$ docker ps -a -q


  如果每次运行一次镜像,就产生一个容器,但是如果关闭了一个容器,怎么再重新运行这个关闭了的容器呢,用attach选项?

  先运行这个容器:

docker@boot2docker:~$ docker start 20aa9b050129


  再进入该运行的容器:

docker@boot2docker:~$ docker attach 20aa9b050129


  docker attach命令允许你使用容器ID或者容器名字进入一个正在运行的容器,并以交互的方式来控制这个容器。

root@20aa9b050129:/#【ctrl + p + q】


  ctrl+p+q组合键可以从当前的伪终端中退出(容器并没有退出),进入到Docker操作伪终端。

  上面操作某个容器都是根据容器ID来操作的,容器ID都是数字加字母,而且没有很好的特征,还有个方式就是通过容器的名字来操作,可以将某个容器重新命名为比较好记住的名字:

Usage:  docker rename [OPTIONS] OLD_NAME NEW_NAME
docker@boot2docker:~$ docker rename prickly_bose ubuntu_one




  如果创建了很多容器,手动用docker rm一个个去删除是很麻烦的,可以用下面的命令直接一键删除所有的没有运行的容器:

docker@boot2docker:~$ docker rm $(docker ps -a -q)




  注意:加上-f参数则会强制删除正在运行的容器。

-f, --force=false      Force the removal of a running container (uses SIGKILL)
--help=false           Print usage
-l, --link=false       Remove the specified link
-v, --volumes=false    Remove the volumes associated with the container


  对容器(可以看作进程)的一些操作:

docker@boot2docker:~$ JOB=$(docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo Hello world; sleep 1; done")
docker@boot2docker:~$ docker stop $JOB
docker@boot2docker:~$ docker start $JOB
docker@boot2docker:~$ docker restart $JOB
docker@boot2docker:~$ docker kill $JOB
docker@boot2docker:~$ docker rm $JOB




  经过一些测试,这个$JOB变量只能在这个伪终端里面有效。

  Docker命令本来也就不多,可以通过docker help查看,或者查看docker的官方文档说明:

https://docs.docker.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  docker windows boot2docke