Docker 基础使用
认识Docker
没有Docker存在的问题
– 部署流程繁琐
– 环境不一致
– 资源隔离问题
– 交付流程复杂
– 核心概念
什么是docker
容器的概念在软件行业应用很广,比如我们经常使用的 Tomcat 容器,以及我们 Java 开发所使用的 Spring 容器。而今天我们所介绍的容器,又在这二者之上,是基于操作系统特性所实现的容器化技术。它与 Tomcat 类似,也是用于存放应用的容器。别在于 Tomcat 仅仅用于存放 Servlet 应用,而基于操作系统所实现的容器化技术所构建的容器,可以存放几乎所有应用。
在这一层面,可以**将容器理解为通过操作系统的容器化技术,所构建出来的一套独立的软件运行时环境。在这套环境中集成了要运行的软件所依赖的所有其他应用、工具等。它是一个标准化的独立空间,容器内的一切工具、应用是以为容器中的主应用运行而生的。****
应用容器化以后,将具有以下两大特性:
标准化
一个应用运行时期所需要的所有本地环境信息(工具、依赖等)都将集成在一个容器中,因此任意一台服务器只要支持容器化技术,都能够轻易的将一个应用直接部署起来。
隔离性
容器中的环境信息与其他容器,甚至是宿主机之间都是隔离的。这个隔离包括了网络、文件系统、内存、硬盘和CPU等等关键硬件资源。我们可以在一台机器上部署多个容器,而多个容器中分别运行着不同版本 JDK 的 Java 应用,它们之间不会存在任何冲突问题。
一、容器—>运行的软件
拥有了标准化与隔离性,就意味着我们可以轻松的为需要部署的应用构建一套独立的运行环境,且可以在任意支持容器运行的环境中快速部署我们的应用,提高应用的交付能力
容器VS虚拟机
容器是应用程序的抽象,将应用程序代码与环境打包在一起构建一套独立的运行环境,多个容器可以在一台计算机上运行并且与其他容器共享OS内核。且每个容器之间利用用户空间来进行资源隔离,相对于操作系统来说是非常轻量的。
而虚拟机则完全是对于一台计算机的抽象,一个操作系统上可以运行多个虚拟机,但每个虚拟机都是一个独立运行的操作系统,且有着完整的一套基于硬件设备的虚拟设备进行资源的隔离,这样的抽象方式导致虚拟机无论是在运行时的资源损耗还是启动的效率都是非常重量级的操作。
二、镜像—>软件的安装包
可以理解为就是一个软件安装包,在这个安装包中压缩了软件运行时需要的所有资源(依赖、配置、图片等)
三、仓库—>应用商店
仓库是用于存放非镜像的地方,类似于 Maven 仓库、Git 仓库等用途。仓库之上还有**仓库注册服务器(Registry)**的概念,上面可以存放着多个仓库,每个仓库中又有多个镜像,而每个镜像又可以有多个标签(tag)。目前Docker 官方的公开仓库是 Docker Hub,我们可以使用类似 Git 命令的方式去 pull/push 镜像
四、Docker的架构
C/S 架构
Client 客户端 、Server 服务端
客服端:向服务端发起请求,要求服务端处理某些数据,或获取指定数据
Server:接收客户端请求,处理客户端请求,响应处理结果
Docker Client
Docker 客户端
向服务端发起请求,比如下载镜像,管理容器生命周期等操作
Docker Daemon
Docker 的后台守护程序
Docker Server
Docker Server:服务端,接收请求
Engine
Engine:容器引擎,真正负责执行对应的任务
Docker Registry
镜像仓库 Docker Hub
阿里云 Docker 镜像仓库
…
qing cloud
存储镜像,用户相关信息
五、安装
六、基础使用
docker启动
service docker start
docker停止
docker开机自启
systemctl enable docker
镜像使用
查找镜像
docker search 镜像名称
拉取镜像
docker pull 镜像名称:标签(版本号)
查看本地镜像
docker images
删除镜像
dockee rmi 镜像名称:版本号
容器
创建并运行一个容器
docker run 参数… 镜像名称
例:docker run -d -p 80:80 镜像名称
后台运行
-d
端口映射
将主机端口映射拿到某个容器端口中
-p(小写) 主机端口:容器端口
暴露容器中的所有端口到主机的随机端口
-P(大写)
指定容器名称
—name 容器名称
退出时删除
当容器关闭自动删除
—rm
重启策略
指定容器关闭时的重启策略(3种)
no(默认):表示不重启
on-failure:当失败时重启
可以加上:3 表示指定最多能重启3次 如果3次都失败 那就不用重启了
always:只要已关闭就自动重启
—restart 策略
例: docker run -d --name 容器名称 -P – restart on-failure:3 镜像id或名称
环境变量
环境变量使用 name=value 的方式,可以配置多个,使用逗号分割
-e 环境变量 或 --env 环境变量
限制容器资源
通过各个资源相关命令可以在容器启动时直接限制容器最多使用多少资源,如 --cpus 指定可使用 cpu 数量,–memory bytes 限制内存使用大小
-m 2m
查看容器
docker ps -a
删除容器
docker rm -f 容器id或名称
停止容器
docker stop 容器id或名称
启动容器
docker server 容器id或名称
运行容器
docker start 容器id或名称
查看容器日志
docker logs -f 容器id或名称
进入容器内部
docker exec -it(启动终端) 容器id或名称 进入后执行的命令
例:docker exec -it 容器名称 /bin/bash