云计算(Docker)

2023-09-22 14:15:10

Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从 Apache2.0 协议开源。它可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 可用于开发应用、交付应用、运行应用等场景。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。Docker 允许用户将基础设施中的应用单独分割出来,形成更小的部分容器,从而提高软件交付速度。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版)和 EE(Enterprise Edition: 企业版),通常使用社区版就可以满足大多数业务场景。

Docker理念

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。
 

Docker 容器与虚拟机的区别

  • Docker 容器与虚拟机很相似,但它们之间又有着很大的区别。
  • 虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。创建虚拟机时,会将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存,每个虚拟机都有独立的硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
  • 虚拟机会消耗大量系统资源和开销,尤其是当多个虚拟机在同一物理服务器上运行时,每个虚拟机都有自己的子操作系统,大量精力以及资源被用于虚拟化的部署和运行上。
  • 容器类似于虚拟机,只是容器不是完整的操作系统,容器通常只包含必要的操作系统包和应用程序,这就是它们轻量级的原因。

下载Docker

• 官网
• docker官网:http://www.docker.com
• 仓库
• Docker Hub官网: https://hub.docker.com

Docker安装

前提说明

CentOS Docker 安装

前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x

查看自己的内核
uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。

cat /etc/redhat-release
uname -r

安装步骤

CentOS7安装Docker
Install Docker Engine on CentOS | Docker Docs
确定你是CentOS7及以上版本
cat /etc/redhat-release

卸载旧版本

yum安装gcc相关

CentOS7能上外网

yum -y install gcc
yum -y install gcc-c++
安装需要的软件包

执行命令

yum install -y yum-utils
设置stable镜像仓库

推荐

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引
yum makecache fast
安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
测试
docker version

docker run hello-world

卸载

• systemctl stop docker
• yum remove docker-ce docker-ce-cli containerd.io
• rm -rf /var/lib/docker
• rm -rf /var/lib/containerd

阿里云镜像加速

https://promotion.aliyun.com/ntms/act/kubernetes.html
步骤:
注册一个属于自己的阿里云账户(可复用淘宝账号)
获得加速器地址连接
登陆阿里云开发者平台
选择容器镜像服务

粘贴脚本直接执行
直接粘

或者分步骤都行

mkdir -p /etc/docker
vim  /etc/docker/daemon.json
  #阿里云
{
  "registry-mirrors": ["https://{自已的编码}.mirror.aliyuncs.com"]
}

激活配置文件 重启服务器

systemctl daemon-reload
systemctl restart docker

测试

docker run hello-world

Docker常用命令

帮助启动类命令

启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令 --help

镜像命令

docker images

各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

• OPTIONS说明:
• -a :列出本地所有的镜像(含历史映像层)
• -q :只显示镜像ID。

查找镜像

docker search [OPTIONS] 镜像名字
OPTIONS说明:
--limit : 只列出N个镜像,默认25个
docker search --limit 5 redis
docker pull 某个XXX镜像名字

下载镜像

·docker pull 镜像名字[:TAG]
·docker pull 镜像名字
·没有TAG就是最新版
·等价于
·docker pull 镜像名字:latest
docker pull ubuntu

删除镜像

docker rmi 某个XXX镜像名字ID
·docker rmi  -f 镜像ID
·删除多个
·docker rmi -f 镜像名1:TAG 镜像名2:TAG
·删除全部
docker rmi -f $(docker images -qa)

容器命令

#使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

docker run -it centos /bin/bash 

i: 交互式操作。
-t: 终端。
centos : centos 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:

-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。 docker ps -n 1
-q :静默模式,只显示容器编号。
·退出容器

关系 指向 进入正在运行的容器并以命令行交互
·两种退出方式
exit
run进去容器,exit退出,容器停止
ctrl+p+q
run进去容器,ctrl+p+q退出,容器不停止
·启动已停止运行的容器
·docker start 容器ID或者容器名
·重启容器
·docker restart 容器ID或者容器名
·停止容器
·docker stop 容器ID或者容器名
·强制停止容器
·docker kill 容器ID或容器名
·删除已停止的容器
·docker rm 容器ID
·一次性删除多个容器实例

·docker rm -f $(docker ps -a -q)
·docker ps -a -q | xargs docker rm

重要
·有镜像才能创建容器,这是根本前提(下载一个Redis6.0.8镜像演示)
·启动守护式容器(后台服务器)
关系 前后对比 - 指向 启动交互式容器(前台命令行)
·在大部分的场景下,我们希望 docker 的服务是在后台运行的, 我们可以过 -d 指定容器的后台运行模式。
·docker run -d 容器名

使用镜像centos:latest以后台模式启动一个容器

docker run -d centos

发布阿里云

Docker镜像commit操作案例

·docker commit提交容器副本使之成为一个新的镜像
·docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
·案例演示ubuntu安装vim
·从Hub上下载ubuntu镜像到本地并成功运行
·原始的默认Ubuntu镜像是不带着vim命令的
·外网连通的情况下,安装vim

docker容器内执行上述两条命令:

apt-get update
apt-get -y install vim

·启动我们的新镜像并和原来的对比

