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博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Biological Psychiatry:内源性功能连接的特定模式与强迫症的伤害回避有关

摘要 强迫症(OCD)患者通常在没有实际威胁的情况下表现出持续的回避行为。强迫症对生活质量的影响和患者之间的异质性使得寻找新的大脑-行为干预目标十分有必要。基于啮齿类动物和非人灵长类动物持续回避行为的机制和解剖学研究,本研究的目标是测试持续回避行为相关…

本科java菜鸡,分享腾讯菜鸟京东面试经历

楼主本科菜鸡一个,菜鸟三面挂掉,腾讯二面就挂了,美团携程58集团的笔试做过之后全部都石沉大海,现在实在缺乏实力追求选择空间,望大佬不要嘲笑。这里给大家分享一波面经造福后仁吧。 菜鸟网络 菜鸟是我2月27号就找学长…

什么是抗压能力?如何判断自己的抗压能力?

什么是抗压能力? 抗压能力,也叫心理承受能力,指的是面对外界的压力,逆境,困境和挑战,能够有效的调整自己的心态,有效的应对和解决问题的能力。 抗压能力涉及多个方面,比如&#xf…

cesium 地形加载

1.效果图: 2.cesium 的基础配置 //无token会导致球体无法显示 Cesium.Ion.defaultAccessToken "your token"; // 官网网配置的tokenvar viewer new Cesium.Viewer(cesiumContainer, {geocoder: false,//控制地图是否显示一个地理编码(geocodi…

apexcharts数据可视化之雷达图

apexcharts数据可视化之雷达图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基础雷达图多组数据雷达图雷达图标记点 基础雷达图 import ApexChart from react-apexcharts;export function BasicRadar() {// 数据序列const series [{name…

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一)

整期笔记索引 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二) Orange Pi AIPro开发板:昇腾AI处理器的强劲性能与广泛应用前景 在…

Java-文件操作

一、创建文件 1.创建文件夹 创建文件夹时,注意两个条件,该路径对应的是否为目录(dir),该文件夹是否存在。 File Apathnew File("./文件夹A"); //当前路径文件夹的存储路径if(!Apath.exists() &&am…

Midjourney如何控制光照?提示词灵感来了!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Midjourney如何控制光照?提示词灵感来了!文章目录 前言总结 前言 Midjourney v6 已经更新好久了,你知道有哪些可以控制光照效果的关键词吗…

为什么宋以前权臣篡位多、宋以后权臣篡位少?

时代不同,主要问题也不同。天下的大气候,自然就要左右王朝的小气候。权臣篡位,得先有权臣。但是,如果当权臣都没有了,又怎么可能有权臣篡位呢?这是一个社会基础的变化。宋以后的主要矛盾是中原和草原的争锋…

Dify快速接入微信

一、Dify简介 项目官网:Dify.AI 生成式 AI 应用创新引擎 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非…

【网络】网络编程套接字

一、知识提及 1.源IP地址和目的IP地址 在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址 2.端口号 端口号(port)是传输层协议的内容. 端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理;IP地址 …

企业文件加密实现数据泄露防护

在数字化时代,数据成为企业最宝贵的资产之一。然而,数据泄露事件频发,给企业带来了巨大的经济损失和声誉风险。为了保护企业的核心利益,实现数据泄露防护,企业必须采取有效的文件加密措施。 一、数据泄露的严重性 数据…

大疆、猛犸、西圣无线麦克风哪个牌子好?大疆、西圣麦克风测评PK

在当今这个全民参与媒体创作的时代,视频分享已经崛起为引领流行文化的关键力量。随着自媒体领域的竞争日益白热化,要想在浩瀚的内容海洋中脱颖而出,创作出卓越的作品无疑是吸引观众目光的核心要素。然而想要成功打造这样的佳作,除…

目标检测——水下物体检测数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

[C#]使用C#部署yolov8的目标检测tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll,TensorRtExtern源码地址:TensorRT-CShar…

Epic Pen Pro v3 解锁版安装教程 (屏幕实时标记注释工具)

前言 Epic Pen是一款功能强大的屏幕标记工具,允许您在屏幕上绘图或书写,而无需在后台与软件交互。这意味着您几乎可以注释任何东西!使用我们流行的屏幕标记和Windows数字白板工具Epic Pen编写、绘制和突出显示,包括演示文稿软件&…

AlexNet神经网络训练

导包 import tensorflow as tffrom tensorflow.keras import datasets, layers, models 加载Fashion-MNIST数据集 (train_images, train_labels), (test_images, test_labels) datasets.fashion_mnist.load_data() 归一化像素值到[0, 1]区间 train_images, test_images t…

springboot vue 开源 会员收银系统 (3) 会员模块开发

前言 完整版演示 前面我们对会员系统 springboot vue 开源 会员收银系统 (2) 搭建基础框架 进行了脚手件的搭建 下面我们将从会员模块进行开发 在此之前我们先简单梳理一下会员系统的导图 可以看出会员是贯穿全部的 所以我们在此梳理一下会员表的字段 CREATE TABLE business…

决策树算法实战

本实战主要目标是讲解如何使用sklearn库来构造决策树,包括其中的一些参数的使用,以及参数调优对模型精确度的影响。 1. 数据处理 导入Pandas和Matplotlib两个库。 # 导入Pandas和Matplotlib两个库 %matplotlib inline import matplotlib.pyplot as pl…

buuctf_RE

[WMCTF2020]easy_re 简单输入flag 但是下断点后,还没走几步就报错退出了。 确实没有打印的字符串 main函数也看不懂在干嘛 int __cdecl main(int argc, const char **argv, const char **envp) {__int64 v4; // r13char v5; // r12__int64 v6; // rax_QWORD *v7;…