设为首页 收藏本站
查看: 976|回复: 0

[经验分享] Docker架构、镜像及容器的基本操作

[复制链接]
YunVN网友  发表于 2019-2-21 07:48:45 |阅读模式
Docker架构、镜像及容器的基本操作

前言引导

  Docker是在Linux容器里运行应用的开源工具,是一种轻量级的虚拟机,诞生于2013年。Docker的设计宗旨:Build、Ship and Run Any、Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。


Docker概述


  如上图所示,Docker的logo设计为蓝色鲸鱼,拖着许多集装箱。其中鲸鱼可以看作为宿主机,而集装箱可以理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

  Docker容器与传统虚拟的比较


特性
Docker容器
虚拟机




启动速度
秒级
分钟级


计算能力耗损
几乎无
损耗50%左右


性能
接近原生
弱于


系统支持量(单机)
上千个
几十个


隔离性
资源限制
完全隔离

  Docker之所以拥有众多优势,跟操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟化管理程序和虚拟机操作系统层。而Docker容器是直接在操作系统层面之上实现的虚拟化。如下图



Docker的核心概念与安装


  • 镜像(Image)

  Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板。



  • 容器(Container)

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



  • 仓库(Repository)

  Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公共仓库(Public)或者私有仓库(Private)。
  仓库注册服务器(Registry)是存放仓库的地方,其中包括了多个仓库,每个仓库集中存放某一类镜像,并且使用不同的标签(tag)来区分它们。目前最大的公共仓库是Docker Hub,其中存放了数量庞大的镜像供用户下载使用。


安装Docker


  • 先关闭防火墙及SELinux

systemctl stop firewalld.service
setenforce 0

  • 使用yum命令安装Docker服务

yum -y install docker
  yum安装好docker之后,就可以直接启动服务了。

systemctl start docker.service        //开启服务
systemctl enable docker.service       //设置开机自启动

  • Docker程序介绍
  安装好的Docker系统有两个程序:Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,管理着所有的容器。Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。一般情况下,Docker服务端和客户端运行在一台机器上。
  可以通过查看docker版本信息检查docker服务。


Docker镜像的基本操作


  • 搜索镜像

docker search nginx     //搜索远端官方仓库中的共享nginx镜像



  • 获取镜像

docker pull docker.io/nginx   //获取上面搜索到的星级最高的镜像

  从整个下载过程中可以看出,镜像文件由若干层(Layer)组成,称之为AUFS(联合文件系统),是实现增量保存与更新的基础。


  • 查看获取到的镜像信息
  下载到本地的镜像文件保存在/var/lib/docker/image/overlay/文件下的repositories.json文件


docker images    //查看下载到本地的所有镜像

  图中各个参数的释义:
REPOSITORY: 镜像属于的仓库
TAG: 镜像的标签信息,标记同一个仓库中的不同镜像
IMAGE ID: 镜像的唯一ID号,唯一标识了该镜像
CREATED: 镜像创建时间
VIRTUAL SIZE: 镜像大小


  • 通过镜像的唯一标识ID号,获取镜像详细信息

docker inspect c82521676580     //获取镜像唯一标识号为c82521676580的镜像的详细信息



  • 为本地镜像添加新标签

docker tag docker.io/nginx nginx:test    //本地镜像docker.io/nginx添加新的名称为nginx,新的标签为test
docker images | grep test    //过滤查看新添加的标签信息

  • 删除镜像
  使用docker rmi命令删除多余的镜像
  删除镜像的方法有两种:一、使用镜像的标签删除镜像;二、使用镜像的ID删除镜像
  命令格式:

docker rmi 仓库名称:标签
docker rmi 镜像ID号



  • 存出镜像和载入镜像
  把一台机器上的镜像迁移到另一台机器上时,将镜像保存成本地文件的过程叫做存出镜像;将存出的镜像从A机器拷贝到B机器,需要在B机器上使用该镜像,可以将该导出文件导入到B机器的镜像库中,这个过程叫做载入镜像。

docker save -o nginx docker.io/nginx      //存出镜像
docker load < nginx或者docker --inputnginx     //导入镜像



  • 上传镜像
  当本地镜像越存越多的时候,就需要指定一个专门的地方存放镜像——仓库。目前比较方便的就是公共仓库,默认上传到Docker Hub官方仓库,但是这个方法必须先注册使用公共仓库的账号。可以使用docker login命令输入用户名、密码和邮箱来完成注册和登录。登录之后可以使用“docker push 仓库名称:标签”进行上传镜像。

docker push li(账号)/nginx:centos         //上传镜像
Docker容器的基本操作


  • 容器的创建与启动

docker create -it docker.io/nginx /bin/bash     //创建容器
docker ps -a     //查看所有容器
docker start 1ad3c22a5e36     //开启容器
docker stop 1ad3c22a5e36     //关闭容器
参数详解:
-i:让容器的输入保持打开
-t:让Docker分配一个伪终端
/bin/bash : 表示启动容器时要运行的命令



  • 容器的进入

docker exec -it 1ad3c22a5e36 /bin/bash     //进入容器
参数详解:
-i:表示让容器的输入保持打开
-t:表示让Docker分配一个伪终端



  • 容器的导出和导入

docker export 1ad3c22a5e36 > nginxtar    //容器的导出
cat nginxtar | docker import - nginx:test    //容器的导入




  • 容器的删除
  要删除正在运行的容器可以添加 -f 选项强制删除,建议先关闭容器在删除。

docker rm 1ad3c22a5e36   //删除时指定 ID

  • 后台持续运行容器

docker run -d jasonlix/docker-cobbler /usr/bin/bash -c "while true;do echo hello;done"
  注意:docker run ,等于执行了docker create ,在执行docker start 。就是说:在使用docker run创建容器的时候 如果检查镜像,若没有镜像,会从公共仓库下载,然后在创建容器,运行容器。
  docker run -itd --name c7 --network bridge --ip 172.16.10.135 centos:latest /bin/bash
下载资源 名字c7 网卡桥接 本地IP 镜像仓库centos 最新latest


Docker资源限制


  • 限制CPU使用速率

docker run --cpu-quota 20000 centos(容器名)    //cpu的使用率限定为20%

  • 按比例分享CPU

docker run --cpu-shares 1024 centos

  •   限制CPU内核使用

  • 使用 --cpuset-cpus 后面跟 0,1,2,3 (0表示第1个内核,1表示第2个内核.......)

docker run --cpuset-cpus 0,1 centos       //容器centos独享 第1和第2个内核

  • 限制内存使用

docker run -m 512m centos      //限制cents容器内存512M
对blkio限制

  • 对容器的读写限制

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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675055-1-1.html 上篇帖子: Docker安装(yum安装) 下篇帖子: 在CentOS7上配置Marathon+Mesos+Docker实战
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表