Docker 镜像、容器、仓库的概念及基本操作
Docker 包括三个基本概念:
镜像(Image)
容器(Container)
仓库(Repository)
这三部分组成了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 [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|exec|events|logs|wait|export|import|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]
查看docker信息:
$ docker version
# 或者
$ docker info
Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组(官方文档)
$ sudo usermod -aG docker $USER
服务启动,重启,状态
[hongdada@localhost home]$ systemctl stop docker.service [hongdada@localhost home]$ systemctl restart docker.service [hongdada@localhost home]$ systemctl status docker.service
images相关命令:
以镜像centos为例 登录仓库 docker login
查找镜像docker search centos
下载镜像docker pull centos
上传镜像docker push centos
删除镜像docker rmi centos 说明:如果有多个tag,则指定tag只会删除tag,而不会删除镜像本身。
查看镜像docker images
查看具体某一个镜像的详细信息:docker inspect centos
更改tag: docker tag docker.io/centos 21yunwei:latest
创建镜像docker commit 容器ID 镜像名称 注:创建镜像有三种方式,基于容器创建,基于本地模板创建,基于dockerfile创建
保存镜像docker save -o testcentos.tar 21yunwei:latest
载入镜像docker load < tesetcentos.tar
# 列出本机的所有 image 文件。
$ docker image ls # 删除 image 文件
$ docker image rm [imageName] # 搜索镜像
$ docker search mysql (输出信息包括镜像名字、描述、星级、是否为官方创建、是否自动创建) # image 文件从仓库抓取到本地。
$ docker image pull library/hello-world # 运行image文件
$ docker container run hello-world
container相关命令:
列出本机正在运行的容器:docker container ls
列出本机所有容器,包括终止运行的容器:docker container ls --all
创建容器docker create -ti image 容器ID:cid
启动容器docker start cid
运行容器docker run -dit cid 等同于docker create+docker start
停止容器服务 docker container kill cid
关闭容器docker stop cid
重启容器docker restart cid
删除容器docker rm cid #注意数据卷
删除所有容器docker rm `docker ps -a -q` docker kill `docker ps -q` 阻塞对容器的其他调用方法,直到容器停止后退出 docker wait cid
查看容器docker ps 或者docker ps -a
列出容器ID docker ps -q (docker ps -q -a)
容器文件拷贝 docker cp cid:路径 宿主机路径或docker cp 宿主机路径你 cid:路径
查看容器进程docker top cid
查看容器日志docker logs cid
查看容器变化 docker diff cid
进入容器docker exec -ti cid /bin/bash或者 docker attach cid(不推荐,终端显示相同,显示不安全且容易卡住)
查看容器详细信息 docker inspect cid 包括配置信息,名称,命令、网路配置以及很多有用数据
查看容器端口 docker port cid 导出容器docker export 3ad>21yunwei.tar
导入容器cat 21yunwei.tar | docker import -test/centos:latest
https://greenlightt.github.io/2018/02/04/docker-image-container/
https://blog.csdn.net/SmalOSnail/article/details/53117496
http://blog.daocloud.io/principle-of-docker-image/
http://www.21yunwei.com/archives/4437
Docker 镜像、容器、仓库的概念及基本操作的更多相关文章
- Docker 镜像 容器 仓库
Docker 包括三个基本概念镜像(Image)容器(Container)仓库(Repository) Docker 镜像 Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资 ...
- Docker之- 使用Docker 镜像和仓库
目录 使用Docker 镜像和仓库 什么是 Docker 镜像 列出 Docker 镜像 tag 标签 Docker Hub 拉取镜像 查找镜像 构建镜像 创建Docker Hub 账号 使用 Doc ...
- docker镜像的仓库
一.docker镜像的仓库 --- repos-registry的创建: 仓库分为公共仓库和私有仓库 DockerHub的官方仓库 https://hub.docker.com DockerPool社 ...
- Docker镜像的仓库及底层依赖的核心技术(3)
一.docker镜像的仓库 仓库分为公共仓库和私有仓库 DockerHub的官方仓库:https://hub.docker.com DockerPool社区仓库:https://dl.dockerpo ...
- 第四章 使用Docker镜像和仓库(二)
第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...
- 第四章 使用Docker镜像和仓库
第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...
- Docker镜像与仓库(一)
Docker镜像与仓库(一) Docker镜像与仓库(一) 如何查找镜像? Docker Hub https://registry.hub.docker.com docker search [OPTI ...
- 04_Docker入门(下)之docker镜像和仓库的使用
docker镜像和仓库 镜像介绍 docker镜像是由文件系统叠加而成的.最低端是一个引导文件系统,即bootfs.当一个容器启动后,它会将被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存以 ...
- Docker 镜像 && 容器的基本操作
镜像 && 容器 docker 镜像好比操作系统的镜像(iso) docker 容器好比是已安装运行的操作系统 所以说 docker 镜像文件运行起来之后,就是我们所说的 docker ...
随机推荐
- brace源码改造实现跨服务器监控-zjs
1.从GitHub上下载源码,本地编译,有部分代码编译报错,如下图: 百度搜索import sun.jvmstat.monitor.需要导入什么jar包:导入jdk/lib/tools.jar.
- ios 对于AFNetworking3.0的基本使用
AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持.AFHTTPRequestOperationManager已经抛弃,所以需要对数据请求进行改动. G ...
- Mysql Navicat连接
mysql -u root ip; 1.use mysql; 2.alter user 'root'@'localhost' identified with mysql_native_password ...
- 微信小程序开发之搞懂flex布局5——cross axis
Cross Axis——交叉轴,与Main Axis(主轴)垂直交叉. main axis is row or row-reverse the cross axis runs down the col ...
- Newtonsoft.Json 时间格式化
时间序列化经常多个T:“2017-01-23T00:00:00” 解决方案: 日期格式化输出,指定IsoDateTimeConverter的DateTimeFormat即可 IsoDateTimeCo ...
- JAVA 8 主要新特性 ----------------(五)Lambda方法引用与构造器引用
一.Lambda方法引用 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!(实现抽象方法的参数列表,必须与方法引用方法的参数列表保持一致!) 方法引用: 使用操作符 “::” 将 ...
- idea配置.gitignore后无法起作用
1)要先进入项目包所在的文件夹 2)git rm -r --cached . ://后面有个点3)git add . ;后面有个点4)git commit -m "update .giti ...
- usb 枚举流程简介
1. 枚举是什么? 枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序.调试USB设备,很重要的一点就是USB的枚举过程,只 ...
- linux vg lv pv
= pv由物理卷或者分区组成 pv可以组成一个或者多个vg vg可以分成多个lv 方便扩展 pvs vgs lvs 可以查看当前存在的pv vg lv 我的centos硬盘20g 使用了一 ...
- 简单了解Django
Django 是开源代码web应用的框架,由python完成,django的主要目的是简便,快速开发数据库驱动网站 主要用于测试,运维,自测. 1.下载Django. 个人建议使用命令pip inst ...