Docker是什么?使用场景作用及Docker的安装和启动详解

目录

Docker是什么?

Docker的发展

Docker的安装

Docker使用

Docker的运行机制

第一个Docker容器

进入Docker容器

客户机访问容器


Docker是什么?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

其核心在于将应用及其所有依赖打包成一个可移植的容器,从而实现应用程序的标准化部署和隔离运行。Docker 的设计基于操作系统级虚拟化技术,允许在单一主机上以轻量级的方式运行多个独立的容器,每个容器都包含其应用及其所需的运行时环境,如库、依赖和配置文件等,彼此之间互不影响。

Docker 的主要作用包括:

  1. 环境一致性:解决开发与生产环境不一致的问题,确保应用在不同环境下的行为一致,减少因环境差异导致的部署故障。
  2. 快速部署和扩展:应用被打包成轻量级的容器,可以快速在任何支持 Docker 的平台上启动,便于实现自动化部署和横向扩展。
  3. 资源利用率高:相比传统虚拟机技术,Docker 容器共享主机的操作系统内核,不需要为每个应用分配单独的操作系统资源,因此启动速度快、资源消耗少。
  4. 隔离性:容器之间相互隔离,每个容器内的应用程序都在自己的环境中运行,不会影响其他容器或主机系统,提高了安全性。
  5. 持续集成和持续部署(CI/CD):Docker 促进了一种更高效的软件开发流程,使得构建、测试和部署可以自动化进行。
  6. 微服务架构:Docker 适合微服务架构,每个服务都可以封装在一个容器中,简化服务管理和通信,提高系统的可维护性和可扩展性。

Docker的发展

我们知道,一台物理服务器可以虚拟化出多个虚拟的服务器,让计算机资源得以充分利用;

但是虚拟化技术存在两个缺点:
1、每创建一个虚拟机的时候,都会创建一个操作系统,这个操作系统会占用很多资源,这样无疑大大的增加了资源的消耗,当安装的虚拟机越多,资源消耗就越多。

2、环境兼容性问题,开发时的环境运行正常,部署到虚拟机环境测试则有可能发生错误;

基于硬件级虚拟化技术的缺点和不足,后续又发展出来了另一种虚拟化技术,即操作系统级虚拟化技术;

操作系统级虚拟化 是运行在操作系统之上的虚拟化技术,它模拟的是运行在一个操作系统上的多个不同进程,并将其封装在一个密闭的容器里面,该技术也称为容器化技术。


例如我们将项目部署上服务器,不同的项目我们需要在服务器上安装不同的环境,且应用直接运行在服务器操作系统上,可能会与其他应用争夺资源。那么引入Docker,项目及其所有依赖被打包进一个Docker镜像中,确保了从开发到生产的环境一致性,减少了环境不一致带来的错误。镜像可以在任何安装有Docker的系统上运行,极大提高了应用的可移植性。

容器是在本地操作系统层面上实现虚拟化,直接复用本地主机的操作系统,不需要单独安装操作系统,而传统的虚拟化技术方式则需要单独安装每个虚拟机的操作系统。

Docker的安装

首先,我们知道 Docker 并不是容器,它是一个管理容器的引擎。

我们课程采用的Linux 版本是CentOS 7,学习 Docker 也更推荐在 Linux

环境下使用;

Docker 支持 CentOS 6 及以后的版本;

CentOS7 系统可以直接通过yum 进行安装:

yum update

安装前可以查看一下系统是否已经安装了 Docker:

yum list installed | grep docker

安装:

yum install docker -y

安装后,使用 docker –version(docker version,docker -v)查看 docker

是否安装成功

卸载:

yum remove docker.x86_64 -y
yum remove docker-client.x86_64 -y 
yum remove docker-common.x86_64 -y

2-3Docker 服务启动

Centos7安装docker,启动dockerJob for docker.service failed because the control process exited with error…错误。

打开sysconfiglinux文件

vim /etc/sysconfiglinux

修改:

SELINUX=disabled 

安装之后启动 Docker 服务;

启动:systemctl start docker 或者 service docker start

停止:systemctl stop docker 或者 service docker stop

重启:systemctl restart docker 或者 service docker restart

检查 docker 进程的运行状态:

systemctl status docker 或 者 service docker status

查看docker 进程:

ps -ef | grep docker

2-4Docker 服务信息

docker info 查看 docker 系统信息

docker 查看所有的帮助信息

docker commond –help 查看某个 commond 命令的帮助信息

Docker使用

Docker的运行机制

