Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。
-
隔离性 - 每个用户实例之间相互隔离, 互不影响。 硬件虚拟化方法给出的方法是VM, LXC给出的方法是container,更细一点是kernel namespace
-
可配额/可度量 - 每个用户实例可以按需提供其计算资源,所使用的资源可以被计量。硬件虚拟化方法因为虚拟了CPU, memory可以方便实现, LXC则主要是利用cgroups来控制资源
-
移动性 - 用户的实例可以很方便地复制、移动和重建。硬件虚拟化方法提供snapshot和image来实现,docker(主要)利用AUFS实现
-
安全性 - 这个话题比较大,这里强调是host主机的角度尽量保护container。硬件虚拟化的方法因为虚拟化的水平比较高,用户进程都是在KVM等虚拟机容器中翻译运行的, 然而对于LXC, 用户的进程是lxc-start进程的子进程, 只是在Kernel的namespace中隔离的, 因此需要一些kernel的patch来保证用户的运行环境不会受到来自host主机的恶意入侵, dotcloud(主要是)利用kernel grsec patch解决的.
为了让我们的Docker可以工作,我们先得准备下环境
准备工作:
1、Ubuntu系统包: ubuntu-16.04.2-desktop-amd64.iso
2、virtualbox安装包:VirtualBox-5.1.18-114002-Win.exe
这里安装的是64位的Ubuntu,所以 VirtualBox需要支持64位系统的安装,当你安装VirtualBox后,发现找不到64位操作系统的选项,这时候需要调整下BIOS配置。因为有时候我们的设备并没有放开64位虚拟化支持,这时候需要你自己在BIOS中手动修改设置。
虚拟机创建步骤:
1、我们对虚拟机命名为:Ubuntu2Docker
2、设置内存:一般现在自己的电脑都在8G,因此,你分配2G的内存给虚拟机不是什么难事,这里我们设置为2048
3、虚拟硬盘的设定,这里选择“创建虚拟硬盘”。虚拟硬盘的选择会有三个选项,这里我们选择:VHD模式。对虚拟硬盘的大小,我们可以设定为动态分配大小。在设置虚拟系统的文件存放位置是在:“C:\Users\Administrator\VirtualBox VMs\Ubuntu2Docker”,这时需要修改文件的存放位置到我们预留给他的磁盘地址,本例中,我们存放在:“G:\software” 。 对文件大小的调整,默认情况下Ubuntu的安装系统需求要比较大一些,因此对于VirtualBox默认设定的8G文件大小是不够的,这里我们分配15G空间
4、到这里VirtualBox的基本设定已经结束,但暂时还无法使用,需要对其他的设置进行调整
调整虚拟机配置:
1、在“常规”选项中调整高级设置,将备份的位置调整到“G:\software”
2、在“显示”选项中调整显存大小,这里我们调整到128M
3、在“存储”选项中,为IDE增加虚拟光驱镜像文件:ubuntu-16.04.2-desktop-amd64.iso ,并去掉多余没用的光驱
4、在网络设置选项中,设置网卡2, 选择链接方式为:“仅主机(Host-Only)网络”
5、到这里,所有的配置均已经调整结束,可以点击启动虚拟机。这时,你可以倒杯茶,后面系统的安装非本文重点,此处不表。安装结束后,系统会提示你重新启动系统,弹出磁盘。不用管磁盘,直接重启就OK。
为方便后面远程管理我们的虚拟机,装一个ssh服务端是很有必要的。因此,接下来,开始设置ssh。进入虚拟机操作系统后:
1、默认情况下,Ubuntu没有对root用户设置密码,为后面操作简单,我们将root用户设置密码“sudo passwd root”
2、安装ssh服务端:"sudo apt-get install openssh-server -y"
3、确定当前虚拟机的IP地址,打开命令行查看本机IP地址:“ifconfig” 这里得到的地址为:“192.168.56.102”
4、通过使用putty登陆“192.168.56.102”进行验证ssh服务是否正常安装。
5、为方便后面编辑相关配置信息,我们需要装一下vim:“apt-get install vim -y”
至此,Docker安装前基本的准备工作完毕!
接下来开始安装Docker,步骤如下:
1、安装前首先做一次更新操作:“apt-get update”
2、开始安装Docker:“apt-get install docker.io -y”
3、验证Docker是否安装成功:“docker -v”,如果安装成功,我们会看到docker的安装版本信息。
接下来开始为我们下一步部署web应用做准备:
1、下载Ubuntu系统镜像,这里我们采用国内的一个镜像源“daocloud.io”,执行命令如下:“docker pull daocloud.io/ubuntu:latest”
2、执行以下命令,验证镜像是否已经到本地:“docker images”,如果下载成功,我们就会看到刚刚下载下来的Ubuntu镜像
现在,我们开始准备web应用所需环境:
1、准备java和Tomcat安装文件:jdk-8u121-linux-x64.tar.gz apache-tomcat-9.0.0.M18.tar.gz
2、新建一个目录dockerfiles,执行命令:“mkdir dockerfiles” 并将我们准备的2个安装文件放在这个路径下
3、开始准备编写Dockerfile文件:
FROM daocloud.io/ubuntu:latest MAINTAINER danlley email: [email protected] # now add java and tomcat support in the container ADD jdk-8u121-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-9.0.0.M18.tar.gz /usr/local/ # configuration of java and tomcat ENV ENV JAVA_HOME /usr/local/jdk1.8.0_121 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.0.M18 ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.0.M18 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin # container listener port EXPOSE 8080 # startup web application services by self CMD /usr/local/apache-tomcat-9.0.0.M18/bin/catalina.sh run
4、用Dockerfile生成镜像,执行命令:“docker build .”,注意命令最后有一个点,这个点代表当前文件夹。执行成功后,执行结果如下:
root@danlley-VirtualBox:/home/danlley/dockerfiles# docker build .
Sending build context to Docker daemon 192.5 MB
Step 1 : FROM daocloud.io/ubuntu:latest
---> f49eec89601e
Step 2 : MAINTAINER danlley email: [email protected]
---> Running in b72c368e9e65
---> 6ca59fd1cae6
Removing intermediate container b72c368e9e65
Step 3 : ADD jdk-8u121-linux-x64.tar.gz /usr/local/
---> a9631d4c4948
Removing intermediate container 3f6f00fee97f
Step 4 : ADD apache-tomcat-9.0.0.M18.tar.gz /usr/local/
---> 462d3601d1f5
Removing intermediate container 49d8cf70e7f0
Step 5 : ENV JAVA_HOME /usr/local/jdk1.8.0_121
---> Running in 26e9f967d736
---> 882f71382761
Removing intermediate container 26e9f967d736
Step 6 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
---> Running in 927971473bb1
---> f71834a0321e
Removing intermediate container 927971473bb1
Step 7 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.0.M18
---> Running in 5842e43e1bc9
---> 279996de8b76
Removing intermediate container 5842e43e1bc9
Step 8 : ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.0.M18
---> Running in 12fb1d39e3e0
---> 0e4609876947
Removing intermediate container 12fb1d39e3e0
Step 9 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
---> Running in d400d75444d7
---> 1cd56947b031
Removing intermediate container d400d75444d7
Step 10 : EXPOSE 8080
---> Running in 356cc1785d2f
---> 537086a47954
Removing intermediate container 356cc1785d2f
Step 11 : CMD /usr/local/apache-tomcat-9.0.0.M18/bin/catalina.sh run
---> Running in 9472a0c1d38b
---> abbbfb1f232d
Removing intermediate container 9472a0c1d38b
Successfully built abbbfb1f232d
5、为新建出来的镜像打个tag:
root@danlley-VirtualBox:/home/danlley/dockerfiles# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
abbbfb1f232d About a minute ago 512.7 MB
daocloud.io/ubuntu latest f49eec89601e 9 weeks ago 129.5 MB
root@danlley-VirtualBox:/home/danlley/dockerfiles# docker tag abbbfb1f232d webapp
root@danlley-VirtualBox:/home/danlley/dockerfiles# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
webapp latest abbbfb1f232d 2 minutes ago 512.7 MB
daocloud.io/ubuntu latest f49eec89601e 9 weeks ago 129.5 MB
6、启动webapp的docker容器:“docker run -d -p 8090:8080 webapp”,看到下面的执行结果,就可以在虚拟机外面本地的浏览器来访问验证了。
root@danlley-VirtualBox:/home/danlley/dockerfiles# docker run -d -p 8090:8080 webapp
4e7c8bd1e30afc333b28563d0bb1dd776203c5ef7d6977487b480fa3aa8cd171
root@danlley-VirtualBox:/home/danlley/dockerfiles#
7、访问地址:http://192.168.56.102:8090/ 这时可以看到Tomcat的默认欢迎界面。
各位看官,原创不易啊,转载请注明出处: http://danlley.iteye.com 看在打字不易的份上,打赏一个吧
参考资料:
http://baike.baidu.com/link?url=i32oW4JYuvRlKbIEVoaVRHZW0ipxhxX3Tlj-snZT0maULuWCteH74CCA_y2xHftGzQPaoAlg54M8YMXqQE8qsq