Docker-for-Mac简要入门记录
2016年05月10日 Docker

依据官方的Get Started的简要入门(简略翻译修改官方的Docker文档,很多信息来自官方Doc),基于Beta版的Docker for mac(目前正在邀请测试,测试邀请链接)。

概述

根据官方的入门简介,可以做到如下:

  • 使用DockerTool工具安装Docker相关软件(可以直接使用Docker for mac略过此步)
  • 在Docker容器中运行软件
  • Docker Hub上查看镜像
  • 创建属于你自己的镜像并在Docker容器中运行
  • 创建Docker Hub帐号和镜像仓库
  • 创建属于你自己的镜像
  • 把镜像推到Docker Hub上共享给他人使用

入门前提:

会使用最基本的命令行,使用简单的命令(多多益善),类似如何浏览目录,列出当前进程,操作文件等命令。

安装Docker

直接使用使用DockerTool工具安装即可,pkg文件,需要密码向bin目录写入东西,安装完成会出lanuchpad中会现一个叫Docker Quick Start的图标,点击即可快速打开终端,可以通过输入如下命令来检测是否成功安装工具

docker run hello-world

了解镜像和容器

Docker引擎的核心就是镜像和容器。

容器就是简化版本的Linux操作系统,而镜像就是加载到容器中的软件。如上面的例子中的 docker run hello-world命令,当执行这个命令的时候,Docker引擎就会做一系列下面的操作:

  1. 检查你机器的本地是否有hello-world这个镜像。
  2. 如果没有,从Docker Hub上下载对应名称的镜像
  3. 加载这个镜像到容器中,并执行它。

根据镜像构建的内容,hello-world这个镜像执行了一个简单的命令然后就退出了。

Docker镜像可以做更多更复杂的事情。比如镜像可以启动像数据库那么复杂的软件,然后等你(或其他人)添加数据,并把数据存储以供以后使用,与此同时还能服务其他人。

那么是谁构建了这个hello-world镜像呢?Docker本身不能,但是任何“人”都能。Docker引擎可以让人(或者某个组织)通过Docker镜像中创建并分享软件。使用Docker时不需要担心你的电脑能否运行Docker镜像里面的软件–因为Docker容器一定能运行它。

找到并运行whalesay镜像

世界上所有的人都能创建Docker镜像,你可以通过Docker Hub来搜索这些镜像,接下来,你就需要在Docker Hub中找一个需要在入门简介中会用到的镜像

  1. Docker Hub的右上角搜索栏中搜索whalesay,并打开结果页。

  2. 要结果页中打开docker/whalesay这项结果。
    每个镜像仓库都会包含对应的镜像的相关信息,这个镜像是什么类型的软件,如何使用等。whalesay就是基于一个叫Unbuntu的Linux发行版的镜像

  3. 打开命令行(Docker Quick Start,如果有Docker for mac就是直接打开终端),直接输入下边的命令并执行

    docker run docker/whalesay cowsay boo

    这个命令就是在容器中运行docker/whalesay这个镜像,然后终端会有一大堆输出,这里不贴图了,就是在本地没有找到docker/whalesay这个镜像,然后去Docker Hub拉了一份下来的过程。

  4. 运行完成后,在终端内继续输入下面的命令

    docker images

    会列出你在本地已有的docker镜像(带有横向标题),当你在容器中运行Docker镜像的时候,Docker会下载你本地没有镜像到你本地保存起来,Docker只会在Docker Hub上的对应的镜像源发生变化的时候,才会再次下载对应的新镜像到本地。当然你可以自己手动删除在本地的Docker镜像。

  5. 使用更长或者更短的话,再试一下运行docker/whalesay,查看结果。

创建属于你自己的镜像

