本章内容

    1、OCI

    2、docker核心组件--Cgroup与runC

    3、docker的架构

    4、docker的基本操作

    5、安装docker环境

    6、创建第一个容器

    6、docker容器的状态变换

----------------------------------------

  上一节中,我了解的docker的由来,和容器技术的基础内容。这一节我具体了解docker具体如何实现,以及相关的基础概念,和我们需要掌握的内容;

1、OCI

  OCI -- open container initative

  由Linux基金会主导与2015年6月创立,目的在于为荣容器格式和运行时指定一个开放的容器技术的工业标准;

  容器的两个规范:

    1、运行规范(the runtime specificaiton(runtime-spec)) 它定义了如何在磁盘进行解压缩的“文件系统包”;

    2、镜像规范(the image specification(image-spec))   在高级别的OCI实现中,OCI映像然后将该映像解压缩到OCI运行时文件系统包中;dockerhub.com 为官方镜像下载站点(使用该docker镜像站点,需要进行加速才行);

2、docker核心组件--Cgroup与runC

  docker的核心组件包含两个:

    1、Cgroup--用于对容器进行6中namespaces隔离资源分配;

    2、内核引擎

      docker最早的内核环境为LXC,因为它天生的缺陷(无法满足批量化的容器处理),所以docker公司,自行开发了libcontains来替代LXC;

      libcontains则是分装了更多的Linux内核功能,其中包括Cgroups,namespaces,netlink以及netfilter等功能;

      之后为了让docker容器更好的兼容到其他操作系统,则将libcontains进一步更新为runC的内核引擎,而OCI则是最早维护runC内核引擎的公有组织;

  

    runC

      它是一种开放的容器格式--OCF(Open Container Format)

      同时,runC是一个CLI工具,是根据OCI规范生成和运行容器,特点如下:

        1、容器作为runC的子进程启动,可以嵌入到其他各种系统中,而无需运行守护进程(就是不要内核进程);

        2、且runC建立在libcontainer之上,它同样可以为数百万的docker引擎安装提供动力;

3、docker的架构

  docker的架构为C/S架构,但是一般情况下,我将客户端与服务器端(daemon端)放置于同一台服务器上面;

  docker的架构如下:

  docker 有两个版本:一个ce社区版本,一个ee企业版本;(还有一个开源版本,叫做Moby(这是因为了商业竞争的原因))

docker_host 是真正运行容器的主机:containers 容器 和 images;
images 来自于registry,这些镜像可以在dockerhub.com上面去下载;
registry 是docker的镜像表,镜像是可以共享的;registry 仓库通过https协议去网上指定即可;但是,这些镜像一般在国外服务器上,我们需要指定镜像加速,才能更好的下载这些镜像文件,其中最常用的两种加速方式为:官网直接加速(docker.cn)和第三方加速器(ali云的加速方式(阿里的加速方式需要账号密码));
【docker的核心就是是去创建这些镜像文件,这点,我们在后面的文章中继续做介绍!】

  同时,一般如果不想在公网仓库下下载镜像,也可以搭建自己的仓库

4、docker支持的基本操作

  docker的操作对象只有:1、镜像文件  2、containers容器 3、网络 4、卷 5、插件 6、其他objects;

  所以,docker下的所有命令都是围绕这六个内容来进行;其中最主要的是镜像文件和容器;

  images

    1、镜像是一个只读模板,其中包含用于创建docker容器的说明;

    2、通常,上层镜像是基于下层镜像的,还有一些额外的自定义参数,来关联上下层镜像文件;

    3、您可以创建自己的镜像,也可以只使用其他人创建的图像并在注册表中发布;

  containers

    1、我们基于镜像来运行容器;

    2、您可以使用docker API或CLI create,run,stop,move或delete容器;

    3、您可以将容器连接到一个或多个网络,将存储连接起来,甚至可以根据其当前状态创建新映像;

5、安装docker环境

  安装环境:CPU必须是64位支持虚拟化技术;Linux内核kernel 内核必须为 3.10+以上版本(支持namespaces与Cgroup);所以,我们最好使用centos7来搭建docker环境;

  a\安装dockers的yum仓库;

cd /etc/yum.repo.d/wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

  修改yum仓库,将地址 docker-ce.repo 中的 https://download.docker.com/ 修改为 https://mirrosrs.tuna.tsinghua.edu.cn/docker/

vim /etc/yum.repo.d/docker-ce.repo
:%s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@:wq  //保存并退出

  b\安装docker-ce

yum install docker-ce -y

  c\配置docker仓库加速

  因为docker镜像仓库处于美国,我们需要安装镜像仓库加速,使用在中国的镜像源;

  有两种:1、使用美国仓库在中国的镜像源   2、使用阿里的仓库(需要账号密码)

  我们这里使用第一方式,docker仓库在中国的仓库镜像:

mkdir /etc/docker/vim /etc/docker/daemon.json{"registry-mirrors":["https://reistry.docker-cn.com"]
}:wq

  d\启动docker服务

systemctl start docker

  此时就可以使用docker命令

  此时,就可以使用docker命令,来进行容器管理;(包括镜像、卷、网络等等一系列资源)

  查看镜像加速功能: docker info

  此时,我们能看到仓库加速为中国的镜像点,则表示为中国地区的镜像加速方式;

  自此,docker环境安装成功;

【除了docker-cn的加速点外,还有很多的加速点,例如阿里云加速器,中国科技大学等】

  docker的常见子命令:

    docker search  查找容器Hub从镜像中

    docker pull  推送一个镜像或者仓库从默认指定的仓库中

    docker images  显示镜像

    docker create  创建一个新的容器

    docker start  开启一个或者多个停止着的容器

    docker run  运行一个新的容器

    docker attach  连接到运行着的容器

    docker ps  显示容器

    docker logs  读取容器的log信息

    docker restart  重启容器

    docker stop  停止一个或者多个容器

    docker kill  关闭一个或多个运行着的容器

    docker rm  移除掉一个或多个容器

