简单易懂的Docker入门

    容器如今应用的愈来愈多了,不懂这个都很差意思说本身是个程序员了。这篇文章就给你们带来一个简单易懂的Docker入门。程序员

容器和虚拟机

    你们可能用过虚拟机,Vmware之类的,感受和容器差很少,都是“虚拟化一台机器”。那咱们先解释下,Docker和虚拟机有啥区别,先上图:golang

容器与虚拟机

    虚拟机在被建立的时候,宿主机会模拟出一台真实机器所须要的全部资源,包括硬件。一旦开启,预分配给它的资源会被彻底占用。每一台虚拟机都拥有一套完整的独立的用户操做系统。docker

    容器就不同了,它不是模拟一个完整的操做系统,而是对进程进行隔离。容器包含了应用和它全部的依赖包,可让资源在受到隔离的进程中运行应用程序。容器和容器之间是共享内核的。bash

    其实从上面的说明就能够看出来了,容器比虚拟机须要的资源更少,带来的优点包括更快的启动,一样硬件条件下能运行的实例数量远高于虚拟机等等。而Docker则是对容器技术进行的一种封装,它是目前最流行的容器解决方案。服务器

Docker的一些概念

Docker架构

镜像(Image)

镜像是Docker容器的模板。它看起来像一个文件系统,提供了容器运行的时候所须要的程序、库、配置、环境变量等。镜像不包含任何动态数据,其内容在构建以后也不会被改变。架构

容器(Container)

容器是能够独立运行的一个或一组应用。app

仓库(Repositry)

仓库是存放镜像文件的地方,概念相似Git。而仓库注册服务器(Registry)能够理解为代码仓库(Github)。ui


简单的说,咱们把应用还有须要的环境配置等,“打包”成一个镜像,这个镜像就存在于本地的仓库中。须要运行应用的时候,将容器指定到对应的镜像去运行就能够了。 DockerHub上有很多基础镜像,均可以直接拿来用。spa

从零开始的Docker部署

Dockerfile

若是想从0开始构建本身的镜像,咱们就须要本身编写Dockerfile了,下面贴了一个例子。操作系统

FROM golang:latest

WORKDIR $GOPATH/go-app
COPY . $GOPATH/go-app
RUN go build .

EXPOSE 8000
ENTRYPOINT ["./go-app"]
复制代码

下面说说这几行都干了啥:

  1. FROM 指定了基础镜像,这是必需要有的指令,并且是第一条。
  2. WORKDIR <工做目录> 指定了工做目录。若目录不存在,会自动建立。
  3. COPY <源路径> <目标路径> 将构建上下文目录中的源路径里面的文件,复制到镜像的目标路径的位置。
  4. RUN 执行命令
  5. EXPOSE 声明运行时容器提供的服务端口。(只是一个声明,运行的时候不会开这个端口)
  6. ENTRYPOINT 指定容器启动程序和参数

构建镜像

有了这些命令,接下来咱们就能经过docker build命令构建本身的镜像了。

"-t" 指定了镜像的名称 "." 表示当前构建的目录。如今咱们能够经过docker images命令,查看已经构建完成的镜像。

运行容器

有了镜像,咱们如今就能够用来运行容器了。

"-p port1:port2" 指定了端口映射,port1是宿主机,port2是容器端口。"go-app"是咱们建立的镜像名称。

这个例子就完了,So easy~

综上

以上只是一个简单的入门,后续会带来更多Docker实战内容。








相关文章
相关标签/搜索