Docker核心组件

Docker核心组件

1. Docker架构

Docker使用客户端 - 服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

2. Docker核心要素

2.1 客户端
2.2 Docker Daemon 即 Docker 引擎
2.3 Image 镜像
2.4 Container 容器
2.5 Repository 仓库 (参照Docker Hub)
其中在使用过程中,我们要理解的核心要素为 镜像、容器和仓库。

镜像(Image)与容器(Container)的关系,类似于面向对象编程中类(Class)与对象(Object)的关系。

通过镜像创建容器,就如同通过类创建对象。

2.1 镜像(Image)
2.1.1 镜像的基本概念

Docker镜像就是一个只读的模板,可以用来创建Docker容器。例如,一个镜像可以包括一个完整的centos操作系统环境,里面仅安装了mysql或用户需要的其他应用程序。
(上篇文章示例中的tomcat镜像,就包含了centos操作系统环境,以及java运行环境JDK,以及tomcat,因为tomcat的运行需要JDK的支持)
Docker提供了非常简单的机制来创建镜像或更新现有的镜像,用户甚至可以直接从其他人那里下载一个做好的镜像来直接使用。

2.1.2 镜像的组成结构

镜像是由许多层的文件系统叠加构成的,最下面是一个引导文件系统的bootfs,第二层是一个root文件系统rootfs,root文件系统通常是某种操作系统,比如centos、Ubuntu,在root文件系统之上又有很多层文件系统,这些文件系统叠加在一起,构成docker中的镜像;

2.1.3 镜像的日常操作
  1. 下载镜像,比如下载redis镜像: docker pull redis:latest
    redis是查询到的镜像名称,latest是镜像的标签tag
    获得一个镜像有两种方式,一种是从官方镜像仓库下载,一种是通过dockerfile文件创建。
    如果是官方镜像,我们就不必自己用dockerfile文件构建了,除非官方没有才会自己去dockerfile文件构建;
Tips: docker镜像拉取加速器

通过登录阿里云ECS后台查看加速器地址
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

编辑/etc/docker下的daemon.json文件,加上如下内容
{“registry-mirrors”:[“https://你的ID.mirror.aliyuncs.com”]}

保存退出后,重启docker服务即可

  1. 列出已下载的镜像:
    docker images 或者 docker images redis
  2. 运行镜像
    docker run -d redis 其中d表示后台运行
    然后通过 ps -ef | grep redis 可以查到redis进程
  3. 查看容器的状态
    docker ps
  4. 删除镜像
    docker rmi redis
    注意是rmi,不是rm,rm是删除容器
2.2 容器
2.2.1 容器的基本概念
	容器是从镜像创建的运行实例。它可以被启动、停止、删除。
每个容器都是相互隔离的、保证安全平台。
可以把它看作一个简易版的Linux环境,包括root用户给权限,进程空间、
用户空间、网络空间和运行在其中的程序。

	Docker利用容器来运行应用,镜像是只读的,容器在启动的时候创建
一层可写层作为最上层。
2.2.2 容器的日常操作
	启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在
终止状态的容器重新启动。
  1. 通过镜像启动容器
    docker run -d -p 6379:6379 redis

  2. 已经停止的容器,我们可以通过docker start命令来启动
    开启容器
    docker start 容器ID或容器名称

  3. 查看运行中的容器
    docker ps

  4. 查看所有的容器
    docker ps -a

  5. 进入容器
    docker exec -it (容器ID或容器名) bash

  6. 停止容器
    docker stop 容器ID或容器名

  7. 删除容器 (删除前先停止)
    docker rm 容器ID或容器名

  8. 还可以使用
    docker inspect 容器ID或容器名 查看容器的更多信息

  9. 关闭所有容器 (q表示quiet,只显示容器ID)
    docker stop $(docker ps -q)

  10. 删除全部容器 (a表示all,所有容器信息,默认只显示正在运行的)
    docker rm $(docker ps -aq)

  11. 一条命令实现关闭并删除所有容器
    docker stop $(docker ps -q) & docker rm -f $(docker ps -aq)

    	因为docker的容器实在太轻量级了,很多时候用户都是随时删除
    和新创建容器。
    
2.3 仓库(Repository)
2.3.1 仓库的基本概念
	仓库是集中存放镜像文件的场所,有时候会把仓库和仓库注册服务器
(Registry)看作同一事物,并不严格区分。实际上,仓库注册服务器上往往
存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签
tag;
	仓库分为公开仓库(public)和私有仓库(private)两种形式;
	
	最大的公开仓库是 Docker Hub (https://hub.docker.com),存放了
数量庞大镜像供用户下载。
	当然,用户也可以在本地网络内创建一个私有仓库。
	
	当用户创建了自己的镜像之后就可以使用push命令将它上传到公有或私有
仓库。这样下次在另外一台机器上使用这个镜像的时候,只需要从仓库pull
下来即可。
	注: Docker仓库的概念和Git类似,注册服务器也类似于GitHub这样的
托管服务。
2.3.2 仓库日常操作
	用户可通过 docker search 命令来查找官方仓库中的镜像:
	docker search rabbitmq
	可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级
(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建;官方的镜像说明
是官方项目组创建和维护的,automated资源允许用户验证镜像的来源和内容。

	根据是否是官方镜像,可将镜像资源分为两类;
	一种是类似 centos 这样的基础镜像,被称为基础或根镜像。这些基础镜像
由Docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为
名字;
	还有一种类型,比如 tianon/centos 镜像,是由Docker的用户创建并维
护的,往往带有用户名称前缀。可以通过前缀user_name/ 来指定使用某个用户
创建的镜像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值