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.mzph.cn/web/17665.shtml

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

相关文章

记录深度学习GPU配置,下载CUDA与cuDnn

目标下载: cuda 11.0.1_451.22 win10.exe cudnn-11.0-windows-x64-v8.0.2.39.zip cuda历史版本网址 CUDA Toolkit Archive | NVIDIA Developer 自己下载过11.0.1版本 点击下载local版本,本地安装,有2个多GB,很大,我不喜欢network版本,容易掉线 cuDnn https://developer.nvi…

设置AXI主寄存器切片和AXI数据FIFO

设置AXI主寄存器切片和AXI数据FIFO 打开MHS文件&#xff0c;并为每个AXI主机设置启用寄存器切片/启用数据FIFO。到 确定正确的设置&#xff0c;使用下表中的信息搜索MHS。 进行搜索时&#xff0c;将<intf_name>替换为相关的BUS_INTERFACE名称。 例如&#xff0c;BUS_INTE…

Docker部署SpringBoot项目(jar包+Mysql)

部署Java项目 项目准备准备Java项目镜像准备配置网络 部署项目细节展示 项目准备 准备Java项目 hmall项目是一个maven聚合项目&#xff0c;使用IDEA打开hmall项目&#xff0c;查看项目结构如图&#xff1a; 我们要部署的就是其中的hm-service&#xff0c;其中的配置文件采用…

还在使用Swagger吗?ApifoxHelper插件隆重登场

目录 前言 安装Apifox Idea插件安装 插件令牌配置 获取令牌 Idea配置令牌 快速上手 同步文档 查看文档 结语&#xff1a; 前言 最近发现一款特别好用的插件&#xff0c;帮助开发者快速生成接口文档。ApifoxHelper插件实现代码零侵入&#xff0c;只需要写上相应注释即可…

K8s种的service配置

什么是service 官方的解释是:   k8s中最小的管理单元是pod&#xff1b;而service是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法;   Kubernetes 中 Service 的一个关键目标是让你无需修改现有应用以使用某种服务发现机制。 你可以在 Pod 集合中运行代码…

K-独立钻石(dfs),G-邪恶铭刻(贪心)

这两题&#xff0c;都是应该赛场上A出来的。 K.独立钻石 当时一直关注点在 I. Path Planning&#xff0c;没关注榜单&#xff0c;K,也能写&#xff0c;也就是dfs,从数据范围可以看出&#xff0c;直接暴力搜索。 代码 #include<bits/stdc.h> #define int long long #d…

读书短视频脚本:四川京之华锦信息技术公司

读书短视频脚本&#xff1a;打造引人入胜的文学世界 随着短视频平台的兴起&#xff0c;各类内容以更加直观、生动的方式呈现在观众面前。在这个信息爆炸的时代&#xff0c;如何将书籍的精华和魅力通过短视频这一新兴媒介传递给更多人&#xff0c;成为了一个值得探讨的话题。四…

C# 正则表达式使用小计

此文档用于记录平时使用正则表达式的心得&#xff0c;不定期更新 基础 实例 替换实例一 //这里匹配以 “( 开头,以 )” 结尾的字符串 private static Regex REGEX_ARG_CONTENT new Regex("""(.*?)""");//此方法用于在匹配到的结果前添加字符…

【教程】利用API接口添加本站同款【每日新闻早早报】-每天自动更新,不占用文章数量

本次分享的是给网站添加一个每日早报的文章&#xff0c;可以看到本站置顶上面还有一个日更的日报&#xff0c;这是利用ALAPI的接口完成的&#xff01;利用接口有利也有弊&#xff0c;因为每次用户访问网站的时候就会增加一次API接口请求&#xff0c;导致文章的请求会因为请求量…

【python】删除一个列表中的所有的1

删除所有的1 x [1, 1, 6, 3, 9, 4, 5, 1, 1, 2, 1, 9, 6, 4] 使用lambda函数和filter来过滤掉x中的1 filtered_x list(filter(lambda n: n ! 1, x)) 不是1的数字&#xff0c;存进x列表&#xff0c;filter用于插入元素到第二个位置 print(filtered_x) # 输出: [6, 3, 9, …

Discourse 编辑没有办法显示更多的 JS 错误

Priority/Severity: High Platform: 3.3.0.beta3-dev UI bugs Description: 昨天升级的时到最新版本的时候就发现有这个错误&#xff0c;是 JS 的错误。 发了一个帖子到官方的网站上&#xff0c;官方说可能是插件的问题。 但是我们实在是没有安装什么插件呀&#xff1f; 官方…

“一带一路”六国国际拳王冠军赛特克斯站新闻发布会顺利举行

实习记者&#xff1a;喀兰姆罕 5月24日&#xff0c;“一带一路”六国国际拳王冠军赛特克斯站新闻发布会在特克斯县阿克塔斯姑娘峰景区举行。这次拳王冠军赛事由新疆广播电视台、特克斯镇人民政府&#xff0c;特克斯县文化体育广播电视和旅游局主办&#xff0c;将于6月15日在特…

宿舍管理系统代码详解(操作界面)

目录 一、前端代码 1.样式展示 2.代码详解 <1>主页面列表部分 &#xff08;1&#xff09;template部分 &#xff08;2&#xff09;script部分 <2>新增页面 &#xff08;1&#xff09;template部分 &#xff08;2&#xff09;script部分 <3>修改页面…

NXP i.MX8系列平台开发讲解 - 3.13 Linux 之Audio子系统(二)

专栏文章目录传送门&#xff1a;返回专栏目录 目录 1. Linux ALSA 内核框架 2. Linux ALSA 代码分析 2.1 声卡驱动初始化 2.2 声卡创建注册 2.3 PCM设备创建 3. ALSA ASoC 3.1 Machine 3.2 Platform 3.3 Codec 上一章节&#xff0c;对于Linux Audio子系统有了大概的了解…

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

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

WebGL技术在工程控制中的应用

WebGL技术在工程控制中的应用非常广泛&#xff0c;它利用了浏览器内的强大图形处理能力&#xff0c;可以为工程领域提供实时的三维可视化和交互功能。以下是WebGL在工程控制中的几个主要应用领域及其具体应用。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&…

【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍 文章编号&#xff…

力扣63 不同路径Ⅱ Java版本

文章目录 题目描述代码 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格…

粤嵌—2024/5/28—最大正方形(✔)

代码实现&#xff1a; 方法一&#xff1a;模拟——超时 int maximalSquare(char **matrix, int matrixSize, int *matrixColSize) {int maxSide 0;if (matrix NULL || matrixColSize NULL || matrixSize < 0 || matrixColSize[0] < 0) {return 0;}for (int i 0; i &l…

【每日一坑】KiCAD 覆铜区域约束

【每日一坑】 1.螺丝孔周围不想要要铜皮&#xff1b; 2、首先在CTRLshiftK;画一个区域&#xff0c;比如铺一个GND; 3、选择CUTOUT; 4、画线&#xff0c;画好闭合图形&#xff1b;如下图 5、就是这样了&#xff0c;就是还没有画圆或者异形的&#xff1b;