【具体用法在后面实验中具体介绍】

  查看对应的镜像文件:

6、创建第一个容器

  有了docker的容器环境以后,我们只需要去官方指定的仓库中去下载你需要的容器即可(当然,也可以是第三方仓库地址);

  a\下载镜像

  我们这里就去dockerhub.com下载镜像,这里我们选择一个alpine的小型Linux系统;

docker pull alpine

  查看镜像:

  b\创建容器

docker run --name a1 -it alpine:latest

  其中 -it 创建一个交互窗口,和一个tty的虚拟通道,并连接上来;命名为a1;

  c\网络配置

  从新连接一个会话,通过 ifconfig 可以查看到 宿主机产生了一个端口,如下:

  查看网桥情况:

yum install bridge-utils -y

    此时,该网卡则则加入到了docker0中(docker0是默认网桥)

  同时,我们进入到容器 a1 中可以看到,这里生成了一个172.17.0.2的虚拟网卡设备  

  通过本地,可以ping通,容器的网卡地址,就类似于虚拟机一样;

  到此,我们第一个容器就创建成功!!

6、docker容器的状态变换

  和命令相关的状态变化如下图:

  【这里包含装换容器状态的命令,需要自己去尝试】

转载于:https://www.cnblogs.com/BurnovBlog/p/11141632.html

02 docker的基本用法相关推荐

  1. docker的基本用法

    docker的基本用法 OCI&OCF OCI 开发容器倡议 由Linux基金会主导于2015年6月创立 旨在围绕容器格式和运行时制定一个开放的工业化标准 包含两个规格 运行时规范(runti ...

  2. docker的基础用法

    目录 什么是docker OCI&OCF OCI OCF docker架构 docker镜像与镜像仓库 docker对象 安装及使用docker docker安装 docker加速 docke ...

  3. 02@Docker网络介绍及网络模式的使用

    文章目录 Docker网络的介绍 一.Docker网络原理 1.docker网络介绍 2.Docker网络原理 二.docker网络基础 [网络命名空间] 1.Veth 设备对 2.网络原理实验的实现 ...

  4. docker之docker-machine用法

    docker-machine 是docker官方提供的docker管理工具. 通过docker-machine可以轻松的做到: 在Windows平台和MAC平台安装和运行docker 搭建和管理多个d ...

  5. 02. Docker安装记录卸载

    notice: 本文所有内容参考文档,具体没有任何价值 Linux(CentOS 7 ) 1. 安装 查看系统信息: # 系统版本是3.0以上的: [root@VM-8-4-centos /]# un ...

  6. 02.docker镜像的区别--Alpine、Slim、Stretch、Buster、Jessie、Bullseye

    原文链接 如果您像我一样,第一次创建Dockerfile并从DockerHub页面中选择镜像时,您会彻底困惑.有时候,像这样的选择会让我们的行动停滞不前,所以也许我们只是用标准的镜像,避免深入研究,这 ...

  7. 【Docker】Dockerfile用法详解

    制作Docker image 有两种方式:一是使用 Docker container,直接构建容器,再导出成 image 使用:二是使用 Dockerfile,将所有动作写在文件中,再 build 成 ...

  8. Docker入门02 - Docker的镜像和容器

    文章目录 1. Docker的镜像 A. 如何获取镜像? B. 列出镜像 C. 删除本地镜像 用 ID.镜像名.摘要删除镜像 Untagged 和 Deleted 用 docker image ls ...

  9. docker安装、docker容器基本用法

    docker的概念 Image(镜像)  Container(容器)  Repository(仓库)  镜像(Image)就是一堆只读层(read-only layer)的统一视角  容器(conta ...

最新文章

  1. torch 多进程队列 问题
  2. 不断迭代,严苛细节,最终性能如何满足? 基于ELK的大数据平台实践分享
  3. Mac如何设置intellij idea中文
  4. 46. magento cron
  5. linux 深度美化,deepin15(Linux) 美化终端 安装zsh+oh-my-zsh及其配置和插件
  6. 一天搞懂深度学习--深度学习简介
  7. splunk 日志分析软件 简介
  8. 5G承载网需求与技术实现
  9. Unity 编辑器开发实战【Scene View】- UI Selector
  10. IDEA社区版详细安装2022最新版(保姆式)
  11. Linux下分卷压缩与解压
  12. 深入浅出理解视频编码H.264结构
  13. html onload 写法,HTML onload用法及代码示例
  14. matlab流场可视化后处理
  15. JAVA中反射是什么?
  16. 改进YOLOv5系列:2.PicoDet结构的修改
  17. RPM打包之spec示例
  18. html控制智能家居,一种通过web控制的智能家居系统的制作方法
  19. PCIE 调试过程记录
  20. Python 一维波动方程差分法求解及可视化

热门文章

  1. mysql高可用最佳实践_mysql高可用方案
  2. Fluid 0.6 版本发布:数据感知的Pod调度与数据集自动弹性扩缩容
  3. OpenAPI实现云主机闪电交付最佳实践
  4. 非看不可!飞猪技术专家教你在家高效办公!
  5. 如何将FPGA资源平民化?阿里工程师有了新突破
  6. 用 Unity 探究 2D 游戏的打击感
  7. Oracle的AWR报告分析
  8. oracle物理DG管理-redo数据传输,应用与三种模式
  9. 使用SQLPLUS生成HTML报表
  10. JavaWeb第二讲 重定向与转发 doGet()与doPost()