Docker并不是容器,而只是一个管理容器的引擎;

Docker的底层运行原理:

Docker 服务启动→下载镜像→启动该镜像得到一个容器→容器里运行着我们想要的程序;

第一个Docker容器

根据Docker的运行机制,我们将按照如下步骤运行第一个Docker容器;

1、将Docker服务启动;

systemctl start docker


2、下载一个镜像,Docker 运行一个容器前需要本地存在有对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker

Hub 公共注册服务器中的仓库 https://hub.docker.com)。

也可以在命令行使用命令搜索要使用的镜像,比如 docker search tomcat 进行搜索,然后下载所需要的镜像:

下载镜像:docker pull tomcat

docker pull tomcat

显示本地已有的镜像:docker images

docker images

在列出信息中,可以看到几个字段信息

REPOSITORY:来自于哪个仓库,比如 docker.io/tomcat TAG:镜像的标记,比如 latest

IMAGE ID:镜像的 ID 号(唯一)

CREATED:创建时间

SIZE:镜像大小

运行镜像:docker run tomcat 前台运行, 要后台运行,加参数 -d

启动下载下来的镜像得到一个容器:

docker run -d docker.io/tomcat 或 者 docker run -d 41a54fe1f79d

默认是前台启动,如果需要后台启动,指定-d 参数;

通过 ps -ef | grep tomcat 查看,检查 tomcat 镜像是否启动容器成功;

启动失败换成:docker run --privileged -d docker.io/tomcat

docker run --privileged -d docker.io/tomcat

进入Docker容器

进入容器:docker exec -it 容器ID bash

其中i 表示交互式的,也就是保持标准输入流打开;

t表示虚拟控制台,分配到一个虚拟控制台;

容器ID可通过docker ps查看

退出容器:exit

客户机访问容器

从客户机上访问容器,需要有端口映射,docker 容器默认采用桥接模式与宿主机通信,需要将宿主机的 ip 端口映射到容器的 ip 端口上;

停止容器:docker stop 容器 ID/名称

启动容器:docker run -d -p 8080:8080 docker.io/tomcat 或者 容器 ID

docker run -d -p 8080:8080 docker.io/tomcat

-p 8080:8080: 端口映射参数。它将宿主机的8080端口映射到容器内的8080端口。这意味着,你可以通过宿主机的8080端口访问容器中应用提供的服务。

如果报错:
Cannot find /usr/local/tomcat/bin/setclasspath.sh

This file is needed to run this program

换成下面的命令:

docker run --privileged -d -p 8080:8080 -it docker.io/tomcat

这时再到浏览器访问:你的ip地址加端口
http://192.168.10.129:8080/

如果无法访问,可参考

Docker 解决tomcat容器启动成功,无法访问的问题_docker启动tomcat成功,访问不了-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/339311.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT的基本原理是什么?又该如何提高其准确性?

在深入探索如何提升ChatGPT的准确性之前,让我们先来了解一下它的工作原理吧。ChatGPT是一种基于深度学习的自然语言生成模型,它通过预训练和微调两个关键步骤来学习和理解自然语言。 在预训练阶段,ChatGPT会接触到大规模的文本数据集&#x…

绘画参数配置及使用

