Docker

初识Docker

出现问题

开发、测试、灰度、线上 环境不一致,比如Java、mysql版本、redis补丁。

如果在开发中的环境改变,运维就需要将所有的机器的软件版本进行改变,非常麻烦

Docker用一种容器虚拟化技术,可以将源码、配置、版本、环境一并打包

  • 一并打包,任意迁移
  • 沙箱机制,互不干扰

Docker如何解决大型项目依赖复杂、兼容性问题?

开发中可以将应用、依赖、函数库、配置一起打包,行程可移植镜像;沙箱机制使应用相互隔离

Docker如何跨系统运行

Linux系统结构分为系统应用、内核、计算机硬件三部分,Docker就将应用程序与系统函数一并打包

虚拟化技术和容器化技术

  • 虚拟化技术:操作系统中模拟硬件设备,然后在上面运行另一个虚拟机(另一个操作系统),再在上面运行我们所需要的应用。 占用资源多、性能低
  • 容器化技术:只虚拟化内核而不是整个操作系统,每个容器间隔离互不影响。节省资源,轻便、性能好

Docker架构

  • 镜像:将应用程序及依赖、环境、配置打包;镜像像一个模板,只能读,可以创建容器
  • 容器:可以看成一个简易版的Linux环境(包括root权限、进程空间、用户空间、网络空间、该运行的应用程序)
  • 仓库:存放各种镜像模板的地方,分为公开仓库(Docker Hub、阿里云)私有仓库

镜像相当于Java类模板,容器相当于实例对象
在这里插入图片描述
在这里插入图片描述

  1. 用户是使用Docker Client与 Docker Daemon建立通信,并发送请求给后者。
  2. Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docke
    Client的请求。
  3. Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在。
  4. Job的运行过程中,当需要容器镜像时,则从 Docker Registry中下载镜像,并通过镜像管理驱动Grapt
    driver将下载镜像以Graph的形式存储。
  5. 当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境
  6. 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成。
  7. Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。

安装

  1. yum -y install gcc
  2. yum -y install gcc-c++
  3. yum install -y yum-utils
  4. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. yum makecache fast
  6. yum -y install docker-ce docker-ce-cli containerd.io
  7. systemctl start docker
  8. docker run hello-world

卸载

  1. systemctl stop docker
  2. yum remove docker-ce docker-ce-cli containerd.io
  3. rm -rf /var/lib/docker
  4. rm -rf /var/lib/containerd

阿里云镜像加速器地址 https://0vn2fm8g.mirror.aliyuncs.com
在这里插入图片描述

docker run ... 流程
在这里插入图片描述

常用命令

启动命令

在这里插入图片描述

镜像命令

docker images 列出本地的镜像
在这里插入图片描述

  • REPOSITORY:镜像的仓库源
  • TAG:镜像的标签版本号
  • IMAGE ID:ID
  • CREATED:镜像创建时间
  • SIZE:大小

docker search hello-word 查找hello-world镜像

docker pull ubuntu docker pull redis:6.0.8 拉取镜像

docker rmi hello-world docker rmi feb5d9fea6a5 删除镜像
docker rmi -f feb5d9fea6a5 强制删除
docker rmi -f $(docker images -qa) 删除所有镜像
在这里插入图片描述

docker system df 查看安装镜像占用情况

虚悬镜像:dangling image,仓库名和标签是none

容器命令
  • 新建容器 docker run ...
    • --name="容器名称"
    • -d 后台运行容器并返回容器ID,也即启动守护容器
    • -i 以交互式模式启动容器
    • -t 为容器重新分配一个伪输入终端
    • -it 启动交互式容器(经常合起来用)
    • docker run -it ubuntu /bin/bash 启动带终端系统
  • docker ps 查看启动的容器的信息
    • -a 当前的+历史运行的
    • -l 最近创建的
    • -n 显示最近前n个创建的
    • -q 只显示id
  • 退出
    • exit 退出容器
    • ctrl+p+q 退出终端 容器继续运行
  • docker start ID/name 启动已停止运行的容器
  • docker restart ID 重启容器
  • docker stop ID 停止容器
  • docker skill ID 强制停止容器
  • docker rm ID 删除容器
  • docker rm -f ID 强制删除

docker run -it 前台交互式启动
docker run -d 后台守护式启动,像Redis.MySQL

dockerfile

SpringBoot项目打包镜像运行

交付只需要打包镜像交付就行

  1. 打包应用 Maven package
  2. 编写dockerfile
    在这里插入图片描述
  3. 上传jar包和dockerfile至一个文件aaa
  4. 构建镜像 先cd 到文件aaa, docker build -t demo1 .
  5. 发布运行 docker run -d -P --name demo1-springboot-web
  6. 测试,调用hello方法,curl localhost:ports/hello
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EnndmeRedis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值