一、原理
  1、Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,它能直接访问物理设备,会给每一台虚拟机分配内存、CPU、网络、磁盘等资源,也可以确保虚拟机对应的硬件资源不被其他虚拟机访问,是所有虚拟化技术的核心。
  2、虚拟机 指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机都会有自己的kernel,自己的硬件,这样虚拟机启动的时候需要先做开机自检,启动kernel,启动用户进程等一系列行为
  3、namespace 是一种隔离机制,一个独立的namespace看上去拥有所有linux主机的资源(进程ID、主机名、用户ID、网络访问、进程间通讯和文件系统等),也拥有自己的0号进程(即系统初始化的进程)。一个namespace可以产生多个子namespace
  4、[Cgroups]:是Linux内核功能,它让两件事情变成可能:限制Linux进程组的资源占用(内存、CPU);为进程组制作 PID、UTS、IPC、网络、用户及装载命名空间。
  5、docker-se 商业版 docker-ce 社区版

二、常用操作
  1、更新yum
    yum -y update
  2、删除旧版本
    yum remove docker
  3、下载安装软件
    yum install -y yum-utils
  4、配置官方源
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  5、配置阿里源
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  6、下载docker
    yum install docker-ce
  7、启动
    systemctl start docker
  8、查看docker版本
    docker version
  9、查看docker信息
    docker info
  10、查看本机所有image
    docker image ls

  11、下载镜像(使用国内镜像源)
    docker image pull hello-world
    配置加速 /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }

  12、运行docker
    docker container run hello-world

  13、删除image(如果image被容器引用,必须销毁这个容器,才能删除image)
    docker image rm hello-world
  14、查看运行的中的容器
    docker ps
    docker ps -a 查看已经退出的容器
    docker container ls 查看容器 -a 查看所有的
  15、停止容器(状态变成已终止)
    docker stop 容器id[CONTAINER ID]
    docker container prune 清除所有所有未运行的容器
  16、查看容器日志(容器的终端输出)
    docker logs 容器id[CONTAINER ID OR NAME]

  17、删除容器
    docker rm 容器id[CONTAINER ID]
  18、拉取ubuntu
    docker pull ubuntu:18.04
    运行 -i 交互式操作 -t 终端 --rm 容器退出后将其删除 bash 使用bash当作交互
    docker run -it --rm ubuntu:18.04 bash
  19、运行nginx
    docker pull nginx
    启动 --name 指定容器名称, -d 后台运行并打印容器id, -p 将容器端口映射到宿主机
    docker run --name nginxweb -d -p 8080:80 nginx
    访问 127.0.0.1:8080
    交互方式进到容器
    docker exec -it nginxweb bash
    将宿主机得文件复制到容器里
    docker cp 宿主机文件 容器id:容器目录
    docker cp leopard/ 0944b902095c:/opt
  20、启动终止状态的容器
    docker container start [容器名]
    修改exited状态的容器下文件权限
    docker inspect [CONTAINER ID]
    找见UpperDir对应的目录,并进入,找见对应的文件进行修改即可

  21、查看docker 不同
    docker diff nginxweb
  22、保存新镜像(docker要在运行状态)
    --author 指定修改者 --message 记录修改描述(类似git)
    docker commit --author “lifeilong@126.com” --message “修改” nginxweb nginx:v1
    给容器镜像修改标签
    docker tag <image id> <tagname>
    docker tag lifeilong:v1 lifeilong:latest
    修改容器启动时执行的命令
    docker commit -a "lifeilong" -c 'CMD ["/bin/httpd", "-f", "-h", "/data/html"]' -p b2 lifeilong:v2

  23、订制自己的docker
    touch Dockerfile创建配置文件,内容如下:
    FROM nginx
    RUN echo ‘<h1>Hello, Docker!</h1>’ > /usr/share/nginx/html/index.html
    构建容器($(pwd)为上下文路径)
    docker build -t nginx:v2 $(pwd)
  24、Dockerfile命令
    COPY test.txt /home 将test.txt复制到容器/home目录(会把文件的元数据也复制,权限时间等)
    ADD 高级的复制命令,原路径可以是URL,压缩文件会自动解压
    CMD 容器启动命令

  25、运行docker
    docker run 时后台操作:
    1、检查本地是否有镜像,没有就从共有仓库下载
    2、利用镜像创建并启动一个容器
    3、分配一个文件系统
    4、从宿主机网桥中桥接一个虚拟口到容器
    5、从地址池配置一个IP地址给容器
    6、执行用户指定的应用程序
    7、执行完终止容器

  26、数据卷,容器内部及之间管理数据
    1、创建数据卷
      docker volume create my-vol
    2、查看
      docker volume ls
      docker volume inspect my-vol 查看详细信息
    3、启动挂载(将数据卷挂载到容器/webapp目录)
      docker run -d -P --name nginxtest --mount source=my-vol, target=/webapp nginx
    4、删除数据卷
      docker volume rm my-vol
      docker volume prune 删除所有闲置数据卷
  27、挂载主机目录、文件
    将主机目录/home/webapp 挂载到容器/opt/webapp 默认权限是读写,加readonly指定为只读
    docker run -d -P --name nginxtest --mount type=bind,source=/home/webapp/,target=/opt/webapp,readonly nginx
    挂载文件
    docker run -d -P --name nginxtest --mount type=bind,source=/home/webapp/,target=/opt/webapp,readonly nginx

  28、网络容器互联
    创建网络 -d 标识网络类型
    docker network create -d bridge my-net
    启动两个容器test1和test2在同一网络
    docker run -it --rm --name test1 --network my-net nginx bash
    docker run -it --rm --name test2 --network my-net nginx bash