绘画参数配置及使用 路径:站点后台-功能-AI绘画 进入参数配置 接口选择:多种接口自主选择(需自己准备key),对应接口的key对话和绘画通用 存储空间: 位置在超管后台-存储空间 自主选择存储(需…

冯喜运:6.3周一黄金原油行情分析及操作建议

【黄金消息面分析】:上周行情概述:现货黄金上周(0527-0531)反弹上探,5月27号开盘前本人曾提醒关注反弹,较当时上涨约30美元,最高至2364一线,其后震荡下跌。周线小幅收跌0.27%&#x…

微服务:Rabbitmq的WorkQueue模型的使用、默认消费方式(消息队列中间件)

文章目录 WorkQueue模型控制预取消息个数 WorkQueue模型 当然,一个队列,可以由多个消费者去监听。 来实现一下. 生产者: Testpublic void testWorkQueue() throws InterruptedException {// 队列名称String queueName "simple.queue…

通过提示工程将化学知识整合到大型语言模型中

在当今快速发展的人工智能领域,大型语言模型(LLMs)正成为科学研究的新兴工具。这些模型以其卓越的语言处理能力和零样本推理而闻名,为解决传统科学问题提供了全新的途径。然而,LLMs在特定科学领域的应用面临挑战&#…

力扣173题:二叉搜索树迭代器(含模拟面试)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业…

蓝奏管理器iapp源码V3

蓝奏登录注册,简单管理文件夹等都没问题,就是上传接口需要有能力的人抓包进行修复一下(我留了之前还能正常使用的接口,也是蓝奏官方的,所以参照一下就行。),这个应该也不是什么大问题&#xff0…

【自然语言处理】【Scaling Law】Observational Scaling Laws:跨不同模型构建Scaling Law

相关博客 【自然语言处理】【Scaling Law】Observational Scaling Laws:跨不同模型构建Scaling Law 【自然语言处理】【Scaling Law】语言模型物理学 第3.3部分:知识容量Scaling Laws 【自然语言处理】Transformer中的一种线性特征 【自然语言处理】【大…

Ansible04-Ansible Vars变量详解

目录 写在前面6 Ansible Vars 变量6.1 playbook中的变量6.1.1 playbook中定义变量的格式6.1.2 举例6.1.3 小tip 6.2 共有变量6.2.1 变量文件6.2.1.1 变量文件编写6.2.1.2 playbook编写6.2.1.3 运行测试 6.2.2 根据主机组使用变量6.2.2.1 groups_vars编写6.2.2.2 playbook编写6.…

第17篇:JTAG UART IP应用<四>

Q:如何通过JTAG UART发送命令控制开发板的外设比如LED? A:Quartus硬件工程以及Platform Designer系统在第一个Nios II工程--Hello_World的Quartus硬件工程基础上添加PIO,表示DE2-115开发板上的18个红色LED。 Nios II软件工程对应…

mysql中EXPLAIN详解

大家好。众所周知,MySQL 查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式。在日常工作过程中,我们可以使用EXPLAIN语句来查看某个查询语句的具体执行计划, 今天我们…

JMeter的基本使用

JMeter的基本使用三步骤:1.添加线程、2.添加请求、3.添加查询结果的内容 如果需要添加token请求头来验证,则需要再加上一步骤:添加请求头 1.线程 添加线程的方式 主要修改者三个属性值 Number of Threads:并发线程数 Ramp-up…

LabVIEW通过以太网控制PLC程序开发

在使用LabVIEW通过以太网控制PLC程序开发时,需要综合考虑硬件、软件和通信协议的协调工作。以下是详细步骤、注意事项、重点和难点分析,以及几种实现方式及其特点的概述。 实现步骤 确定硬件和软件环境: 确定PLC型号和品牌(如西门…

Java 18新特性深度解析:提升开发效率与性能的革新工具

在Java的世界中,每一次更新都带来新的惊喜和挑战。Java 18作为长期支持版本,不仅延续了Java语言的稳定性和可靠性,还引入了一系列令人兴奋的新特性,旨在进一步提升开发者的生产力和应用程序的性能。本文将深入探讨Java 18中的关键…

【一刷《剑指Offer》】面试题 29:数组中出现次数超过一半的数字

力扣对应题目链接:169. 多数元素 - 力扣(LeetCode) 牛客对应题目链接:数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com) 核心考点 : 数组使用,简单算法的设计。 一、《剑指Offer》对应内容 二…

2024后端服务架构升级

文章目录 背景改造方案新架构图技术选型思考 服务拆分公共组件设计自部署算法服务排期计划 全球多活改造背景架构图分布式ID 背景 1、xx业务经过多轮的业务决策和调整,存在非常多技术包袱,带了不好的用户体验和极高的维护成本 2、多套机房部署&#xf…

数学建模之MATLAB入门教程(上)

前言: • MATLAB是美国Math Works公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 • MATLAB将数值分析、矩阵计算、科学数据可视化以及非线性动…

JavaScript基础(十一)

String对象的方法 上一次说了String,那也少不了方法。 length 字符串长度 charAt(a) 返回指定位置的字符,(这里a代表下标,它返回的就是下标a对应的字符) concat(b) 连接字符串,b是被合并的对象名,和加号拼接一样…

上位机图像处理和嵌入式模块部署(f407 mcu中tf卡读写和fatfs挂载)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很早之前,个人对tf卡并不是很重视,觉得它就是一个存储工具而已。后来在移植v3s芯片的时候,才发现很多的soc其实…

鬼刀画风扁平化粒子炫动引导页美化版

源码介绍 分享一款引导页,响应式布局,支持移动PC 添加背景图片,美化高斯模糊 ,删除蒙版人物部分,更图片人物画风更美好 删除雪花特效 替换字体颜色 添加底备案号 预留友情连接 效果预览 源码下载 https://www.qqmu.com/3381.h…