Docker

Docker

一、Docker概述

1.Docker概念

  • Docker是一个开源的应用容器引擎
  • 诞生于2013年初,基于Go语言实现, dotCloud 公司出品(后改名为Docker Inc)
  • Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上
  • 容器是完全使用沙箱机制,相互隔离
  • 容器性能开销极低
  • Docker从17.03版本之后分为CE(Community Edition: 社区版) 和EE(Enterprise Edition: 企业版)

2.Docker架构

在这里插入图片描述

  • 镜像(Image):Docker镜像,就相当于是 一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统
  • 容器(Container):镜像和容器的关系,就像是面向对象程序设计中的类和对象一 样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个镜像中心,仓库有公共仓库dockerhub和私有仓库两种

二、Docker命令

1.进程相关命令

1.启动Docker

systemctl start docker

2.停止Docker

systemctl stop docker

3.重启Docker

systemctl restart docker

4.查看Docker

systemctl status docker

5.开机启动Docker

systemctl enable docker

2.镜像相关命令

1.查看镜像: 查看本地所有的镜像

docker images
docker images –q # 查看所用镜像的id

2.搜索镜像:从网络中查找需要的镜像

docker search 镜像名称

3.拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看

docker pull 镜像名称
  1. 删除镜像: 删除本地镜像
docker rmi 镜像id # 删除指定本地镜像
docker rmi `docker images -q` # 删除所有本地镜像

3.容器相关命令

1.查看容器

docker ps # 查看正在运行的容器
docker ps –a # 查看所有容器

2.创建并启动容器

docker run 参数
  • 参数说明
    • -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
    • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
    • -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭
    • -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器
    • –name:为创建的容器命名

三、Docker容器的数据卷

1.数据卷概念及作用

  • 概念
    • 数据卷是宿主机中的一个目录或文件
    • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
    • 一个数据卷可以被多个容器同时挂载
    • 一个容器也可以被挂载多个数据卷
  • 作用
    • 容器数据持久化
    • 外部机器和容器间接通信
    • 容器之间数据交换
  • 思考
    • Docker容器删除后,容器中产生的数据是否会随之销毁 ?
    • Docker容器和外部机器可以直接交换文件吗?
    • 容器之间可以进行数据交互?

2.配置数据卷容器

  • 多容器进行数据交换

    1. 多个容器挂载同一个数据卷

    2. 数据卷容器

四、Docerfile

1.Docker镜像原理

  • 问题
    • Docker镜像本质是什么?
      • 一个分层文件系统
    • 为什么Docker中Centos镜像只有200MB,而Centos操作系统的iso文件要几个个G?
      • Centos的iso镜像文件包含bootfs和rootfs,而Docker的Centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层
    • 为什么Docker中Tomcat镜像有500MB,而Tomcat安装包只有70多MB?
      • 由于Docker中镜像是分层的,Tomcat只有70多MB,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的Tomcat镜像大小500多MB
  • 操作系统组成
    • 进程调度子系统
    • 进程通信子系统
    • 内存管理子系统
    • 设备管理子系统
    • 文件管理子系统
      • Linux文件系统由2部分组成
        • bootfs:包含bootloader(引导加载程序)和kernel(内核)
        • rootfs:root文件系统
      • 不同Linux发行版,bootfs基本一样,rootfs不同
    • 网络通信子系统
    • 作业控制子系统
      在这里插入图片描述

2.镜像制作

  • 容器逆向生成镜像(了解)

    1. 使用docker commit命令将容器保存为镜像
    # 命令形式:docker commit 容器名称 镜像名称
    docker commit 381827f60f70 itheima_tomcat:1.0
    
    1. 使用docker save命令将已有镜像保存为tar文件
    # 命令形式:docker save –o tar文件名 镜像名
    docker save -o itheima_tomcat.tar itheima_tomcat:1.0
    
    1. 使用docker load命令根据tar文件恢复为Docker镜像
    # 命令形式:docker load -i tar文件名
    docker load -i itheima_tomcat.tar
    
    • 注意
      • 新的镜像制作后,原本容器中挂载的目录将失效
      • 索引一般在恢复镜像创建容器容器的时候需要重新挂载
  • Docerfile

    • Dockerfile是一个文本文件
    • 包含了一条条的指令
    • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
    • 对于开发人员:可以为开发团队提供一个完全一致的开发环境
    • 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件
      构建一个新的镜像开始工作了
    • 对于运维人员:在部署时,可以实现应用的无缝移植
  • Dochub网址:https://hub.docker.com

3.Docerfile概念及作用

  • Dockerfile是一个文本文件
  • 包含了一条条的指令
  • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
  • 对于开发人员,可以为开发团队提供一个完全一致的开发环境
  • 对于测试人员,可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作
  • 对于运维人员,在部署时,可以实现应用的无缝移植

五、服务编排

1.基本概念

  • 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大
    • 要从Dockerfile build image或者去dockerhub拉取image
    • 要创建多个container
    • 要管理这些container(启动停止删除)
  • 服务编排
    • 按照一定的业务规则批量管理容器

2.Docker Compose概述

  • Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建 ,启动和停止
    • 利用Dockerfile定义运行环境镜像

    • 使用docker-compose.yml定义组成应用的各服务

    • 运行docker-compose up启动应用

六、容器和虚拟机

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值