您的当前位置:首页正文

SpringCloud番外篇1之docker介绍

来源:花图问答

  最近暂停了对SpringCloud的继续学习,是因为有人说SpringCloud脱离了docker,devops就像一道大餐没有加盐一样。有时候马不停蹄的去学习是为了想缩小与别人的差距,但是,个人觉得要学精一样东西,还是必须要学会一些辅助性或者基本的技能才行。好了,话不多说,这里就简单总结下自己学到的docker方面的内容

1.什么是docker

  官方说docker是一个开源工程,可以将任何应用以轻量级容器的形式进行打包和发布。(有点抽象)
  其实docker可以粗糙的理解为轻量级的虚拟机,但是它又不是虚拟机。



  虚拟机是在宿主HostOS上有一个Hepervisor层上虚拟出硬件,在这个虚拟硬件上我们会安装独立的GuestOS,然后在里面运行各种各样的程序。
  docker和虚拟机不一样的是,它有一层Docker Engine,它很好的利用了Host OS里面的namespace,然后将应用程序分离,因为没有虚拟层这一层,所以它的运行速度比虚拟机快,启动成本也比虚拟机快很多,这就是docker为什么深受青睐的原因

2.docker的架构

docker架构

DOCKER_HOST是我们进行docker操作的虚拟机,在这里运行了一个叫做Docker daemon的核心程序,通过它可以下载镜像,运行容器。那么我们如何与这个Docker daemon进行交互呢?通过Client的命令与之交互(很废话~)。最右边的Registry是提供镜像的地方,所有的用户都可以在这上面拉取镜像,或者是放镜像上去。


docker架构2

3.docker的hello world

  3.1启动docker daemon进程
  service docker start
  3.2拉取一个ubuntu镜像
  sudo docker pull ubuntu
  3.3运行ubuntu镜像,并输出一个hello docker
  docker run ubuntu echo hello docker
  大家可以想象下,如果没有docker,我们启动一个虚拟机,然后打印一个hello docker要耗费多长时间现在有了docker可以说是非常的方便。
  3.4docker images展示目前所有下载的镜像
  3.5docker ps展示docker目前运行的进程

4.利用docker玩转Nginx

docker命令小结1
docker命令小结2

5.dockerfile介绍

之前我们通过commit创建了一个新的镜像,这里我们用dockerfile来生成新的镜像
  5.1新建一个dockerfile

FROM ubuntu
MAINTAINER zzm
RUN sed -i  /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html 
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
EXPOSE 80

  5.2创建新镜像

docker build -t zzm/hello-nginx .

  5.3运行新镜像

docker run -d -p 80:80 zzm/hello-nginx
dockerfile语法小结
dockerfile语法小结
  详细的dockerfile语法可以见

6.volume介绍

  6.1定义:提供独立于容器之外的持久化存储
  6.2作用:我们知道docker容器里面是不会保存任何东西的,但是如果我们的容器里面用的数据库想要保存数据信息该怎么办呢?这个时候volume的作用就非常大了,通过它可以挂载容器之外的一些目录或磁盘,这样在容器之外修改了相应的内容,容器内部还是能感知到的。

7.镜像仓库

image.png
与Registry之间的交互
image.png

8.容器app

image.png
image.png