docker常见操作总结的更多相关文章

  1. docker 常见操作

    docker rm $(docker ps -a -q --filter status=exited)   // 删除不在运行的 镜像

  2. 动态单链表的传统存储方式和10种常见操作-C语言实现

    顺序线性表的优点:方便存取(随机的),特点是物理位置和逻辑为主都是连续的(相邻).但是也有不足,比如:前面的插入和删除算法,需要移动大量元素,浪费时间,那么链式线性表 (简称链表) 就能解决这个问题. ...

  3. C#路径/文件/目录/I/O常见操作汇总

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

  4. X-Cart 学习笔记(四)常见操作

    目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...

  5. 转:jQuery 常见操作实现方式

    http://www.cnblogs.com/guomingfeng/articles/2038707.html 一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备 ...

  6. jQuery 常见操作实现方式

    一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备忘. jQuery 常见操作实现方式 $("标签名") //取html元素 document. ...

  7. C#路径/文件/目录/I/O常见操作汇总<转载>

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

  8. [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

    1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一 ...

  9. 【转】C#路径/文件/目录/I/O常见操作汇总

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

随机推荐

  1. Docker 容器数据 持久化(系统学习Docker05)

    写在前面 本来是可以将数据存储在 容器内部 的.但是存在容器内部,一旦容器被删除掉或者容器毁坏(我亲身经历的痛,当时我们的大数据平台就是运行在docker容器内,有次停电后,不管怎样容器都起不来.以前 ...

  2. sougn开源,自己写的一个项目

    源代码:http://yun.baidu.com/share/link?shareid=1504480803&uk=2739888323 联系方式:1034465036@qq.com

  3. Goland2019.3.2永久破解

    2019.11.28 jetbrains公司发布了Go的最强编辑器GoLand 2019.3.本次更新软件消耗更少的CPU和更快的性能,增强了对Go Modules的支持,添加了一组新的快速修复程序, ...

  4. 为了控制Bean的加载我使出了这些杀手锏

    故事一: 绝代有佳人,幽居在空谷 美女同学小张,在工作中遇到了烦心事.心情那是破凉破凉的,无法言喻. 故事背景是最近由于需求变动,小张在项目中加入了MQ的集成,刚开始还没什么问题,后面慢慢问题的显露出 ...

  5. Go语言实现:【剑指offer】从尾到头打印链表

    该题目来源于牛客网<剑指offer>专题.​ 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. Go语言实现: type ListNode struct { Val int ...

  6. python 处理10000个txt,每个文件夹里面放1000个。

    fileNumberInDiretory = 1000 title_list = getChongFuTitle(cursor) DiretoryNums = math.ceil(len(title_ ...

  7. MongoDB oplog 详解

    oplog 简介 oplog 是local库下的一个固定集合,Secondary就是通过查看Primary的oplog这个集合来进行复制的.每个节点都有oplog,记录从主节点复制过来的信息,这样每个 ...

  8. Vue中你可能认为是bug的情况原来是这样的

    前言 我们知道Vue框架剧本双向数据绑定功能,在我们使用方便的同时,还有一些细节问题我们并不知道,接下来一起探讨一些吧 双向数据绑定 js变量改变影响页面 页面改变影响js变量 Vue2是如何做到数据 ...

  9. rfc文档

    你会看到很多网上关于标准的rfc文档. 如何阅读rfc 文档. https://juejin.im/post/5bf1948ff265da61553a6c97 从一个普通的RFC文档上升到Intern ...

  10. Java的七大排序

    一.各个算法的时间复杂度 二,具体实现 1.直接选择排序 基本思想:在长度为n的序列中,第一次遍历找到该序列的最小值,替换掉第一个元素,接着从第二个元素开始遍历,找到剩余序列中的最小值,替换掉第二个元 ...