Docker 快速上手

Docker 是一个开源容器引擎。Docker 可以让开发者打包他们的应用以及依赖包的一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

由于 Docker 使用基于容器的沙箱机制来实现虚拟化,相对于传统虚拟机,Docker 具有秒级启动速度、易于移植、硬件需求更低、能详细记录每一步操作等优点。所以 Docker 更适合于 Web 应用打包、自动化测试和持续集成、发布等场景。

构建自己的镜像

构建应用前,我们需要编写 Dockerfile。例如,我们需要构建一个基于 ubuntu 16.04 的虚拟环境,并安装 vim,则 Dockerfile 需要这么写:

编写好后,在 Dockerfile 所在目录使用“build”命令构建镜像:

只要没提示错误,则表示构建成功。

修改标签

构建成功后,命令提示符会返回一个十六进制数,代表此镜像的标签。

十六进制数并不利于记忆,所以我们需要给它改名。

使用“tag”命令修改标签:

发布镜像

在发布镜像前,我们需要先到 Docker 网站注册一个账号

注册之后创建属于自己的仓库(repository)。

在“修改标签”一节中,新标签的名称应当包含“账号/仓库”,其后的标签名称可以自己拟定。

注册好账号后,可以使用“push”命令将构建好的镜像推送到 Docker Hub:

推送过程会上传服务器尚不存在的镜像。

你会发现推送的镜像不止一个,有的服务器已经存在了,有的则需要上传。这是因为,我们不是从零开始构建镜像,而是在已存在的 ubuntu 16.04 基础上构建。ubuntu 16.04 镜像本身就已存在,所以无需上传。需要上传的是服务器尚不存在的。这其中,Dockerfile 中每一条 RUN 命令执行后都会在前一步的基础上生成一个新的镜像。因此,如果有必要,RUN 命令不要过多,尽量将多条 Shell 命令合并为一句,而只在可能需要分支和继承的某个步骤上单独编写 RUN 命令。

拉取镜像

对于已经发布到 Docker Hub 的镜像,可以简单使用“pull”命令将相应的镜像拉取到本地:

存放位置一般在 /var/lib/docker 中。

列出镜像

使用“images”命令列出本机已下载的所有镜像:

删除镜像

对于不再使用的镜像,最好尽快删除,以免占用太多空间。

使用“rmi”命令删除相应的镜像:

使用删除命令后,如果提示该镜像依赖的某个镜像正在使用,请不要轻易加“force”参数。再搞清楚依赖的镜像是什么后,再删也不迟。

举例

我自己构建了 ns3 和 nanonetworks 模块的镜像。点击这里查看。

所有 Dockerfile 可以在这里找到。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据