Docker 入门

Docker是一个应用容器化的平台,容器化对应用提供了一致性的运行环境,同时为应用的弹性扩容,维护,分发以及开发都提供了方便。

Docker的结构

结构上Docker类似于VM,有着资源隔离和分配的优势。
Docker结构
但是也有一些差异,关键的一个不同点在于没有Guest OS,所有APP使用Host OS的内核,不同的APP以不同的独立的进程运行在Host OS的用户态。

Hello World

安装Docker后,即可直接执行Hello World

 $ docker run hello-world
 Unable to find image 'hello-world:latest' locally
 latest: Pulling from library/hello-world
 535020c3e8ad: Pull complete
 af340544ed62: Pull complete
 Digest: sha256:a68868bfe696c00866942e8f5ca39e3e31b79c1e50feaee4ce5e28df2f051d5c
 Status: Downloaded newer image for hello-world:latest

 Hello from Docker.
 This message shows that your installation appears to be working correctly.

 To generate this message, Docker took the following steps:
 1. The Docker Engine CLI client contacted the Docker Engine daemon.
 2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker Engine daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
    to your terminal.

 To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

 Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

 For more examples and ideas, visit:
 https://docs.docker.com/userguide/

运行Hello World的命令由3部分构成
docker-run-helloworld

一个镜像(Image)是一个完全整的APP,包括其需要的所有资源,本身无状态,且永远不会改变。当一个镜像被Docker使用运行时,则生成了一个容器(Container),也就是说容器是镜像的一个运行时实例。

当Hello World的镜像被执行时,Docker做了以下几个步骤:

  1. 检查本地是否有hello-world镜像
  2. 如果本地不存在,则从远程(Docker Hub)下载到本地
  3. 所有需要的组件都在本地可用时,加载镜像到容器执行

类似Maven之类的构建工具,Docker本地会维护一份镜像缓存,当本地不存在时,Docker会到Docker Hub上获取镜像。Docker Hub是一个Docker镜像仓库平台,hello-world即为Docker Hub 上一个公共的镜像,该镜像简单的打印一些信息后退出。

Dockerfile

Dockerfile是一个Docker镜像的描述清单,描述了镜像中被烧入了哪些软件,以及这些软件如何执行。

Dockerfile作用上类似Maven的POM,也是一个普通的文本文件,以docker/whalesay为基础,安装fortunes,并让fortunes的输出自动作为docker/whale的输入的一个Dockerfile为:

 FROM docker/whalesay:latest
 RUN apt-get -y update && apt-get install -y fortunes
 
 CMD /usr/games/fortune -a | cowsay

docker/whalesay是一个公共的镜像,该镜像接受一个输入

 $ docker run docker/whalesay cowsay boo-boo
 < boo-boo >
    ......

fortunes 是类Unix上一个随机输出一些短语的程序。

通过安装fortunes,把forunes的输出自动作为docker/whalesay的输入,从而新的基于docker/whalesay创建的镜像可以自动输出短语,而不用人为指定。

创建一个镜像

假设在Dockerfile所在目录为“.”,执行命令

docker build -t docker-whale .

创建一个新的镜像docker-whale。

运行新生成的镜像

 $ docker run docker-whale
  _________________________________________
 / "He was a modest, good-humored boy. It  \
 \ was Oxford that made him insufferable." /
  ......
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值