1
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
Docker 和传统虚拟化方式的不同之处,在于docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
2
Docker 镜像就是一个只读的模板。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
3 centos上安装启动
安装:
$ sudo yum install docker
安装之后启动 Docker 服务,并让它随系统启动自动加载。
$ sudo service docker start
$ sudo chkconfig docker on
4
使用 docker pull 命令来从仓库获取所需要的镜像。
$ sudo docker pull ubuntu:12.04
启动镜像
$ sudo docker run -t -i ubuntu:12.04 /bin/bash
5 列出本地镜像
$ sudo docker images
6 修改已有镜像
$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;
-a 可以指定更新的用户信息;
之后是用来创建镜像的容器的 ID;
最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。
7 利用 Dockerfile 来创建镜像
使用 docker commit 来扩展一个镜像比较简单,也可以使用 docker build 来创建一个新的镜像。
Dockerfile 中每一条指令都创建镜像的一层,例如:
# This is a comment
FROM ubuntu:14.04
MAINTAINER Docker Newbee <[email protected]>
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra
Dockerfile 基本的语法是
FROM 指令告诉 Docker 使用哪个镜像作为基础
接着是维护者的信息
RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件
编写完成 Dockerfile 后可以使用 docker build 来生成镜像。
$ sudo docker build -t="ouruser/sinatra:v2" .
其中 -t 标记来添加 tag,指定新的镜像的用户信息。 “.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。
此外,还可以利用 ADD 命令复制本地文件到镜像;
用 EXPOSE 命令来向外部开放端口;
用 CMD 命令来描述容器启动后运行的程序等。例如
# put my local web site in myApp folder to /var/www
ADD myApp /var/www
# expose httpd port
EXPOSE 80
# the command to run
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
8
docker tag 命令来修改镜像的标签。
$ sudo docker tag 5db5f8471261 ouruser/sinatra:devel
$ sudo docker images ouruser/sinatra
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB
9从本地文件系统导入一个镜像
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
10上传镜像
通过 docker push 命令,把自己创建的镜像上传到仓库中来共享
$ sudo docker push ouruser/sinatra
11 存出和载入镜像
导出镜像到本地文件docker save命令
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 c4ff7513909d 5 weeks ago 225.4 MB
$sudo docker save -o ubuntu_14.04.tar ubuntu:14.04
载入镜像docker load
从导出的本地文件中再导入到本地镜像库,例如
$ sudo docker load --input ubuntu_14.04.tar
或
$ sudo docker load < ubuntu_14.04.tar
12 移除本地镜像
docker rmi 命令移除本地的镜像
docker rm 命令移除容器
*注意:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器。
$ sudo docker rmi training/sinatra