Docker镜像和容器操作(一)
2015-09-09 23:20
746 查看
Docker三个核心的概念:镜像、容器和仓库
镜像 -- 类似于虚拟机镜像,包括系统文件等。镜像是只读的,容器在启动时候创建一层可写层作为最上层。
容器 -- 类似于轻量级沙盒,通过容器隔离应用,容器可以启动,开始,停止,删除等。
仓库 -- 集中存放镜像文件的地方。可分为私有和公有。目前最大的公有仓库DockerHub。
如果使用操作系统自带包安装 Docker,目前安装的版本是比较旧的 0.9.1。 要安装更新的版本,可以通过使用 Docker 源的方式。
然后重复上面的步骤即可。
安装之后启动 Docker 服务。
Docker获取镜像
可以使用
下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。
下载过程中,会输出获取镜像的每一层信息。
该命令实际上相当于
有时候官方仓库注册服务器下载较慢,可以从其他仓库下载。 从其它仓库下载时需要指定完整的仓库注册服务器地址。例如
完成后,即可随时使用该镜像了,例如创建一个容器,让其中运行 bash 应用。
显示本地镜像
使用
在列出信息中,可以看到几个字段信息
来自于哪个仓库,比如 ubuntu
镜像的标记,比如 14.04
它的
创建时间
镜像大小
其中镜像的
如果不指定具体的标记,则默认使用
创建镜像
注意:记住容器的 ID,稍后还会用到。
在容器中添加 json 和 gem 两个应用。
当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用
其中,
使用
之后,可以使用新的镜像来启动容器
镜像 -- 类似于虚拟机镜像,包括系统文件等。镜像是只读的,容器在启动时候创建一层可写层作为最上层。
容器 -- 类似于轻量级沙盒,通过容器隔离应用,容器可以启动,开始,停止,删除等。
仓库 -- 集中存放镜像文件的地方。可分为私有和公有。目前最大的公有仓库DockerHub。
Ubuntu 系列安装 Docker
通过系统自带包安装
Ubuntu 14.04 版本系统中已经自带了 Docker 包,可以直接安装。$ sudo apt-get update $ sudo apt-get install -y docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker $ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
如果使用操作系统自带包安装 Docker,目前安装的版本是比较旧的 0.9.1。 要安装更新的版本,可以通过使用 Docker 源的方式。
通过Docker源安装最新版本
要安装最新的 Docker 版本,首先需要安装 apt-transport-https 支持,之后通过添加源来安装。$ sudo apt-get install apt-transport-https $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" $ sudo apt-get update $ sudo apt-get install lxc-docker
14.04 之前版本
如果是较低版本的 Ubuntu 系统,需要先更新内核。$ sudo apt-get update $ sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring $ sudo reboot
然后重复上面的步骤即可。
安装之后启动 Docker 服务。
$ sudo service docker start
Docker获取镜像
可以使用
docker pull命令来从仓库获取所需要的镜像。
下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。
$ sudo docker pull ubuntu:12.04 Pulling repository ubuntu ab8e2728644c: Pulling dependent layers 511136ea3c5a: Download complete 5f0ffaa9455e: Download complete a300658979be: Download complete 904483ae0c30: Download complete ffdaafd1ca50: Download complete d047ae21eeaf: Download complete
下载过程中,会输出获取镜像的每一层信息。
该命令实际上相当于
$ sudo docker pull registry.hub.docker.com/ubuntu:12.04命令,即从注册服务器
registry.hub.docker.com中的
ubuntu仓库来下载标记为
12.04的镜像。
有时候官方仓库注册服务器下载较慢,可以从其他仓库下载。 从其它仓库下载时需要指定完整的仓库注册服务器地址。例如
$ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04 Pulling dl.dockerpool.com:5000/ubuntu ab8e2728644c: Pulling dependent layers 511136ea3c5a: Download complete 5f0ffaa9455e: Download complete a300658979be: Download complete 904483ae0c30: Download complete ffdaafd1ca50: Download complete d047ae21eeaf: Download complete
完成后,即可随时使用该镜像了,例如创建一个容器,让其中运行 bash 应用。
$ sudo docker run -t -i ubuntu:12.04 /bin/bash root@fe7fc4bd8fc9:/#
显示本地镜像
使用
docker images显示本地已有的镜像。
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 12.04 74fe38d11401 4 weeks ago 209.6 MB ubuntu precise 74fe38d11401 4 weeks ago 209.6 MB ubuntu 14.04 99ec81b80c55 4 weeks ago 266 MB ubuntu latest 99ec81b80c55 4 weeks ago 266 MB ubuntu trusty 99ec81b80c55 4 weeks ago 266 MB ...
在列出信息中,可以看到几个字段信息
来自于哪个仓库,比如 ubuntu
镜像的标记,比如 14.04
它的
ID号(唯一)
创建时间
镜像大小
其中镜像的
ID唯一标识了镜像,注意到
ubuntu:14.04和
ubuntu:trusty具有相同的镜像
ID,说明它们实际上是同一镜像。
TAG信息用来标记来自同一个仓库的不同镜像。例如
ubuntu仓库中有多个镜像,通过
TAG信息来区分发行版本,例如
10.04、
12.04、
12.10、
13.04、
14.04等。例如下面的命令指定使用镜像
ubuntu:14.04来启动一个容器。
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
如果不指定具体的标记,则默认使用
latest标记信息。
创建镜像
修改已有镜像
先使用下载的镜像启动容器。$ sudo docker run -t -i training/sinatra /bin/bash root@0b2616b0e5a8:/#
注意:记住容器的 ID,稍后还会用到。
在容器中添加 json 和 gem 两个应用。
root@0b2616b0e5a8:/# gem install json
当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用
docker commit命令来提交更新后的副本。
$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
其中,
-m来指定提交的说明信息,跟我们使用的版本控制工具一样;
-a可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。
使用
docker images来查看新创建的镜像。
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE training/sinatra latest 5bc342fa0b91 10 hours ago 446.7 MB ouruser/sinatra v2 3c59e02ddd1a 10 hours ago 446.7 MB ouruser/sinatra latest 5db5f8471261 10 hours ago 446.7 MB
之后,可以使用新的镜像来启动容器
$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash root@78e82f680994:/#
相关文章推荐
- 【docker】正式开始容器之旅
- ubuntu 14.04 安装docker
- docker私有容器搭建
- 6 个下一代 Docker 监测工具
- MAC上安装Docker
- 监控宝首推Docker监控 确保容器稳定运行
- docker 命令
- docker镜象
- Docker命令详解
- docker的安装
- docker 学习笔记
- 4.1.2、你的Docker Hub账户
- 4.1.1、Docker Hub 简介
- Docker基础技术:Linux Namespace(上)
- 【活动】监控宝惹火Docker监控,开放试用中
- 用Docker搭建微信公众号
- centos 7 systemd docker http proxy
- docker高级应用之镜像打包与节点推送
- docker高级应用之镜像打包与节点推送
- docker 容器