Docker容器与虚拟化技术——Docker架构、镜像及容器

                                            Docker架构、镜像及容器

一、Docker概述
    Docker是在Linux容器里运行应用的开源工具,是一种轻量级的虚拟工具。诞生于2013年,最初发起者是dotCloud公司,后改名为Docker Inc,之后专注于Docker相关技术和产品的开发。
传统虚拟机需要有额外虚拟机管理程序和虚拟机操作系统层,而docker容器直接在操作系统层面之上实现的虚拟化

1、Docker的核心概念及安装
(1)镜像(image)
    docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为是一个面向容器引擎的只读模板
(2)容器(Container)
    容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每个容器都是相互隔离、互不相见的,可以保证平台的安全性。还可以把容器看做一个简易版的Linux环境,Docker利用容器来运行和隔离应用
(3)仓库
    docker仓库是用来几种保存镜像的地方,当创建了镜像之后,可以使用push命令将它上传到公共仓库或者私有仓库,需要的时候只需要从仓库pull下来即可
(4)安装Docker
①配置仓库
    1)自写yum仓库(该地址已迁移)
        vim /etc/yum.repos.d/docker.repo
        [docker-repo]
        name=Docker Repository
        baseurl=https://yum.dockerproject.org/repo/main/centos/7/
        enabled=1
        gpgcheck=1
        gpgkey=https://yum.dockerproject.org/gpg
    2)wget https://download.docker.com/linux/centos/docker-ce.repo
    3)wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
②安装docker
    查看版本列表:yum list docker-ce --showduplicates | sort -r
    yum -y install docker-ce
    systemctl enable docker
    systemctl start docker
③安装好的docker有两个程序
    服务端:管理所有容器
    客户端:用来控制服务端进程
    大部分情况下两个程序运行在同一台机器
 

二、Docker镜像操作
1、搜索镜像:docker search 关键字
    --automated=true|false:只显示自动创建的镜像,默认为否
    --no-trunc=true|false:输出信息不截断显示,默认为否
    -s,--stars=x:只显示指定评价星级的镜像,默认为0

2、获取镜像:docker pull 仓库名称[:标签]
    -a,--all-tags=true|false:是否获取仓库中所有镜像,默认为否
    如果获取时不指定标签,则默认下载latest(最新)的镜像,通常标签是用来区分镜像版本的
    镜像文件是由若干层(Layer)组成,我们称之为AUFS(联合文件系统),是实现增量保存的与更新的基础。用户也可以选择其他注册服务器仓库下载,这时需要在仓库名称前指定完整的服务器地址
配置镜像加速器:
    vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://nn3beua9.mirror.aliyuncs.com"]
    }

3、查看镜像信息:docker images [仓库名称[:标签]]
    -a,--all=true|false:列出所有镜像
    --digests=true|false:列出镜像的数字摘要值
    -f,--filter=[]:过滤出镜像
    --no-trunc=true|false:是否对太长部分信息截断
    -q:只输出ID
(1)docker inspect 镜像ID:获取该镜像的详细信息    
(2)docker tag 名称:[标签] 新名称:[新标签]:为本地镜像添加新标签

4、删除镜像:docker rmi 镜像ID/标签
    当一个镜像有多个标签的时候,通过标签使用该命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件。当该镜像只剩下一个标签的时候,则会删除整个镜像文件
    使用镜像ID删除时,则会删除所有相关镜像及文件本身
    删除时,需要确保镜像没被容器使用,否则需要先删除相关容器

5、存出镜像和载入镜像
(1)存出:docker save -o 文件名 镜像
docker save -o lamp centos
(2)存入:docker load < 文件 或者 docker --input 文件

6、上传镜像:docker push 仓库名:标签


三、Docker容器操作
1、容器的创建与启动
(1)创建:docker create [选项] 镜像 运行的程序
(2)启动:docker start 容器ID/容器名
(3)创建并启动:docker run [选项] 镜像 运行的程序

2、容器的运行与终止
    命令:docker stop 容器ID/容器名

3、容器的进入
(1)命令:docker attache [选项] 容器ID/容器名
①支持和三个主要选项
    1)--detach-keys[=[]]:指定退出attach模式的快捷键序列,默认是ctrl-p ctrl-q
    2)--no-stdin=true|false:是否关闭标准输入,默认是保持打开
    3)--sig-proxy=true|false:是否代理收到的系统信号给应用进程,默认为true
当多个attach命令连接同一容器时,所有窗口都会同步显示。当某个窗口阻塞时,其他窗口也无法执行操作
(2)命令:docker exec -it 容器ID/容器名 /bin/bash
-i:打开标准输入接收用户输入的命令
-t:分配伪终端
-u:执行命令的用户名或ID
--privilege:是否给执行命令以高权限

4、删除容器
(1)命令:docker rm 容器ID/容器名
(2)删除容器需先关闭容器

5、容器的导入导出
(1)导出容器
    docker export
①可以通过-o选项指定导出的tar文件名
    docker export -o test.tar test
②也可通过重定向来实现
    docker export test > test.tar
③导出后可传输到其他机器,通过导入命令实现容器迁移
(2)导出容器
    docker import
①可通过-c选项在导入的同时执行对容器进行修改的Dockerfile指令
    docker import test.tar - test/centos:7.5.1804
②docker load命令:
可用来导入从镜像存储文件到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库
区别在于快照文件将丢弃所有历史记录和元数据信息,而镜像存储文件将保存完整记录。此外,从容器快照导入时可以重新指定标签等元素信息

四、Docker资源控制
1、对CPU的控制
(1)限制CPU使用率
    ①docker run --cpu-quota 1000 容器名
        以1000位单位,表示限制CPU使用率为10%
    ②修改Cgroup配置文件
        echo 2000 > /sys/fs/cgroup/cpu/docker/容器编号/cpu.cfs_quota_us
(2)多任务按比例分享CPU
    docker run --cpu-shares 1024 容器A
    docker run --cpu-shares 2048 容器B
    表示按1:2比例分配CPU
(3)限制CPU内核使用
    docker run --cpuset-cpus 0,1,2,3 容器名
    表示该容器的进程只在1/2/3/4的CPU上运行

2、对内存使用的限制
    docker run -m 512m 容器名
    一旦容器cgroup使用内存超过此容量,且Linux无法回收这些内存时,进程将被杀死

3、对blkio的限制
    docker run --device-write-bps /dev/sda1:1mb 容器名

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值