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

news2024/11/14 20:39:31

目录

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

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

如果无法访问,可参考

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全防御之下一代防火墙部署思路分享

随着企业在数字化转型过程中不断深化,为了促进业务快速且安全地推出和更新,企业所采用的应用架构和部署方式经历了显著的演进:它们从单一应用转变为分层架构,进而发展为微服务架构;同时部署方式也由传统的本地部署进化…

区间选点问题-贪心-C++

问题: 给定 𝑁 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 𝑁,表示区间数…

这样问问题, 客户才会下单!

和供应商沟通时,提问方式至关重要。如何提问是外贸交流的关键,而针对客户的合适提问更是促成交易的秘诀。前不久, 我有一个客户想要一个不属于我们行业的新品, 于是我准备去阿里巴巴找找供应商。但因为我对该领域并不了解&#xf…

MYSQL 使用子查询id数据做条件更新

举例,我想查出某个表里面符合条件的前5条数据的id 做数据更新 : 想法 报错 更正写法 : 示例: UPDATE t_authorisation_record ar1JOIN (SELECT IDFROM t_authorisation_recordWHERE device_company_name JCcccORDER BY id ASCLI…

Python代码:二十一、增加派对名单(二)

1、题目 描述 为庆祝驼瑞驰在牛爱网找到合适的对象,驼瑞驰通过输入的多个连续字符串创建了一个列表作为派对邀请名单,在检查的时候发现少了他最好的朋友“Allen”的名字,因为是最好的朋友,他想让这个名字出现在邀请列表的最前面…

边缘计算网关的用途及其使用方法-天拓四方

在数字化日益深入的今天,边缘计算网关作为一种重要的设备,正在越来越多地被应用于各种场景中。它不仅能够提升数据处理的速度和效率,还能在降低网络延迟的同时确保数据的安全性。本文将详细介绍边缘计算网关的用途及其使用方法,帮…

linux安装mysql后,配置mysql,并连接navicate软件

Xshell连接登陆服务器 输入全局命令 mysql -u root -p 回车后,输入密码,不显示输入的密码 注意mysql服务状态,是否运行等 修改配置文件my.cnf,这里没找到就找my.ini,指定有一个是对的 find / -name my.cnf 接下…

04_前端三大件JS

文章目录 JavaScript1.JS的组成部分2.JS引入2.1 直接在head中通过一对script标签定义脚本代码2.2创建JS函数池文件,所有html文件共享调用 3.JS的数据类型和运算符4.分支结构5.循环结构6.JS函数的声明7.JS中自定义对象8.JS_JSON在客户端使用8.1JSON串格式8.2JSON在前…

2024年zoom会议受主持人账户限制影响,无法加入会议。(错误代码13215)

问题一、老师,你好!我的zoom账户,刚开始注册后可以登录,但是现在登录不了了。代码1044。其次,我如果通过网页版设置会议号,别人也加入不了。代码13215。 这两个问题一般会同时出现。登录失败。(错误代码:1044)一般是创…

如何自动识别图片上的文字?一键转文本方法分享

如何自动识别图片上的文字?自动识别图片上的文字,即OCR技术,已经取得显著进步,并在多个领域得到广泛应用。它可以极大地提高我们处理文本信息的效率,无论是从文档扫描、图片识别,还是到自动翻译和数据录入&…

【干货】如何用SaaS商城助力全球化布局

在全球化的大潮中,企业如何迅速而有效地拓展海外市场,成为了众多企业家和管理者关注的焦点。随着技术的发展,SaaS(软件即服务)商城作为一种创新的商业模式,为企业全球化布局提供了强有力的支持。saas商城如…

Java整合EasyExcel实战——2 导出复杂表头

详情代码 实体类 Data public class ComplexHeadData {ExcelProperty({"主标题", "字符串标题"})private String string;ExcelProperty({"主标题", "日期标题"})private Date date;ExcelProperty({"主标题", "数字标…

学习云安全?就来亚马逊云科技中国峰会安全动手实验专场

一年一度的云计算春晚“亚马逊云科技中国峰会”明天就正式开始了,大会的注册将在5月28日今天晚18:00前停止报名,还没有报名的小伙伴请抓紧了!可以通过下方二维码注册大会。 小李哥也来提前带大家了解下本次大会中云安全相关的动手实验和活动&…

【NumPy】全面解析NumPy的sort函数:高效排序算法与应用技巧

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

基于瑞萨RA6M5的自控衣橱

1. 主控转接板原理图和PCB设计 2. 屏幕界面设计 3. 程序设计 4. QT设计 QT设计,读取MQTT数据,在QT上显示衣橱内部的温度,湿度情况,且能够控制衣橱的开关门,开关灯等。 5. 实物演示 瑞萨

Scala编程基础3 数组、映射、元组、集合

Scala编程基础3 数组、映射、元组、集合 小白的Scala学习笔记 2024/5/23 14:20 文章目录 Scala编程基础3 数组、映射、元组、集合apply方法数组yield 数组的一些方法映射元组数据类型转换求和示例拉链集合flatMap方法 SetHashMap apply方法 可以new,也可以不new&am…

大学搜题软件音乐类?分享三个支持答案和解析的工具 #微信#媒体

高效的学习工具可以帮助我们提高记忆力和理解能力,使知识更加深入人心。 1.彩虹搜题 这是个微信公众号 一款专门供全国大学生使用的查题神器!致力于帮助大学生解决学习上的难题,涵盖了大学生学习所需的学习资料。 下方附上一些测试的试题及答案 1、甲、乙合伙开…

算法工程师需要学习C++的哪些知识?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!以下是算法工程师需要学习的一些…

【机器学习】机器学习基础概念与初步探索

❀机器学习 📒1. 引言📒2. 机器学习概述📒3. 机器学习基础概念🎉2.1 机器学习的分类🎉2.2 数据预处理🌈数据清洗与整合🌈 特征选择和特征工程🌈数据标准化与归一化 📒4. …

K8s service 进阶

文章目录 K8s service 进阶Service 工作逻辑Service 具体实现Service 资源类型ClusterIPNodePortLoadBalancerExternalName Service 与 EndpointEndpoint 与 容器探针自定义Endpoint Service 相关字段sessionAffinityexternalTrafficPolicyinternalTrafficPolicypublishNotRead…