Docker 镜像、容器、仓库的概念
Docker镜像
Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。
例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。
镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像。用户可以从网上下载一个已经做好的应用镜像,并通过命令直接使用。总之,应用运行是需要环境的,而镜像就是来提供这种环境。
Docker容器
Docker容器(Container)类似于一个轻量级的沙箱子(因为Docker是基于Linux内核的虚拟技术,所以消耗资源十分少),Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。
可以吧每个容器看作一个简易版的Linux系统环境(包括了root用户权限、进程空间、用户空间和网络空间),以及与运行在其中的应用程序打包而成的应用盒子。
镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。就像用ISO装系统之后,ISO并没有什么变化一样。
Docker仓库
Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。
有时候会看到有资料将Docker仓库和注册服务器(Registry)混为一谈,并不严格区分。实际上,注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04,12.04等不同版本的镜像。
根据存储的镜像公开分享与否,Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供稳定的国内访问。如果用户不希望公开分享自己的镜像文件,Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。
当用户创建了自己的镜像之后就可以使用push将它上传到指定的公有或则私有仓库。这样用户下次在另一台机器上使用该镜像时,只需将其从仓库pull下来就可以了。
下面一篇文章介绍了有关上述概念的基本命令
Docker关于镜像、容器、仓库的基本命令
镜像
1.获取镜像
$ docker pull dl.dockerpool.com:5000/ubuntu:14.04
dl.dockerpool.com为注册html" target="_blank">服务器,5000为端口号,ubuntu为仓库名称,14.04是镜像也是版本号
2.查看镜像信息
列出本地主机已有的所有镜像
$ docker images
更改变迁信息
$ docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest
000为镜像ID,显示这个镜像的详细信息
$ docker inspect 000
3.搜寻镜像
$ docker search mysql (输出信息包括镜像名字、描述、星级、是否为官方创建、是否自动创建)
4.删除镜像
$ docker rmi dl.dockerpool.com:5000/ubuntu:latest
注:当有该镜像创建的容器存在时,镜像文件默认是无法删除的,所以删除镜像前最好是删除所有依赖该镜像的容器,请不要用强制删除。
5.创建镜像
有三种方法:
基于已有镜像的容器创建
$ docker commit -m “add new image”-a "" 000(容器ID) test(新建image name)
基于本地模板导入
$ cat ubuntu-14.04-x86_64-minimal.tar.gz | Docker import - ubuntu:14.04
基于dockerfile创建
6.存出镜像
$ docker save -o ubuntu_14.04.tar ubuntu:14.04
7.载入镜像
$ docker load --input ubuntu_14.04.tar
或者
docker load < ubuntu_14.04.tar
8.上传镜像
$ docker push user/test:latest
user用户需要在dockerHub网站注册
容器
容器是镜像的一个运行实例,但它带有额外的可写层
1.创建容器
$ docker create -it ubuntu:12.04
2.创建并启动容器
$ docker run -it ubuntu:12.04 /bin/bash
3.守护态运行
$ docker run -d ubuntu:12.04
4.查看容器信息
$ docker ps [-a -q]
查看终止状态
5.获取容器的输出信息
$ docker logs cet
cet是容器ID前三个字符
6.终止容器
$ docker stop cet
7.启动容器
$ docker start cet
8.重启容器
$ docker restart cet
9.进入容器
attach命令
$ docker attach nostalgic(nostalgic是docker的name)
缺点:所有窗口同步显示
exec命令
- docker exec -it 243... /bin/bash (243...为docker ID)
nsenter命令
1.找PID
$ PID=$(docker-pid 243..)
2.通过PID链接容器
$ nsenter --target $PID --mount --uts --ipc --net --pid
10.删除容器
$ docker rm [-f -l -v] cet
-f 强行终止并删除
-l 删除容器的链接,保留容器
-v 删除挂载的数据卷
$ docker export cet >test.tar
12.导入容器(将容器快照导入到本地镜像库)
$ cat test.tar | docker import - test/ubuntu:v1.0
重新指定标签为ubuntu的镜像名称,v1.0的版本号
docker load 也可以导入镜像存储文件到本地镜像库,他比import方式的好处是:import导入镜像快照文件将丢失所有的历史记录和元数据信息。
注:通过导出容器和导入容器可以实现容器迁移(拷贝文件)
仓库
仓库是集中存放镜像的地方,一个注册服务器上有很多仓库,一个仓库中有很多镜像。
1. 登录
$ docker login
2. 基本操作
查找、上传、下载
3. 自动创建
4. 查看镜像
http://www.dockerpool.com/downloads
5. 更新镜像标签
$ docker tag dl.dockerpool.com:5000/ubuntu:12.04 ubuntu:12.04
将前面的镜像更改为ubuntu:12.04
6. 创建私有仓库
$ docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registryregistry
自动下载并启动registry容器,创建本地的私有仓库服务,默认仓库船舰的容器在/tmp/registry,可以通过-v参数来存放到指定路径上
7.管理私有仓库镜像
假设私有仓库地址为10.0.2.2,端口为5000,
$ docker tag ubuntu:14.04 10.0.2.2:5000/test
更改标签名
$ docker push 10.0.2.2:5000/test
push镜像,会自动push到10.0.2.2地址的机器上
$ curl http://10.0.2.2:5000/v1/search
查看仓库10.0.2.2:5000中是否含有test镜像
docker pull 10.0.2.2:5000/test
在任何一台能访问到10.0.2.2地址的机器上下载镜像
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
这节介绍镜像仓库的使用。目前 Docker 官方维护了一个公共仓库 Docker Hub,大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现: 1. 登入登出 如果没有账号,我们需要在 Docker Hub 上免费注册一个 Docker 账号。保存好账号密码,进入 Linux 环境,输入: docker login 然后输入账号密码登录。 使用 docker logout 可以登
我们在这里提供了访问 Docker Hub 的快捷通道。 Docker Hub 是全球最大的 Docker 镜像仓库,在 DaoCloud 平台,您只需要输入镜像的名称,或者关键字,即可完成快速查询,我们会列出 Docker Hub 上所有满足要求的镜像,和对应的历史版本。 另外,DaoCloud 采用特殊的网络渠道,建立了从 DaoCloud 平台到 Docker Hub 的快速通道,您可以选在
本文向大家介绍Docker 镜像和容器的区别详解,包括了Docker 镜像和容器的区别详解的使用技巧和注意事项,需要的朋友参考一下 最近学习Docker,被Docker 的镜像和容器搞的晕头转向,索性上网查找相关资料并整理下彻底的理解这块内容,有需要的小伙伴可以看下,少走点弯路。 Docker的镜像和容器的区别 一、Docker镜像 要理解Docker镜像和Docker容器之间的
Docker 镜像同步 OpenShift 安装和运行依赖 4 大类 docker 镜像,分别是: 安装所需核心镜像 日志,管理等相关的镜像 Ansible broker 相关的镜像 S2I 应用镜像构建相关的镜像 如下脚本可以用来同步镜像: https://www.wenjiangs.com/doc/I0qaQxkwUAimages-syncing.sh https://www.wenjiang
DaoCloud 镜像仓库是我们对所有用户开放的公有镜像仓库,我们精选了数十款镜像,并翻译和修改了镜像的概览介绍信息。 DaoCloud 镜像仓库分为两种部署目标,一种是可以部署在 DaoCloud 智能集群,另一种是部署在用户提供的自有主机。有关 DaoCloud 智能集群和自有主机的区别,您可以查看后续的文档。 热门应用: 2048,数字益智游戏,可以部署在 DaoCloud 平台和您的主机之
在前面的章节里,我们安装了 Linux,也安装了 Docker,接下来是不是该上手 Docker 的使用了呢? 先不要着急,通过《Docker简介》的章节介绍,相信我们已经对 Docker 有了初步的了解。但是回想下我们过往的学习经历,每当接触一个新的技术时,总会有一种陌生感,这个感觉主要来源于我们对这门新技术的基础概念没有认知,或者是理解得不够准确。这种陌生感可能会导致两个问题: 在学习过程中丧