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

Docker初体验--windows系统安装docker及运行

2015-07-01 19:29 801 查看

一、前言

docker是运行在linux操作系统上的,可以理解为linux操作系统上的一个软件

如果要在windows上运行docker的话,目前的话需要先跑一个linux的虚拟机,然后在该虚拟机里面装docker,然后使用这个docker容器来跑linux系统,好像有点绕的赶脚

docker也在和微软合作,相信不久支持windows的原生docker容器就会被开发粗来啦

二、安装

安装docker的话机器需要支持Intel VT虚拟化技术,具体可以看见这篇文章:http://blog.163.com/hypc_bevery@yeah/blog/static/92937163201161044713931/

下面就开始安装啦
首先去这个地址:https://github.com/boot2docker/windows-installer/releases/latest下载Docker for Windows Installer,这个会安装:Docker Client for Windows, VirtualBox, Git for Windows (MSYS-git), the boot2docker Linux ISO, and the Boot2Docker management tool
正如上面所说的,"要在windows上运行docker的话,目前的话需要先跑一个linux的虚拟机",所以会安装 VirtualBox,boot2docker Linux ISO这个是一个微型的linux操作系统,MSYS-git,是git的windows客户端,具体可以看我的另外一篇博客:Git初体验,为什么需要这个呢 ,因为需要从远程仓库里下载东西,通过后面的操作我们会看到
安装完成后,会在桌面上粗线2个快捷方式:Oracle VM VirtualBox和Boot2Docker Start
直接双击:Boot2Docker Start,会粗线一个标题有:MINGW32的命令行,这个可以在windows下模拟linux环境
上面的操作实际上是执行docker安装目录下的start.sh,该脚本主要是执行了下面的3个操作,最后一个在通过SSH连接的时候会用到
boot2docker.exe init
boot2docker.exe start
boot2docker.exe ssh

运行下面命令看是否正常:
docker version

运行:
docker run hello-world

这个命令会从远端下载一个非常小的image,并且会打印:Hello from Docker

三、通过CMD启动

添加环境变量:C:\Program Files (x86)\Git\bin,这个操作是必须的
然后启动cmd,执行:

boot2docker start

如果出错了,可以尝试执行

boot2docker init

然后,会提示让你执行类似下面的命令:

set DOCKER_HOST=tcp://192.168.59.103:2376
set DOCKER_CERT_PATH=C:\Users\whaon\.boot2docker\certs\boot2docker-vm
set DOCKER_TLS_VERIFY=1

如果你没有执行的话,后面的docker操作会提示如下错误:

Get http://127.0.0.1:2375/v1.19/images/json: dial tcp 127.0.0.1:2375: ConnectEx
tcp: No connection could be made because the target machine actively refused it.
. Are you trying to connect to a TLS-enabled daemon without TLS?

执行后,就阔以正常使用了,你可以尝试执行:

docker version
docker images
docker ps


四、通过SSH来连接

前面说过,我们实际上是启动了一个linux虚拟机,那么我们当然阔以用ssh连接上去了
执行
boot2docker ip

来查看ip地址,一般都是192.168.59.103,用户名密码为:docker/tcuser
这样我们就愉快的连接上去了,可以正常使用常用的linux命令以及docker命令

五、在docker上运行linux(后面的操作 都以ubuntu为例)

上面说了三种可以操作docker的方式:mingw,cmd,ssh,看你喜欢用哪个
有2中方式可以安装并运行linux
第一种:我们执行:
docker run ubuntu echo hello world

这个会下载ubuntu,并且打印出hello world

然后运行:
docker run -i -t ubuntu

这样就进入ubuntu系统了

也可以直接通过下面的命令来运行,参数为镜像ID:
docker run -it 117efd3c1ae5

可以执行exit命令退出,这样的话这个ubunbu也就退出了,在docker ps中便不再显示了
第二种:
先下载:ubuntu-14.04-x86_64.tar.gz,然后上传到boot2docker linux系统中
然后执行:
cat ubuntu-14.04-x86_64.tar.gz |docker import - ubuntu:ubuntu14

然后运行:

docker run -i -t ubuntu:ubuntu14 /bin/bash

其实,我们也没必要先上传到boot2docker linux系统中,通过cmd或者mingw也可以完成,因为C:\Program Files (x86)\Git\bin这个目录下也有cat命令

六、提交

我们进入运行在docker上的linux后不免要进行很多操作,但是一旦我们退出来,下一次再进入该linux系统后操作是会丢失掉的,所以我们需要提交

先执行下面的命令来查看我们刚刚运行的那个docker的一些信息
docker ps -l

CONTAINER ID        IMAGE               COMMAND             CREATED
STATUS                     PORTS               NAMES
710e8c7dbc92        ubunbu:latest       "/bin/bash"         4 minutes ago
Exited (0) 3 seconds ago                       fervent_bardeen

然后用下面的命令提交:

docker commit 710e8c7dbc92        ubunbu:latest

第一个参数是容器ID,第二个参数是镜像ID,如果不小心把第二个参数写错了,就会多出一个镜像,可以通过
docker images

来查看,删除镜像用下面的命令,参数为镜像的ID
docker rmi  117efd3c1ae5


七、安装SSH

下面我们在运行在docker容器中的linux(ubuntu)上安装SSH

apt-get update
apt-get install openssh-server
passwd root #输入用户密码

注意我们要允许root用户通过SSH来登录,所以必须要修改sshd的配置文件

vi  /etc/ssh/sshd_confg

# Authentication:

LoginGraceTime 120

#PermitRootLogin without-password    #找到这里,把它注释

PermitRootLogin yes                  #改为yes  然后重启ssh

StrictModes yes




然后启动

/etc/init.d/ssh start
#或者
service ssh start

我们先来查看下ip地址:
ifconfig

比如:172.17.0.97 注意此时我们不能退出来,否则该ubuntu也就会停止

所以我们重新打开一个客户端来连接,然后输入:
ssh root@172.17.0.97

ip地址就是上面查粗来的ip,密码的话就是上面设置的密码,然后就愉快的进去了

八、后台运行linux

前面我们也提到了,你进入ubuntu系统后是不能退出去的,不然ubuntu也相当于关机了,这样岂不是很不爽,怎么破呢
我们可以通过下面的方式来解决:
执行:
docker run -d -p 22 ubuntu:latest /usr/sbin/sshd -D

这样就会在后台运行ubuntu,由于我们按照了sshd,所以启动的时候会开发sshd

再执行:
docker ps

会看到如下:

CONTAINER ID        IMAGE               COMMAND               CREATED
STATUS              PORTS                   NAMES
d566335c9461        ubunbu:latest       "/usr/sbin/sshd -D"   4 seconds ago
Up 3 seconds        0.0.0.0:32786->22/tcp   insane_lalande

即是把32786映射了22端口,那我们就阔以用ssh来连接了

执行:
ssh root@127.0.0.1 -p 32786

就可以连接上了
注意上面的操作是通过ssh连接docker来执行,如果你是在windows下通过CMD来执行,你需要先知道boot2docker的ip地址,比如:192.168.59.103,然后通过下面的命令来连接:
ssh root@192.168.59.103 -p 32786
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: