一、镜像(image)
(一)获得镜像
1.可以使用 docker pull 命令来从仓库获取所需要的镜像。
$ sudo docker pull ubuntu:12.04(下载一个Ubuntu 12.04 镜像)
$ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04 (从非官网下载镜像)
$ sudo docker run -t -i ubuntu:12.04 /bin/bash
3.使用 docker images 显示本地已有的镜像。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
- 来自于哪个仓库,比如 ubuntu (REPOSITORY )
- 镜像的标记,比如 14.04 (TAG )
- 它的 ID 号(唯一) (IMAGE ID)
- 创建时间 (CREATED)
- 镜像大小 ( VIRTUAL SIZE)
(二)修改已有镜像
1.先使用下载的镜像启动容器。
$ sudo docker run -t -i training/sinatra /bin/bash
2.在容器中添加 json 和 gem 两个应用。
root@0b2616b0e5a8:/# gem install json
3.使用 exit 来退出,使用 docker commit 命令来提交 更新后的副本
$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
(三)创建镜像
使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。
1. 新建一个目录和一个 Dockerfile
$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile
2. 向Dockerfile文件编写指令,创建镜像,例如:
FROM ubuntu:14.04
MAINTAINER Docker Newbee <newbee@docker.com>
RUN apt -get -qq update
RUN apt -get -qqy install ruby ruby-dev
RUN gem install sinatra
- 使用 # 来注释
- FROM 指令告诉 Docker 使用哪个镜像作为基础
- 接着是维护者的信息
- RUN 开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件
3.使用docker build来生成镜像
$ sudo docker build -t="ouruser/sinatra:v2" .
其中 -t 标记来添加 tag,指定新的镜像的用户信息。 “.” 是 Dockerfile 所在的路径(当前目录),也可以 替换为一个具体的 Dockerfile 的路径。
ADD myApp /var/wwwEXPOSE 80CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
4. 利用新创建的镜像来启动一个容器。
$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
5. 可以用 docker tag 命令来修改镜像的标签。
$ sudo docker tag 5db5f8471261 ouruser/sinatra:devel
(四) 从本地文件系统导入
1.先下载了一个 ubuntu-14.04 的镜像,之后使用以下命令导入:
$ sudo cat ubuntu -14.04-x86_64-minimal.tar.gz | docker import -ubunt:14.04
2. 可以通过 docker push 命令,把自己创建的镜像上传到仓库中来共享
$sudo docker push ouruser/sinatra
3. 导出镜像到本地文件,可以使用 docker save 命令。
$ sudo docker save -o ubuntu_14.04.tar ubuntu:14.04
4. 可以使用 docker load 从导出的本地文件中再导入到本地镜像库
$ sudo docker load - -input ubuntu_14.04.tar 或
$ sudo docker load <ubuntu_14.04.tar
5.移出本地镜像
$sudo docker rmi training/sinatra
所有内容皆为个人总结或转载别人的文章,只为学习技术。 若您觉得文章有用,欢迎点赞分享! 若无意对您的文章造成侵权,请您留言,博主看到后会及时处理,谢谢。