镜像常用操作命令

拉取镜像

可以使用 docker pull 命令来从仓库获取所需要的镜像。

$ sudo docker pull debian

该命令默认拉取的是Docker Hub镜像仓库上的镜像,实际上相当于 $ sudo docker pull registry.hub.docker.com/debian:latest 命令,即从注册服 务器 registry.hub.docker.com 中的 debian 仓库来下载标记为 latest(最新的) 的镜像。

如果要从私有镜像仓库镜像拉取镜像,只要填上自已仓库地址即可,如: $sudo docker pull myregistry.com/debian:latest。

列出本地镜像

使用 docker images 显示本地已有的镜像。

运行镜像

  • 先使用下载的镜像启动容器

$ sudo docker run -t -i debian/latest /bin/bash

使用Docker commit创建镜像

  • 容器里安装软件

$apt-install curl

使用docker commit 命令来提交更新后的副本.

$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8(container_id) ouruser/sinatra:v

其中, -m 来指定提交的说明信息,跟我们使用的版本控制工具一样; -a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。

这时候查查本地镜像docker image, 可以看到多了刚生成的镜像了。

使用Dockerfile来创建镜像

使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我们可以使用 docker build 来创建一个新的镜像。为此,首先需要创建一个 Dockerfile,包含一些如何创建镜像的指令。

新建一个目录和一个Dockerfile:

# This is a comment
FROM node:latest
MAINTAINER allen.hu <[email protected]>
RUN apt-get -qq curl
RUN apt-get -qq babe-cli

编写完成 Dockerfile 后可以使用 docker build 来生成镜像。

$ sudo docker build -t "hujb2000/node:v2" .

其中 -t 标记来添加 tag,指定新的镜像的用户信息。 “.” 是 Dockerfile 所在的路径(当前目录),也可以 替换为一个具体的 Dockerfile 的路径。

Dockfile 中的指令被一条一条的执行。每一步都创建了一个新的容器,在 容器中执行指令并提交修改(就跟之前介绍过的 docker commit 一样)。当所有的指令都执行完毕之 后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被删除和清理了。

Dockerfile 基本的语法详见这里

上传镜像

用户可以通过 docker push 命令,把自己创建的镜像上传到仓库中来共享。例如,用户在 Docker Hub 上 完成注册后,可以推送自己的镜像到仓库中。

$sudo docker push hujb2000/node:v2, 该命令提交镜像到Docker Hub上了,相当于 $sudo docker push registry.hub.docker.com/hujb2000/node:v2

你也可以通过以下命令上传镜像到自己的仓库: $sudo docker push myregistry.com/node:v2

删除本地镜你

docker rmi

删除所以标识为""的镜像: docker rmi -f $( docker images | grep ""| awk '{print $3}' | sort –r ) #删除所有镜像

*注意:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器。