文章目录
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 镜像名称
- 删除镜像: 删除本地镜像
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.配置数据卷容器
-
多容器进行数据交换
-
多个容器挂载同一个数据卷
-
数据卷容器
-
四、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
- Docker镜像本质是什么?
- 操作系统组成
- 进程调度子系统
- 进程通信子系统
- 内存管理子系统
- 设备管理子系统
- 文件管理子系统
- Linux文件系统由2部分组成
- bootfs:包含bootloader(引导加载程序)和kernel(内核)
- rootfs:root文件系统
- 不同Linux发行版,bootfs基本一样,rootfs不同
- Linux文件系统由2部分组成
- 网络通信子系统
- 作业控制子系统
2.镜像制作
-
容器逆向生成镜像(了解)
- 使用docker commit命令将容器保存为镜像
# 命令形式:docker commit 容器名称 镜像名称 docker commit 381827f60f70 itheima_tomcat:1.0
- 使用docker save命令将已有镜像保存为tar文件
# 命令形式:docker save –o tar文件名 镜像名 docker save -o itheima_tomcat.tar itheima_tomcat:1.0
- 使用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启动应用
-
六、容器和虚拟机