新手学Docker(1)Hello World

Docker从哪儿下载?

因为咱们访问Docker官网通常状况下会很是慢,因此咱们不得不把目光投向国内的镜像站,还好,DaoCloud为咱们扫清了一系列障碍,点击前往html

你只须要如下步骤:前端

  • 注册一个DaoCloud帐号nginx

  • 进入下载页面,根据本身的系统下载合适的镜像包git

  • 安装完成后配置Docker加速器docker

  • 打开命令行,执行docker version,观察Docker是否安装成功shell

入门锦囊

名词解释

  • Imagecentos

    • Image是一堆文件的集合体,从用户角度来看,它是一个镜像包,它的特征是只读的,它是别人(或者咱们本身)构建好的一个环境,在Docker世界里,咱们会常常寻找第三方包,来支持咱们的工做,如nginx,centos,咱们不修改它,咱们基于它实例出的container进行工做。bash

  • container服务器

    • Image是只读的,咱们是不可能也不必去修改Image的,咱们要作的就是实例化Image,即称为container,咱们所作的修改都是基于container的,如图所示,container其实就是Image的一份拷贝,可是多了一部分可读写的区域,咱们就是对这部分进行加工处理的,container其实也是一系列文件,真正支持咱们交互的是Running container,它多出了一个进程,此进程提供咱们与container读写区域沟通的途径,咱们才得以有机会运行Dockerfrontend

container通过咱们的处理就像在git仓库里修改了文件同样,将修改后的container打快照固化为Image,这即是Docker生态的流动源泉。起初,咱们可能只是一个壳子,人们陆陆续续为其增添功能,而且固化,通过一系列的串行做业后,这个壳子镜像凝结了前人的智慧,傲娇地展现在咱们面前。

命令解释

  • docker run [Image Name]

    • 检查本地是否有Image Name

    • 若是没有的话,则从远端仓库下载

    • 加载Image而且实例化container(实际上执行了 docker create && docker start

  • docker ps

    • 默认显示当前正在运行container

    • 加上-a能够显示建立过的全部的container

小提示:按住Ctrl + C 能够中断当前前台进程(占用着你的Shell,让你没法继续进行操做的那个进程)

Hello World 1

  1. 输入docker run 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.

执行docker ps -a,将会显示一个列表,显示错乱每每是由于你的命令行工具太窄了,你能够试着全屏显示。咱们启动过的全部的container将会在这里显示。

为何不能直接执行docker ps?hello-world这个Image在建立好container之后,打印信息,而后自动stop这个container,因此它已经不在正在运行的container列表里了。

Hello World 2

  • 输入docker run centos /bin/echo 'hello world',这一步咱们不只仅启动了一个container,还传输了一个命令进去执行了。

docker run centos /bin/echo 'Hello world'

    Hello world
  • 输入docker run -it centos能够启动一个交互性的centos,如同你正在远程ssh链接服务器。

神器容器在哪里?

目前为止,咱们大约执行了3次docker run命令,不过目前看来,咱们仍是回到了本身的shell进程上,那么刚才执行的那些容器在哪里呢?咱们试着再次输入docker ps -a,仔细观察打印出的数据,咱们曾经启动过的容器都在这儿,虽然它们都不处于运行状态,观察最右边的NAMES字段,Docker会为每个容器起一个名字,小猫小狗随机取,若是咱们想本身起名的话,请在执行run命令时加上--name [you_define_name]参数试试看。

咱们固然也能够再次唤醒咱们的容器们,执行docker start [container_name]便可。

咱们试着再次启动一个容器。

# 新建一个名为 小明 的容器
docker run -it --name xiaoming centos
# Ctrl + c 退出交互进程
docker stop xiaoming
# 查看最近建立的一个容器 -l -> latest 咱们将会看到小明被打印了
docker ps -l
# 咱们再次重启小明,可是发现回不到命令行交互模式了
docker start xiaoming

有时候,咱们可能会有想进入容器内部,就像一直很熟悉的ssh链接同样,可是在Docker里,要尽可能规避这种想法,咱们能够经过docker exec去实现这种需求,详情见扩展阅读。

扩展阅读

相关文章
相关标签/搜索