前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker架构,镜像及容器

Docker架构,镜像及容器

作者头像
用户8705033
修改2021-06-08 10:12:15
5120
修改2021-06-08 10:12:15
举报
文章被收录于专栏:linux百科小宇宙linux百科小宇宙

Docker的核心概念

镜像

Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板,比如:一个镜像可以是一个完整的CentOS操作系统环境,称为一个Centos镜像;可以是一个安装了 MYSOL的应用程序,称之为一个MySQL镜像等等。

Docker提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经做好的应用镜像来直接使用.

容器

Docker的容器是从镜像创建的运行实例,它可以被启动,停止和别除。所创建的每一个容器都是相互隔离,互不可见的,可以保证平台的安全性,还可以把容器看作

是一个简易版的Linux环境, Docker利用容器来运行和隔离应用。

仓库

Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公共仓库( Public)或者私有仓库( Private),这样一来当下次要在另一台机器上使用这个镜像的时候,只需要从仓库上pull下来就可以了。

仓库注册服务册服务器( Registry)是存放仓库的地方,其中包含了多个仓库,每个仓库集中存放某一类镜像,并且使用不同的标签(tag)来区分它们,目前最大的公共仓库是 Docker Hub,其中存放了数量庞大的镜像供用户下载使用。

Docker镜像

仓库配置

# vim /etc/yum.repos.d/docker.repo

[docker]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

安装Docke

# yum install docker-engine -y //直接安装

# systemctl start docker.service //启动服务

# systemctl enable docker.service //实现开机自启动

# docker version 查看版本信息

Docker镜像操作

Docker运行容器前需要本地存在对应的镜像,如果不存在本地镜像 Docker就会试默认镜像仓库htps://hub.docker. com下载,这是由 Docker官方维护的一个公共仓库,可以满足用户的绝大部分需求。用户也可以通过配置来使用自定义的镜像仓库。

搜索镜像

命令格式:docker search 关键字

# docker search cobbler

//搜索cobbler镜像

获取镜像

命令格式:docker pull 仓库名称[:标签]

对于docker来说,如果下载镜像时不指定标签,则默认会下载仓库中最新版,因此也可通过制定标签来下载指定版本,这里的标签(tag)就是用来区分镜像版本的。

# docker pull jasonlix/docker-cobbler //下载cobbler镜像

查看镜像信息

# docker images //查看所有镜像信息

REPOSITORY一镜像属于的仓库。

TAG一镜像的标签信息,标记同一个仓库中的不同镜像。

IMAGE ID一镜像的唯一ID号,唯一标识了该镜像。

CREATED一镜像创建时间。

VIRTUAL SIZE一镜像大小。

查看单独镜像详细信息

# docker inspect 2211e1f06c4e

定义标签

命令格式:docker tag 镜像名称:[标签] 新名称:[新标签]

# docker tag jasonlix/docker-cobbler cobbler:cobbler1 //为jasonlix/docker-cobbler定义一个新标签

删除镜像

方法一:docker rmi 仓库名称:标签

方法二:docker rmi 镜像ID号

# docker rmi cobbler:cobbler1

存出镜像 载入镜像

存出镜像:当需要把一台机器上的镜像迁移到另一台机器上的时候,需要将镜像保存成本地文件,这一过程叫做存出镜像。

载入镜像:从别的机器拷贝镜像,将该镜像导入到自己的镜像库中,这一过程叫做载入镜像

命令格式:docker save -o 存储文件名 存储的镜像

# docker save -o cobbler jasonlix/docker-cobble

命令格式:docker load < 存出的镜像文件

或者:

docker --input 存出的镜像文件

上传镜像

本地存储的镜像文件越来越多,就要一个专门的地方存放这些镜像---仓库。目前比较方便的就是公共仓库,默认上传的是Docker hub官方仓库,需要注册账号完成登录后才能上传

命令格式:docker push 仓库名称:标签

# docker tag jasonlix/docker-cobbler cobbler:cobbler2 //再定义一个标签

# docker login //输入用户名,密码和邮箱来完成登陆和注册

# docker push cobbler:cobbler2 //上传镜像

Docker容器

容器的创建与启动

容器的创建就是将镜像加到容器的过程,Docker的容器十分轻量级,用户可以

随时创建或者删除。新创建的容器默认处于停止状态,不运行任何程序,需要在其中

发起一个进程来启动容器,这个进程是该容器的唯一进程,所以当该进程结术的时候

容器也会完全停止。停止的容器可以重新启动并保留原来的修改。使用 docker create

命令可以新建一个容器。

命令格式:docker create[选项]镜像 运行的程序

# docker create -it jasonlix/docker-cobbler /bin/bash

# docker ps -a //查看容器中所有进程

命令格式:docker start 容器ID/名称

# docker start ID //启动容器

命令格式:docker run

# docker run jasonlix/docker-cobbler /usr/bin/bash -c ls / //查看镜像根目录

# docker run -d jasonlix/docker-cobbler /usr/bin/bash -c "while true;do echo htllo;done" 一直保持后台启动

容器的终止

命令格式:docker stop 容器ID/名称

# # docker stop ID //停止容器

容器的进入

命令格式:docker exec -it 容器ID/名称 /bin/bash

-i 表示让容器的输入保持打开

-t 表示让docker分配一个伪终端

# docker exec -it cb04f2231511 /bin/bash

容器的导出与导入

容器的导出

命令格式:docker export 容器ID/名称 > 文件名

# docker export cb04f2231511 > cobbler1 //导出容器到文件cobbler1

容器的导入

命令格式:cat 文件名 | docker import - 生成的镜像名称:标签

容器的删除

可以使用docker rm 命令将一个已经处于终止状态的容器删除

命令格式:docker rm 容器ID/名称

# docker stop cb04f2231511 //先停止容器再删除

# docker rm cb04f2231511

Docker资源控制

限制cpu使用速率

在docker中可以通过--cpu-quota选项来限制cpu使用率,cpu的百分比是以1000为单位的

格式:docker run --cpu-quota 20000 容器名 //cpu的使用率限定为20%

# docker run --cpu-quota 20000 cb04f2231511

多任务按比例分析CPU

当有多个容器任务运行时,很难计算cpu的使用率,为了使容器合理使用cpu资源,可以通过--cpu-share选项设置cpu按比例共享资源,这种方式还可以实现cpu使用率的动态调整。

# docker run --cpu-shares 1024 容器A

# docker run --cpu-shares 1024 容器B

# docker run --cpu-shares 2048 容器C

限制cpu内核使用

如果服务器有16个核心,那么cpu编号为0~15,使容器绑定第1~4个内核使用。

# docker run --cpuset-cpus 0,1,2,3 容器名

对blkio的限制

如果是在一台服务器上进行容器的混合部署,那么会出现同时有几个程序写磁盘数据的情况,这时可以--device-write-iops选项来限制写入的iops,相应的还有--device-read-bps选项可以限制读取的iops,但是这种方法只能针对blkio限制的是设备(device),而不是分区,相应的配置文件/sys/fs/cgroup/blkio/docker/容器ID/blkioo.throttle.write_iops_device。

# docker run --device-write-bps /dev/sda1:1mb 容器名 //限制容器的/dev/sda1的写入ipos为1MB

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档