1、由container创建镜像(修改已有镜像):
修改container后,commit:
docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。 使用 docker images 来查看新创建的镜像
2、利用 Dockerfile 来创建镜像 vi Dockerfile
# This is a commentFROM ubuntu:14.04MAINTAINER Docker NewbeeRUN apt-get -qq updateRUN apt-get -qqy install ruby ruby-devRUN gem install sinatra
Dockerfile 基本的语法是 使用#来注释 FROM 指令告诉 Docker 使用哪个镜像作为基础 接着是维护者的信息 RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件 编写完成 Dockerfile 后可以使用 docker build 来生成镜像。
docker build -t="ouruser/sinatra:v2" .
其中 -t 标记来添加 tag,指定新的镜像的用户信息。 “.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。 可以看到 build 进程在执行操作。它要做的第一件事情就是上传这个 Dockerfile 内容,因为所有的操作都要依据 Dockerfile 来进行。 然后,Dockfile 中的指令被一条一条的执行。每一步都创建了一个新的容器,在容器中执行指令并提交修改(就跟之前介绍过的 docker commit 一样)。当所有的指令都执行完毕之后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被删除和清理了。 *注意一个镜像不能超过 127 层 利用 ADD 命令复制本地文件到镜像;用 EXPOSE 命令来向外部开放端口;用 CMD 命令来描述容器启动后运行的程序等
3、从本地文件系统导入
cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
存出镜像: 如果要导出镜像到本地文件,可以使用 docker save 命令。 docker save -o ubuntu_14.04.tar ubuntu:14.04 载入镜像 可以使用 docker load 从导出的本地文件中再导入到本地镜像库 docker load --input ubuntu_14.04.tar 或: docker load < ubuntu_14.04.tar
4、导出容器快照到本地文件
docker export 7691a814370e > ubuntu.tar
5、导入容器快照
cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
6、清理所有未打过标签的本地镜像 docker images 可以列出本地所有的镜像,其中很可能会包含有很多中间状态的未打过标签的镜像,大量占据着磁盘空间。 使用下面的命令可以清理所有未打过标签的本地镜像 $ sudo docker rmi $(docker images -q -f "dangling=true") 其中 -q 和 -f 是缩写, 完整的命令其实可以写着下面这样,是不是更容易理解一点? $ sudo docker rmi $(docker images --quiet --filter "dangling=true")