一、Docker简介
什么是容器
容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
容器的优点
①灵活:即使是最复杂的应用也可以集装箱化。
②轻量级:容器利用并共享主机内核。
③可互换:可以即时部署更新和升级。
④便携式:可以在本地构建,部署到云,并在任何地方运行。
⑤可扩展:可以增加并自动分发容器副本。
⑥可堆叠:可以垂直和即时堆叠服务。
什么是docker容器
Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。
docker与虚拟机对比
Docker与虚拟机的区别
特性 启动速度 计算能力损耗 性能 系统支持量(单机) 隔离性
Docker容器 秒级 几乎无 接近原生 上千个 资源隔离/限制
虚拟机 分钟级 损耗 50%左右 弱于原生 几十个 完全隔离
docker三大核心概念
①镜像:包含了各种环境或者服务的一个模板
②容器(container)--对象:镜像运行起来之后的一个实例即为容器,可以看做简易版的linux环境
③仓库:保存镜像的地方,分为私有库和公共库最大的公有库是docker公司提供的地址为:hub.docker.com
docker的三大核心以及日志等内容默认都存在/var/lib/docker下
二、docker的安装及管理
1、安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
#安装docker的依赖包,yum-utils:提供了 yum-config-manager 工具。
#device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
#evice mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum源配置为阿里云镜像
yum install -y docker-ce docker-ce-cli
2、配置docker加速器
①打开阿里云官网 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台官网进行登陆。
②登陆后打开控制台
docker容器相关基础命令
①查看docker容器进程
命令:docker ps [选项]
-a 选项显示所有状态容器
作用:显示up的进程,加-a表示显示所有状态容器
②创建docker容器
格式:docker create [选项] 镜像
常用选项: -i:让容器开启标准输入
-t:让 Docker 分配一个伪终端 tty -it :合起来实现和容器交互的作用,运行一个交互式会话 shell
作用:创建容器
③管理docker容器
格式:docker start/stop 容器唯一id/容器名称
作用:开启或关闭容器
5、docker run的运行过程
创建并启动docker容器
格式:docker run [选项] 镜像名/镜像唯一id /bin/bash
选项:-d 选项让 Docker 容器以守护形式在后台运行,并且容器所运行的程序不能结束
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell
--name:指定创建的容器的名称
作用:相当于先create容器然后再start容器并持久保持开启,不能单独使用docker run 不加任何选项,docker 容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出
运行过程:
(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的 IP 地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。
docker容器导出导入
容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export命令将已经创建号的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。
导出格式:docker export 容器id/容器名称 >文件夹名
导入格式:cat 文件| docker import - centos8:test #自定义容器名