Docker容器
集装箱容器是应用层的抽象,它将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。与 VM 相比,容器占用的空间更少(容器映像的大小通常为数十 MB),可以处理更多应用程序并且需要更少的 VM 和操作系统。...
目录
2、Docker 容器无处不在:Linux、Windows、数据中心、云、无服务器等。
1、Docker Engine 为全球数百万个应用程序提供支持,为各种应用程序提供标准化的打包格式。
1、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
6.1、编辑daemon.json:vi /etc/docker/daemon.json
6.2、追加:{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
6.3、重启:systemctl restart docker
6.4、运行:docker run hello-world,如下图即为成功:
7.3、docker start/stop id/name启动/停止某个容器
7.4、docker attach id进入某个容器(使用exit退出后容器也跟着停止运行)
7.5、docker exec -ti id启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
7.9、systemctl stop docker关闭docker;systemctl restart docker重启docker
7.10、docker -version与docker info
7.11、docker --help可以查看docker操作命令
7.14、docker kill id/name强制停止容器
7.15、docker commit提交容器副本使之成为一个新的镜像
7.16、docker commit -m=”message” -a=’”作者”容器ID要创建的目标镜像名:[标签名]
8.1、docker pull daocloud.io/library/java:8国内仓库daocloud.io/library
8.2、docker tag d23bdf5b1b1b java:8重命名(docker tag IMAGE ID TAG:版本)
8.3、docker rmi daocloud.io/library/java:8删除镜像,注意指定TAG版本
一、什么是容器
1、将软件打包成标准化单元以进行开发、交付和部署
容器是一个标准的软件单元,它打包代码及其所有依赖项,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境。Docker 容器镜像是一个轻量级的、独立的、可执行的软件包,包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。
容器镜像在运行时变成容器,在 Docker 容器的情况下——镜像在Docker Engine上运行时变成容器。可用于 Linux 和基于 Windows 的应用程序,容器化软件将始终以相同的方式运行,无论基础设施如何。容器将软件与其环境隔离开来,并确保尽管开发和暂存之间存在差异,但它仍能统一工作。
在 Docker Engine 上运行的 Docker 容器:
- 标准: Docker 为容器创建了行业标准,因此它们可以在任何地方移植
- 轻量级:容器共享机器的操作系统系统内核,因此每个应用程序不需要操作系统,从而提高服务器效率并降低服务器和许可成本
- 安全:应用在容器中更安全,Docker 提供业界最强的默认隔离能力
2、Docker 容器无处不在:Linux、Windows、数据中心、云、无服务器等。
Docker 容器技术于 2013 年作为开源Docker Engine推出。
它利用了围绕容器的现有计算概念,特别是在 Linux 世界中,称为 cgroups 和命名空间的原语。Docker 的技术是独一无二的,因为它关注开发人员和系统运营商将应用程序依赖项与基础设施分离的要求。
Linux 世界的成功推动了与 Microsoft 的合作,将 Docker 容器及其功能引入了 Windows Server。
Docker 及其开源项目提供的技术,Moby 已被所有主要数据中心供应商和云提供商所利用。这些提供商中的许多都将 Docker 用于其容器原生 IaaS 产品。此外,领先的开源无服务器框架利用 Docker 容器技术。
3、比较容器和虚拟机
容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟化的是操作系统而不
是硬件。容器更便携、更高效。
3.1、容器
集装箱
容器是应用层的抽象,它将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。与 VM 相比,容器占用的空间更少(容器映像的大小通常为数十 MB),可以处理更多应用程序并且需要更少的 VM 和操作系统。
3.2、虚拟机
虚拟机
虚拟机 (VM) 是物理硬件的抽象,可将一台服务器变成多台服务器。管理程序允许多个虚拟机在单台机器上运行。每个 VM 都包含操作系统、应用程序、必要的二进制文件和库的完整副本——占用数十 GB。VM 的启动速度也可能很慢。
4、容器和虚拟机结合
容器和虚拟机一起使用为部署和管理应用程序提供了极大的灵活性
5、容器标准和行业领先地位
2013 年 Docker 的推出开启了应用程序开发的一场革命——通过使软件容器民主化。Docker 开发了一种 Linux 容器技术——一种可移植、灵活且易于部署的技术。Docker 开源了 libcontainer,并与全球贡献者社区合作以进一步发展。2015 年 6 月,Docker 将容器镜像规范和运行时代码(现在称为 runc)捐赠给了开放容器倡议 (OCI),以帮助随着容器生态系统的发展和成熟建立标准化。
随着这一演变,Docker 继续回馈 containerd 项目,该项目 Docker 在 2017 年捐赠给了云原生计算基金会 (CNCF)。containerd 是一个行业标准的容器运行时,它利用了 runc,并强调简单性、健壮性。和便携性。containerd 是 Docker 引擎的核心容器运行时
二、使用容器构建、共享和运行您的应用程序
加快您构建、共享和运行现代应用程序的速度。
1、Docker 使开发高效且可预测
Docker 消除了重复的、平凡的配置任务,并在整个开发生命周期中用于快速、简单和可移植的应用程序开发——桌面和云。Docker 全面的端到端平台包括 UI、CLI、API 和安全性,它们旨在在整个应用程序交付生命周期中协同工作。
2、使用Docker构建应用程序
- 通过利用 Docker 映像在 Windows 和 Mac 上有效地开发您自己的独特应用程序,在您的编码方面取得领先。使用 Docker Compose 创建您的多容器应用程序。
- 在整个开发管道中与您最喜欢的工具集成——Docker 可与您使用的所有开发工具一起使用,包括 VS Code、CircleCI 和 GitHub。
- 将应用程序打包为可移植容器映像,以便在从本地 Kubernetes 到 AWS ECS、Azure ACI、Google GKE 等的任何环境中始终如一地运行。
3、使用Docker分享应用程序
- 利用 Docker 可信内容,包括 Docker 官方图像和来自 Docker Hub 存储库的 Docker 验证发布者的图像。
- 通过与团队成员和其他开发人员合作以及轻松将图像发布到 Docker Hub 来进行创新。
- 使用基于角色的访问控制个性化开发人员对图像的访问,并通过 Docker Hub 审计日志深入了解活动历史。
4、使用Docker运行应用程序
- 轻松交付多个应用程序,并让它们在您的所有环境中以相同的方式运行,包括设计、测试、登台和生产——桌面或云原生环境。
- 以不同的语言独立地在不同的容器中部署您的应用程序。降低语言、库或框架之间发生冲突的风险。
- 借助 Docker Compose CLI 的简单性和一个命令加快开发速度,使用 AWS ECS 和 Azure ACI 在本地和云上启动您的应用程序。
三、Docker容器
1、Docker Engine 为全球数百万个应用程序提供支持,为各种应用程序提供标准化的打包格式。
2、Docker 引擎引发了容器化运动
Docker Engine 是业界事实上的容器运行时,可在各种 Linux(CentOS、Debian、Fedora、Oracle Linux、RHEL和Ubuntu)和Windows Server操作系统上运行。Docker 创建了简单的工具和通用打包方法,将所有应用程序依赖项捆绑在一个容器中,然后在 Docker 引擎上运行。Docker Engine 使容器化应用程序能够在任何基础设施上一致地运行,为开发人员和运营团队解决“依赖地狱”,并消除“它可以在我的笔记本电脑上运行!” 问题。
3、为什么选择 Docker 引擎?
3.1、加速创新
3.2、选择自由
3.3、内在安全
4、主要特点和能力
4.1、由 containerd 提供支持
建立在领先的开源容器运行时之上,是云原生计算基金会 (CNCF) 的毕业项目。Containerd 实现了 Kubernetes 容器运行时接口 (CRI),并被公有云和企业广泛采用
4.2、集成构建套件
BuildKit 是一个开源工具,它从 Dockerfile 中获取指令并“构建”一个 Docker 映像。这个过程可能需要很长时间,因此 BuildKit 提供了一些架构增强功能,使其更快、更精确和更便携。
4.3、码头工人 CLI
与 Docker 容器交互的最流行方式是 Docker CLI——一个简单但功能强大的客户端,它通过一组清晰的命令极大地简化了您管理容器实例的方式。
四、CentOS7安装Docker
1、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
2、设置yum源(选择其中一个)
2.1、中央仓库
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
2.2、阿里仓库(推荐)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、可以查看仓库中所有docker版本,并选择特定版本安装
4、按照Docker
yum install docker-ce-18.06.3.ce(后面不用加东西了)
5、启动Docker
命令:systemctl start docker,然后加入开机启动,systemctl enable docker
6、安装阿里云镜像加速器
6.1、编辑daemon.json:vi /etc/docker/daemon.json
6.2、追加:{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
6.3、重启:systemctl restart docker
6.4、运行:docker run hello-world,如下图即为成功:
7、Docker常用命令
7.1、docker ps查看当前正在运行的容器
7.2、docker ps -a查看所有容器的状态
7.3、docker start/stop id/name启动/停止某个容器
7.4、docker attach id进入某个容器(使用exit退出后容器也跟着停止运行)
7.5、docker exec -ti id启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
7.6、docker images查看本地镜像
7.7、docker rm id/name删除某个容器
7.8、docker rmi id/name删除某个镜像
7.9、systemctl stop docker关闭docker;systemctl restart docker重启docker
7.10、docker -version与docker info
7.11、docker --help可以查看docker操作命令
7.12、docker pull拉取镜像
7.13、docker push推送镜像
7.14、docker kill id/name强制停止容器
7.15、docker commit提交容器副本使之成为一个新的镜像
7.16、docker commit -m=”message” -a=’”作者”容器ID要创建的目标镜像名:[标签名]
7.17、docker logs id查看某个容器的日志
8、Docker快速拉取国内仓库镜像以及重命名镜像名称
8.1、docker pull daocloud.io/library/java:8国内仓库daocloud.io/library
8.2、docker tag d23bdf5b1b1b java:8重命名(docker tag IMAGE ID TAG:版本)
8.3、docker rmi daocloud.io/library/java:8删除镜像,注意指定TAG版本
到此对Docker介绍完毕了,笔者还有不少好文,点赞收藏,关注不迷路
SpringCloud Alibaba系列
《SpringCloud Alibaba微服务第2章之Nacos》
《SpringCloud Alibaba微服务第3章之Nacos》
《SpringCloud Alibaba微服务第4章之Nacos》
《SpringCloud Alibaba微服务第5章之Gateway》
《SpringCloud Alibaba微服务第6章之Gateway》
《Spring Cloud Alibaba微服务第7章之负载均衡Ribbon》
《Spring Cloud Alibaba微服务第8章之OpenFeign》
《Spring Cloud Alibaba微服务第9章之MyBatis-plus》
《Spring Cloud Alibaba微服务第10章之MyBatis-plus》
《Spring Cloud Alibaba微服务第11章之MyBatis-plus》
《Spring Cloud Alibaba微服务第13章之分库分表》
《Spring Cloud Alibaba微服务第14章之分库分表》
《Spring Cloud Alibaba微服务第15章之服务容错》
《Spring Cloud Alibaba微服务第16章之服务容错》
更多推荐
所有评论(0)