Docker技术简介:
概述:
Docker是一个虚拟化平台(官网:https://www.docker.com),诞生于2013年初,基于Google公司的GO语言进行实现,可以通过虚拟化方式,为应用提供可运行的容器,基于这种方式,可更快地打包,测试以及部署应用程序.
版本说明
Docker分成了两个版本:Docker EE (企业版)和Docker CE(社区版本)
Docker核心对象
镜像(Images)
Docker 镜像是一个特殊的文件系统(https://hub.docker.com/),除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。例如JDK镜像、Centos镜像、MySQL镜像等,可以暂时先将其理解为一个安装程序。
容器(Container)
Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。
Docker应用架构分析
组成: Client: 客户端
[ Docker_HOST: 主机
Docker daemon:(守护进程) Containers:(容器) Images(镜像) ]
Registry:远程仓库
docker build 创建
docker pull 拉取镜像文件
docker run 运行
Docker Host是我们的docker宿主机(就是安装了docker的操作系统)
Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images中
Docker Daemon是docker的服务线程,处理Docker客户端命令。
Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。
Docker运行机制
拉取镜像文件
docker pull 执行过程:
1)客户端将指令发送给docker daemon
2)docker daemon 先检查本地images中有没有相关的镜像
3)如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地
docker run 执行过程:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系(简版linux系统),并在只读的镜像层外面挂载一层可读写层
- 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
Docker服务基本操作
启动docker服务
systemctl start docker
查看Docker状态
查看docker是否启动了,是否是运行状态.
systemctl status docker
例如:
设置Docker开机自启
systemctl enable docker
禁用Docker开机自启
systemctl disable docker
重新启动Docker服务
systemctl restart docker
查看Docker信息
docker info
查看docker info中具体key的信息,例如:
docker info | grep 'Docker Root Dir:'
停止docker服务
systemctl stop docker
Docker镜像操作实践
下载镜像
语法:docker pull 镜像名
案例:
docker pull hello-world
浏览镜像文件
语法:
docker images
查看镜像详情
语法:docker inspect 镜像名或镜像id(前三位即可)
docker inspect hello-world
查看镜像历史
一个镜像是由多个层(layer)组成的,那么,我们要如何知道各个层的具体内容呢?通过 docker history 命令,可以列出各个层(layer)的创建信息,
例如:
docker history hello-world
导出镜像文件
镜像导出(linux系统中的镜像文件下载到本地-例如window),导出后给他人使用
docker save hello-world | gzip > hello-world.tar.gz
删除镜像文件
语法:docker image rm 镜像名或镜像id
docker image rm hello-world
导入镜像操作
镜像导入(要在hello-world.tar.gz 文件所在目录下执行)
docker load < hello-world.tar.gz
运行镜像文件
基于镜像,启动容器运行。
docker run hello-world
Docker容器操作实践
创建并启动容器
基本语法解析:
docker run -it xxx(镜像名) bash
其中:
1> xxxx -镜像名, 或者 images id的前几位(一般三位即可)
2>-it 这是两个参数( -i 表示交互操作, -t 表示终端 )
3>bash 表示进入操作终端,基于交互式进行相关操作
查看Docker中的容器
查看docker运行中的容器
docker ps
查看docker运行中的所有容器
docker ps -a
其中, -a 表示全部(all)
查看容器日志信息
查看后台运行的容器输出结果,假如容器没有启动,要通过此指令去看一下错误日志
docker container logs 802
停止或重启容器
停止运行的容器,代码如下:
docker container stop 802
重新启动容器
docker container restart 802
进入指定容器
当需要进入容器进行操作时(容器运行着),可以通过docker exec命令
例如:
docker exec -it 802 bash #802为容器ID
退出容器
假如从宿主机进入了启动的容器,退出容器需要使用exit指令,
例如:
exit
删除容器
假如容器不用了,可以执行删除操作,
例如:
docker container rm 802 #802为容器id
其中,如果删除运行中的容器,需要添加 -f参数.
清理所有终止状态容器,
例如:
docker container prune