实战docker运行环境搭建
本文从实战的角度介绍了笔者作为一个初学者,如何一步步地搭建起docker运行环境并启动虚拟机镜像,同时说明了如何在启动的虚拟机中安装常用软件。
最近一直在研究docker。跟初学者一样,先要安装docker。但试了ubuntu、RedHat等多个版本,均无法成功安装docker。后来无意之中在DeepIn里试了下,居然成功了(不得不为国产的操作系统点个赞)!现将安装过程和体会记录下来。
笔者使用的DeepIn是15.3,对应的ubuntu内核满足了docker的最低要求。下面就来讲一下笔者是如何一步步地安装好docker的(后来又在Ubuntu16.04版本里试了一次,也可以了,可能是因为之前的ubuntu版本太低的缘故吧)。
首先在DeepIn中切换到root账户。然后运行如下命令:
$sudo apt-get update
$sudo apt-get install -y docker.io
$sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
$sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
运行最后一个命令可能会提示bash_completion.d目录不存在,不用管,接着往下操作。
此时docker已经安装好了,可以启动服务了:
$sudo service docker start
笔者通过在多种Ubuntu版本上安装后发现通过这种方式安装的docker始终不是最新版,只能到1.6版,docker很多新的特性(如swarm)根本无法支持。遂改用如下模式安装docker:
curl -sSL https://get.docker.com/ | sh
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh
这时运行docker -v命令就会发现已经是1.13.1版本了(^O^ )! 这时候只是有了虚拟机运行的环境,还需要下载操作系统虚拟机镜像文件。在终端中运行如下命令:
$sudo docker pull ubuntu:12.04
就可以将12.04版本的ubuntu镜像文件下载到本地,并挂接到docker上。然后在终端中运行如下命令就可以启动虚拟机镜像:
$sudo docker run -t -i ubuntu:12.04 /bin/bash
这时在终端中可能看不到什么反应。可通过如下命令来查看启动的虚拟机镜像:
$sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5bdiswi2asdk ubuntu "bin/bash"
2 hours ago Up 2 hours happy_noyce
然后在终端中运行如下命令连接到虚拟机中:
$sudo docker attach 5bdiswi2asdk
root@5bdiswi2asdk:/#
这样就可以像在真实的linux系统中一样执行各类linux操作了。
上述启动docker容器的方法有个问题,那就是一旦在容器中执行了exit命令,容器就自动关闭了,这样对于在宿主机和容器间切换操作时非常不方便,基于此可以通过守护态来启动容器:
$sudo docker run -t -i -d ubuntu:12.04 /bin/bash
这时启动容器后依然是在宿主机中,如果想连接到容器中,可先执行docker ps命令查看正在运行的容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
42255ca8977e 5dd999081183 "/bin/bash" 4 seconds ago Up 2 seconds eager_bardeen
此时可通过如下命令进入容器:
$docker exec -it 42255ca8977e /bin/bash
root@42255ca8977e:/#
此时再运行exit容器就不会停止了。
但不要高兴的太早了。笔者发现这个ubuntu的镜像是个精简版,总共才160多M,里面几乎没有什么可用的软件和命令,连ping和ifconfig这样的命令都运行不了。所以要想用的顺手还得安装一些必要的软件。
在虚拟机的终端中运行如下命令:
root@5bdiswi2asdk:/#apt-get update
这样才可以使用apt-get命令搜寻和安装软件。如在终端中运行如下命令:
root@5bdiswi2asdk:/#apt-cache ifconfig
安装完自己需要的软件后千万别急着关机,否则下次启动虚拟机后依然是最原始的镜像,里面什么软件都没有,所以安装完软件后可以在宿主机(即这里的DeepIn)中运行如下命令将更改后的镜像导出到本地:
$sudo docker export 5bdiswi2asdk>ubuntu.tar
这时打开导出后的ubuntu.tar,会发现里面已经有之前新建的文件夹、安装的软件目录了。
如果想停止虚拟机镜像,通过在虚拟机镜像的终端中运行exit命令是达不到效果的:
root@5bdiswi2asdk:/#exit
这样只是退出了容器的终端而已,容器依然在运行。如果想关闭虚拟机镜像则需要在docker所在的主机上运行如下命令:
$docker stop 5bdiswi2asdk
如果下次想打开之前导出的虚拟机镜像,可在主机的终端中运行如下命令:
$cat ubuntu.tar | sudo docker import - test/ubuntu
然后运行如下命令查看导入的所有镜像:
$sudo docker images
REPOSITORY TAG IMAGE_ID CREATED VIRTUAL
test/ubuntu v12.04 449iadsfi45 1 miniute 683.32MB
这样就可以使用如下命令启动这个ubuntu镜像了:
$sudo docker run -t -i test/ubuntu /bin/bash
更多推荐
所有评论(0)