1 官网是默认下载的Ubuntu没有vim命令
2我们自己commit构建的镜像,新增加了vim功能,可以成功使用。

本地镜像发布到阿里云

将本地镜像推送到阿里云

·本地镜像素材原型

·阿里云开发者平台
·https://promotion.aliyun.com

·点击个人实例

·选择命名空间

·选择镜像仓库

·进入管理界面获得脚本

·将镜像推送到阿里云
·将镜像推送到阿里云registry
·管理界面脚本

·脚本实例

·设置访问凭证,输入三行命令

将阿里云上的镜像下载到本地

·将本地上传的镜像删除

docker rmi -f 0940de0a64e8

·从Registry中拉取镜像

·查看拉取的镜像

启动容器:docker run -it  0940de0a64e8 /bin/bash

更多推荐

黑马JVM总结(九)

(1)StringTable_调优1我们知道StringTable底层是一个哈希表,哈希表的性能是跟它的大小相关的,如果哈希表这个桶的个数比较多,元素相对分散,哈希碰撞的几率就会减少,查找的速度较快,反之桶的个数较少,碰撞的几率增高,导致我的链表较长,查找的效率受到影响调优呢主要是调整HashTable桶的个数:时间还

【演讲干货满满】共话数智转型之路:斯歌应邀出席2023德莱维数字技术行业峰会

前不久,2023德莱维数字技术行业峰会在苏州隆重启幕。峰会聚焦“数智转型,融合发展”主题,云集各路大咖,旨在从多元行业、技术维度探索企业数字化发展的革新之道。上海斯歌应邀出席峰会,并于现场进行了《为企业打造更敏捷强壮的“神经网络”》主题演讲,向来自各领域的资深技术专家、行业领袖们分享了BPM领域的前沿洞察与最佳实践,为

Moment.js 处理日期库

文章目录Moment.js是什么Moment.js使用:安装和引入Moment.js:在vue项目中使用Moment.js的基本用法:Moment.js的常用方法示例:总结Moment.js是什么Moment.js是一个轻量级的日期处理库,它提供了一套简单而强大的API,使得在JavaScript中处理日期和时间变得非

通过Power Platform自定义D365 CE 业务需求 - 9. 使用PowerApps自定义

PowerApps提供了许多自定义组件,因此您可以根据业务需求进行自定义。可以为Dynamics365PowerApps开发以下自定义组件:客户端脚本(JavaScript)服务器端代码(插件)服务器端代码(自定义工作流活动)编辑命令栏在Power应用程序中使用客户端JavaScriptMicrosoftDynamic

父域 Cookie实现sso单点登录

单点登录(SingleSignOn,SSO)是指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的应用系统。Cookie的作用域由domain属性和path属性共同决定。在Tomcat中,domain属性默认为当前域的域名/IP地址。path属性的有效值是以“/”开头的路径,在Tomcat中,p

性能测试 —— 性能测试常见的测试指标 !

一、什么是性能测试先看下百度百科对它的定义,性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能是否达到预估的性能需求,发现系统可能存在的性能瓶颈,进而改善优化并系统的性能,提高系

[JAVAee]Spring使用注解来存储与获取Bean对象

前置内容:[JAVAee]Spring项目的创建与基本使用_HY_PIGIE的博客-CSDN博客先前我们在项目中注册类到spring中,要在xml中一行一行的手动添加bean标签.如果对象数目一多起来,就会显得非常繁琐.本文章介绍了使用另一种方法,使用注解的方式快捷的完成Bean对象的存储与获取.配置spring.xm

基于PHP语言研发的抖音矩阵系统源代码开发部署技术文档分享

一、概述本技术文档旨在介绍抖音SEO矩阵系统源代码的开发部署流程,以便开发者能够高效地开发、测试和部署基于PHP语言的开源系统。通过本文档的指引,您将能够掌握抖音SEO矩阵系统的开发环境和部署方案,从而快速地构建出稳定、可靠的短视频SEO优化系统。二、开发环境搭建PHP环境安装:在系统上安装PHP解释器,推荐使用PHP

协议的定义

协议是网络通信实体之间在数据交换过程中需要遵循的规则或约定,是计算机网络有序运行的重要保证。任何一个协议都会显式或隐式地定义3个基本要素:语法、语义和时序,称为协议三要素。语法:语法定义实体之间交换信息的格式与结构,或者定义实体(比如硬件设备)之间传输信号的电平等。语义:定义实体之间交换的信息中需要发送(或包含)哪些控

企业架构LNMP学习笔记59

目录介绍:bin:存放的是启动和关闭tomcat的脚本文件;conf:存放tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xmllib:存放的是tomcat服务器所需要的各种jar文件。java打包类库。logs:存放tomcat执行时的日志文件temp:是tomcat存放的临时文件w

Linux知识点 -- HTTPS协议

Linux知识点–HTTPS协议文章目录Linux知识点--HTTPS协议一、概念1.HTTPS协议2.加密3.运营商劫持4.常见的加密方式4.数据摘要&&数字指纹5.数字签名二、HTTPS的工作过程探究1.方案一:只用对称加密2.方案二:只使用非对称加密3.方案三:双方都使用非对称加密4.方案四:非对称加密+对称加密

热文推荐