通过增强docker/whalesay的功能来练习创建Docker镜像。

  1. 首先用编辑器(TextEdit或者MacVim,其他…)编写一个简短的Dockerfile。Dockerfile描述了软件如何被加入镜像文件中,它告诉软件需要用到什么运行环境或者需要运行什么命令。

  2. 打开终端,创建一个叫做mydockerbuild的文件夹,这个文件夹里就是放创建镜像需要的所有东西。进入mydockerbuild文件夹。

    mkdir mydockerbuild

    cd mydockerbuild

  3. 创建Dockerfile文件。并在编辑器中打开Dockerfile

    touch Dockerfile

    vi Dockerfile

  4. 首先在文件中输入如下内容

    FROM docker/whalesay:last

    FROM关键字告诉Docker你即将创建的Docker镜像是基于哪个已有镜像的。现在是基于已的docker/whalesay镜像。

  5. 接下来向镜像中加入fortunes程序,继续向Dockerfile中加入以下内容

    RUN apt-get -y update && apt-get install -y fortunes

    fortunes程序含有一个命令可以“智能的”打印出whale要说的话。所以第一步应该安装这个程序,这一行内容使用apt-get这个管理器程序安装fortunes程序。如果这对于来说非常困难,没有关系,照着一步一步做就是。

  6. 现在镜像已有了它需要的的软件程序,要做的就是当镜像加载完之后告知fortunes程序运行起来,最后向Dockerfile中加入如下内容

    CMD /usr/games/fortunes -a | cowsay

    这行内容就是告诉fortunes程序把对话输出发送给cowsay程序。

  7. 保存Dockerfile,现在在Dockerfile中已经有了全部的软件依赖和命令描述,现在可以准备构建一个新Docker镜像了。

  8. cat Dockerfile确认一下Dockerfile的内容没错,通过以下命令来构建一个新镜像。

    docker build -t docker-whale .

    不要看错,最后还有一个句点,最后出现sucessfully build XXXX就表示构建镜像成功。构建过程需要几分钟,先了解一下构建的过程。

了解构建过程

docker build -t docker-whale .这行命令通过当前目录的Dockerfile的内容,在你的机器本地构建了一个叫docker-whale的镜像。

  1. 首先Docker会确认构建所需要的所有东西都已齐全。同时会载入whale这个镜像,由于之前已经下载了docker/whalesay镜像,Docker就不会再次去下载镜像了。
  2. 接下来,开始更新apt-get包管理器,这里会显示多好条信息,数量太多,不再展示。
  3. 更新完成,开始安装新的叫fortunes的程序。
  4. 最后Docker完成构建并输出构建成功的提示信息。

运行你新构建出来的镜像

这一步就要验证刚刚构建成功的Docker镜像并且加载运行它。

  1. 再次打开Docker Quick Start终端,输入docker images命令查看本地的Docker镜像,就会发现在docker-whale已经存在了。

  2. 运行如下命令

docker run docker-whale

这次就会发现whale说出的话更”智能”了,而且运行的命令也更短了,你可能会发现,这次Docker并没有下载斜体东西,就能可运行了,那是因为这个docker-whale镜像是在当前本地机器上构建而成的。

创建Docker Hub帐号和仓库

这步非常简单,大部分略过

  1. 打开链接,注册Docker Hub帐号
  2. 成功注册,验证邮箱,登陆帐号
  3. 选择Create Repository,选public,然后填上必要信息点击Create就成功创建了一个仓库。

标注,推送,拉取你自己的镜像

这一步里,需要标注,推送自己的镜像到刚才在Docker Hub的仓库里,完成之后再从自己的仓库里拉取对应的镜像测试一下。

  1. 标注自己刚构建出的镜像,打开终端,docker images命令查看已有的镜像,找到刚才构建成的docker-whale的镜像的IMAGE-ID这一列,记下对应的字符串

    注意,当前信息的RESPOSITORY列显示的信息是不带namespace的,需要用你自己的Docker Hub帐号名称指定namespace,类似这样:

    ​ YOUR_DOCKERHUB_NAME/docker-whale

  2. 使用刚才记下的字符串(也就是IMAGE-ID)使用docker tag命令给给docker/whale打标签。

    docker tag IMAGE-ID YOUR_DOCKERHUB_NAME/docker-whale

    大写部分替换成对应的自己实际值就可以了,这时再用docker images命令查看就可以看到刚新打标签的YOUR_DOCKERHUB_NAME/docker-whale镜像了。

  3. 命令里登陆Docker Hub,如下命令

    docker login —username=YOUR_DOCKERHUB_NAME —email=YOUR_EMAIL

    回车根据提示输入密码就可以了

  4. 输入如下命令来将新的镜像推送到刚才创建的仓库里

    docker push YOUR_DOCKERHUB_NAME/docker-whale

    出现成功提示就可以在网页上打开刚才Docker Hub里刚才创建的仓库里看内容了。

测试刚push上去的镜像

  1. 因为本地已以存在了对应的docker/whale的镜像了,为了测试,这里需要将对应的本地镜像删除,使用docker rmi命令删除本地的镜像。

    使用指定的文件名

    docker rmi -f docker-whale

    使用指定的IMAGE-ID

    docker rmi -f IMAGE-ID

  2. 像最开始的操作,直接使用docker run命令

    docker run YOUR_DOCKERHUB_NAME/docker-whale

    Docker发现在本地没有对应的镜像,直接就下载对应的镜像到本地。

简要入门笔记完毕