依据官方的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引擎就会做一系列下面的操作:
- 检查你机器的本地是否有hello-world这个镜像。
- 如果没有,从Docker Hub上下载对应名称的镜像
- 加载这个镜像到容器中,并执行它。
根据镜像构建的内容,hello-world这个镜像执行了一个简单的命令然后就退出了。
Docker镜像可以做更多更复杂的事情。比如镜像可以启动像数据库那么复杂的软件,然后等你(或其他人)添加数据,并把数据存储以供以后使用,与此同时还能服务其他人。
那么是谁构建了这个hello-world镜像呢?Docker本身不能,但是任何“人”都能。Docker引擎可以让人(或者某个组织)通过Docker镜像中创建并分享软件。使用Docker时不需要担心你的电脑能否运行Docker镜像里面的软件–因为Docker容器一定能运行它。
找到并运行whalesay镜像
世界上所有的人都能创建Docker镜像,你可以通过Docker Hub来搜索这些镜像,接下来,你就需要在Docker Hub中找一个需要在入门简介中会用到的镜像
在Docker Hub的右上角搜索栏中搜索whalesay,并打开结果页。
要结果页中打开docker/whalesay这项结果。
每个镜像仓库都会包含对应的镜像的相关信息,这个镜像是什么类型的软件,如何使用等。whalesay就是基于一个叫Unbuntu的Linux发行版的镜像打开命令行(Docker Quick Start,如果有Docker for mac就是直接打开终端),直接输入下边的命令并执行
docker run docker/whalesay cowsay boo
这个命令就是在容器中运行docker/whalesay这个镜像,然后终端会有一大堆输出,这里不贴图了,就是在本地没有找到docker/whalesay这个镜像,然后去Docker Hub拉了一份下来的过程。
运行完成后,在终端内继续输入下面的命令
docker images
会列出你在本地已有的docker镜像(带有横向标题),当你在容器中运行Docker镜像的时候,Docker会下载你本地没有镜像到你本地保存起来,Docker只会在Docker Hub上的对应的镜像源发生变化的时候,才会再次下载对应的新镜像到本地。当然你可以自己手动删除在本地的Docker镜像。
使用更长或者更短的话,再试一下运行docker/whalesay,查看结果。
创建属于你自己的镜像
通过增强docker/whalesay的功能来练习创建Docker镜像。
首先用编辑器(TextEdit或者MacVim,其他…)编写一个简短的Dockerfile。Dockerfile描述了软件如何被加入镜像文件中,它告诉软件需要用到什么运行环境或者需要运行什么命令。
打开终端,创建一个叫做mydockerbuild的文件夹,这个文件夹里就是放创建镜像需要的所有东西。进入mydockerbuild文件夹。
mkdir mydockerbuild
cd mydockerbuild
创建Dockerfile文件。并在编辑器中打开Dockerfile
touch Dockerfile
vi Dockerfile
首先在文件中输入如下内容
FROM docker/whalesay:last
FROM关键字告诉Docker你即将创建的Docker镜像是基于哪个已有镜像的。现在是基于已的docker/whalesay镜像。
接下来向镜像中加入fortunes程序,继续向Dockerfile中加入以下内容
RUN apt-get -y update && apt-get install -y fortunes
fortunes程序含有一个命令可以“智能的”打印出whale要说的话。所以第一步应该安装这个程序,这一行内容使用apt-get这个管理器程序安装fortunes程序。如果这对于来说非常困难,没有关系,照着一步一步做就是。
现在镜像已有了它需要的的软件程序,要做的就是当镜像加载完之后告知fortunes程序运行起来,最后向Dockerfile中加入如下内容
CMD /usr/games/fortunes -a | cowsay
这行内容就是告诉fortunes程序把对话输出发送给cowsay程序。
保存Dockerfile,现在在Dockerfile中已经有了全部的软件依赖和命令描述,现在可以准备构建一个新Docker镜像了。
cat Dockerfile确认一下Dockerfile的内容没错,通过以下命令来构建一个新镜像。
docker build -t docker-whale .
不要看错,最后还有一个句点,最后出现sucessfully build XXXX就表示构建镜像成功。构建过程需要几分钟,先了解一下构建的过程。
了解构建过程
docker build -t docker-whale .这行命令通过当前目录的Dockerfile的内容,在你的机器本地构建了一个叫docker-whale的镜像。
- 首先Docker会确认构建所需要的所有东西都已齐全。同时会载入whale这个镜像,由于之前已经下载了docker/whalesay镜像,Docker就不会再次去下载镜像了。
- 接下来,开始更新apt-get包管理器,这里会显示多好条信息,数量太多,不再展示。
- 更新完成,开始安装新的叫fortunes的程序。
- 最后Docker完成构建并输出构建成功的提示信息。
运行你新构建出来的镜像
这一步就要验证刚刚构建成功的Docker镜像并且加载运行它。
再次打开Docker Quick Start终端,输入docker images命令查看本地的Docker镜像,就会发现在docker-whale已经存在了。
运行如下命令
docker run docker-whale
这次就会发现whale说出的话更”智能”了,而且运行的命令也更短了,你可能会发现,这次Docker并没有下载斜体东西,就能可运行了,那是因为这个docker-whale镜像是在当前本地机器上构建而成的。
创建Docker Hub帐号和仓库
这步非常简单,大部分略过
- 打开链接,注册Docker Hub帐号
- 成功注册,验证邮箱,登陆帐号
- 选择Create Repository,选public,然后填上必要信息点击Create就成功创建了一个仓库。
标注,推送,拉取你自己的镜像
这一步里,需要标注,推送自己的镜像到刚才在Docker Hub的仓库里,完成之后再从自己的仓库里拉取对应的镜像测试一下。
标注自己刚构建出的镜像,打开终端,docker images命令查看已有的镜像,找到刚才构建成的docker-whale的镜像的IMAGE-ID这一列,记下对应的字符串
注意,当前信息的RESPOSITORY列显示的信息是不带namespace的,需要用你自己的Docker Hub帐号名称指定namespace,类似这样:
YOUR_DOCKERHUB_NAME/docker-whale
使用刚才记下的字符串(也就是IMAGE-ID)使用docker tag命令给给docker/whale打标签。
docker tag IMAGE-ID YOUR_DOCKERHUB_NAME/docker-whale
大写部分替换成对应的自己实际值就可以了,这时再用docker images命令查看就可以看到刚新打标签的YOUR_DOCKERHUB_NAME/docker-whale镜像了。
命令里登陆Docker Hub,如下命令
docker login —username=YOUR_DOCKERHUB_NAME —email=YOUR_EMAIL
回车根据提示输入密码就可以了
输入如下命令来将新的镜像推送到刚才创建的仓库里
docker push YOUR_DOCKERHUB_NAME/docker-whale
出现成功提示就可以在网页上打开刚才Docker Hub里刚才创建的仓库里看内容了。
测试刚push上去的镜像
因为本地已以存在了对应的docker/whale的镜像了,为了测试,这里需要将对应的本地镜像删除,使用docker rmi命令删除本地的镜像。
使用指定的文件名
docker rmi -f docker-whale
使用指定的IMAGE-ID
docker rmi -f IMAGE-ID
像最开始的操作,直接使用docker run命令
docker run YOUR_DOCKERHUB_NAME/docker-whale
Docker发现在本地没有对应的镜像,直接就下载对应的镜像到本地。
简要入门笔记完毕。