【Docker】概述与安装

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于Docker的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一. Docker的概述

1.Docker为什么出现

2.Docker是什么

3.Docker有什么作用

4.Docker三要素

5.Docker和虚拟机的区别

二.Docker的安装

1.检查内核版本

2.卸载可能存在的旧版本

3.安装必要的系统工具

4.添加docker-ce安装源

5.更新yum缓存

6.安装docker-CE

三.Docker基本使用 

1.基本操作

(1)查看服务状态

(2)启停服务

①开启服务

②停止服务

③重启服务

(3)开机自启

(4)开机不自启

2.镜像的相关操作

(1)查看是否有镜像

(2)下载镜像

①配置加速器

②下载镜像

(3)查看宿主机上的镜像

(4)删除镜像

3.容器相关的操作

(1)创建容器

(2)启动容器

(3)停止容器

(4)重启容器

(5)查看当前的容器

(6)删除容器

(7)进入容器

(8)退出容器


一. Docker的概述

1.Docker为什么出现

        我们在开发过程中,可能经常会遇到这种问题。当项目中自己负责的模块完成时,每个工程师都会使用自己的开发环境来构建和测试应用程序。这就会导致一个常见的问题:当一个工程师将代码提交给源代码管理系统后,另一个工程师在拉取代码并尝试构建时,经常会遇到依赖项不一致的问题。有时候,即使两个工程师使用相同的依赖版本,由于操作系统或系统库的差异,也会导致应用程序在不同环境中表现出不同的行为

        同时,公司的运维团队在部署应用程序时也遇到了一些问题。他们使用了一些脚本和配置文件来手动安装和配置应用程序的依赖项。这个过程非常耗时且容易出错,导致了频繁的部署失败和生产环境中的故障。

        于是就有人想到将应用程序及其所有依赖打包到一个容器中。这个容器包含了应用程序所需的所有运行时环境、库和配置文件。通过使用这个容器,就可以确保每个开发人员、测试人员和运维人员都使用相同的容器来工作,消除了因为环境差异而导致的兼容性问题。这个容器就是Docker

2.Docker是什么

        上面也讲到了Docker的定义,但是这里我再详细的描述一下Docker。

         Docker是一种开源的容器化平台,它可以让开发者将应用程序及其所有依赖项打包到一个轻量级、可移植的容器中,并在任何地方运行这些容器,无论是在开发、测试还是生产环境中。Docker使用了Linux容器技术来实现这个功能,通过隔离进程、文件系统和网络空间等资源,使得容器内的应用程序可以独立于宿主操作系统而运行。       

3.Docker有什么作用

  1. 轻量级和可移植性:Docker使用容器化技术,将应用程序及其所有依赖项打包到一个轻量级的容器中。这使得容器可以在不同的环境中运行,而不受宿主操作系统和硬件的影响。容器可以在开发、测试和生产环境之间进行快速、一致和可靠的部署。

  2. 环境隔离:Docker通过使用Linux容器技术,实现了应用程序与宿主操作系统之间的隔离。这意味着每个Docker容器都具有独立的文件系统、进程空间和网络栈,相互之间不会产生干扰。这种隔离性使得开发人员可以在同一台机器上同时运行多个容器,而不必担心它们之间的冲突和依赖关系。

  3. 一致性和可重复性:Docker镜像是一个只读的模板,其中包含了应用程序及其所有的依赖项、运行时环境、库和配置文件等。通过使用Docker,开发者可以确保每个人都使用相同的镜像来构建和运行应用程序,消除了因为环境差异而导致的兼容性问题。这种一致性和可重复性使得团队成员可以更加方便地共享和协作。

  4. 快速部署和扩展:Docker提供了一系列强大的工具和功能来简化应用程序的部署和扩展过程。通过使用Docker镜像,开发者可以快速创建新的容器,并将其部署到任何支持Docker的主机上。此外,Docker还提供了容器编排工具,如Docker Compose和Kubernetes,可以自动化应用程序的扩展、负载均衡和故障恢复等操作。

  5. 版本控制和回滚:Docker镜像可以被版本控制系统管理,使得开发者可以轻松地跟踪和管理应用程序的不同版本。如果出现问题,开发者可以快速回滚到之前的版本,以避免影响生产环境。

在Docker出现之前,我们都是使用虚拟机来测试和部署项目的,但使用虚拟机也会有弊端。在同一台物理机上运行多个虚拟机时,会导致资源竞争,降低系统性能等。但是Docker就不一样了...

4.Docker三要素

 Docker的核心组件包括Docker仓库、Docker镜像和Docker容器。

  • Docker仓库是集中存放镜像文件的场所。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。 最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。           
  • Docker镜像是一个只读的模板,其中包含了应用程序及其所有依赖项、运行时环境、库和配置文件等。【Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载 一 个已经做好的镜像来直接使用。
  • Docker容器则是从Docker镜像创建的运行实例,它可以被启动、停止、重启、删除等。

5.Docker和虚拟机的区别

  • VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓 库,然后再安装应用;
  • Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装 应用。

二.Docker的安装

Docker的安装是在虚拟机上操作的,关于虚拟机的安装,我也写了一篇很详尽的博文,感兴趣可以看看

【Linux】操作系统以及虚拟机的安装与配置icon-default.png?t=N7T8http://t.csdnimg.cn/ZyckP

1.检查内核版本

uname -r

2.卸载可能存在的旧版本

如果有旧版本存在的话,就将其卸载掉

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

3.安装必要的系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

成功了便是这样的

4.添加docker-ce安装源

这里为了快捷,我是用的是阿里源,所以需要先配置阿里云Docker Yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.更新yum缓存

yum makecache fast

6.安装docker-CE

yum -y install docker-ce

三.Docker基本使用 

1.基本操作

(1)查看服务状态

systemctl status docker

(2)启停服务

①开启服务
systemctl start docker
②停止服务
systemctl stop docker
③重启服务
systemctl restart docker

(3)开机自启

systemctl enable docker

(4)开机不自启

systemctl disable docker

2.镜像的相关操作

(1)查看是否有镜像

docker images

(2)下载镜像

①配置加速器

进入阿里云网站,然后进入到控制台

将其中配置靖江加速器的那一段代码复制下来,赋值对应版本的就行【我使用的是centos】

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://vq5w5mzb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

将这个执行完毕之后,也可以检查一下,直接查看这个文件,里面有东西,就说明好啦

②下载镜像

后面可以指定版本号,如果没有指定的话,默认使用的是最新版本的

docker pull nginx

(3)查看宿主机上的镜像

docker images

(4)删除镜像

如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像。或者强制删除镜像。 正确做法:先删除依赖该镜像的所有容器, 再来删除镜像

docker rmi centos

还有一个是强制删除

docker rmi -f centos:latest

3.容器相关的操作

(1)创建容器

-it:是两个参数,

-i:interactive容器具有交互功能

-t:容器将提供伪终端

--name:指定生成的容器的名字,允许空,如果不指定会自动生成

docker create -it centos

指定成的容器的名字

docker create -it --name centos01 centos
(2)启动容器
docker start 容器ID|name|name:tag
(3)停止容器
docker stop 容器ID|name|name:tag
(4)重启容器
docker restart 容器ID|name|name:tag
(5)查看当前的容器
docker ps

或者使用这个,可以查看未运行的容器

docker ps -a
(6)删除容器
docker rm 容器ID

强制删除

docker rm -f 容器ID
(7)进入容器

用这个进入容器时,前面会显示出此容器的ID

docker exec -it 容器ID/容器NAME /bin/bash

这个不会显示容器ID

docker exec -it 容器ID/容器NAME sh
(8)退出容器
  • 退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】
  • 如果不想继续运行:按【ctrl+d】或输入exit

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

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

相关文章

【AI视野·今日CV 计算机视觉论文速览 第285期】Mon, 8 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 8 Jan 2024 Totally 66 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Denoising Vision Transformers Authors Jiawei Yang, Katie Z Luo, Jiefeng Li, Kilian Q Weinberger, Yonglong Tian, Yue…

YOLOv8-Seg改进:轻量化改进 | 超越RepVGG!浙大阿里提出OREPA:在线卷积重参数化

🚀🚀🚀本文改进:OREPA在线卷积重参数化巧妙的和YOLOV8结合,并实现轻量化 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升分割性能; 3)独家…

(css样式)权限控制el-button是否显示 + 鼠标悬浮停留才会显示el-button

前提&#xff1a; &#xff08;1&#xff09;当前物理席位是主任席&#xff08;seatType‘1’&#xff09; &#xff08;2&#xff09;管制席位TWR_ONE账号发布了内容&#xff1a;管制席——zhouzebiao——。。。。 &#xff08;3&#xff09;主任席tatai账号发布了内容&…

C++|47.动态数组 48.C++的std:vector使用优化

动态数组 动态数组叫vector&#xff0c;也是一种定义好的类/数据结构。“定义好”意味着 vector处在std命名空间之中。 vector的存在代表着一种可以调用的数据结构&#xff0c;不用 动态的意思是可以将该数组的大小进行动态调整。 也就意味着起初vector是没有固定大小的。 它是…

Git 基础指令

Git 基础指令 本章涵盖了我们在使用 Git 完成各种操作时将会用到的各种基本命令。 在学习完本章之后&#xff0c;我们应该能够配置并初始化一个仓库&#xff08;repository&#xff09;、开始或停止跟踪&#xff08;track&#xff09;文件、暂存&#xff08;stage&#xff09;…

QT第四天

头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTime>//时间类 #include<QTimerEvent>//定时器事件类 #include<QtTextToSpeech> //语言播报类 #include<QPushButton> namespace Ui { class Widget; }clas…

【Scala】——变量数据类型运算符

1. 概述 1.1 Scala 和 Java 关系 1.2 scala特点 Scala是一门以Java虚拟机&#xff08;JVM&#xff09;为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言&#xff08;静态语言需要提前编译的如&#xff1a;Java、c、c等&#xff0c;动态语言如&#…

js 数据回调 异步 Promise

回调顺序 JavaScript 函数按照它们被调用的顺序执行。而不是以它们被定义的顺序。 js数据顺序问题 <!DOCTYPE html> <html> <body><h2>JavaScript 函数序列</h2><p>JavaScript 函数按照它们被调用的顺序执行。</p><p id"de…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-3Phase Portrait相图,相轨迹

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-3Phase Portrait相图&#xff0c;相轨迹 1. 1-D2. 2-D3. General Form4. Summary5. 爱情中的数学-Phase Portrait 相图动态系统分析 1. 1-D 2. 2-D 3. General Form 4. Su…

你为什么还在用Promise.all?

请停止在JavaScript中使用Promise.all() 什么是JavaScript中的Promise 如果您偶然发现这篇文章,那么您可能已经熟悉了promise。 但是,对于那些JavaScript新手来说,让我们来详细说明一下。 从本质上讲,Promise对象表示异步操作的最终完成或失败。 有趣的是,当创建promise时,其值…

【昕宝爸爸小模块】ConcurrentHashMap为什么不允许null值

ConcurrentHashMap为什么不允许null值 一、✅典型解析二、✅要实现一个HashMap怎么做2.1 ✅需要考虑以下几个方面2.2 ✅基于数组和链表的HashMap实现Demo2.3 ✅扩容后如何解决链表长度过长的问题 三、✅拓展知识仓3.1 ✅在多线程环境下如何保证数据的正确性和性能3.2 ✅那如何在…

git 的安装

git 的安装 在我们开始使用 Git 前&#xff0c;需要将它安装在我们的电脑上。即便已经安装&#xff0c;最好将它升级到最新的版本。 我们可以通过软件包或者其它安装程序来安装&#xff0c;或者下载源码编译安装。 本文只介绍通过在 windows 上安装软件包的方式&#xff0c;其…

vue Element Plus Cascader级联选择器点击标签选中复选框

element-plus原功能 element-plus的Cascader级联选择器点击标签时是不会选中复选框的&#xff0c;我们想要实现点击标签时也能选中复选框这个效果&#xff0c;那么就要用到一些原生的方法 实现效果 mounted() {// Cascader 级联选择器: 点击文本就让它自动点击前面的input就可…

Vue 自定义仿word表单录入之日期输入组件

因项目需要&#xff0c;要实现仿word方式录入数据&#xff0c;要实现鼠标经过时才显示编辑组件&#xff0c;预览及离开后则显示具体的文字。 鼠标经过时显示 正常显示及离开时显示 组件代码 <template ><div class"paper-input flex flex-col border-box "…

JAVA基础学习笔记-day17-反射

JAVA基础学习笔记-day17-反射 1. 反射(Reflection)的概念1.1 反射的出现背景1.2 反射概述1.3 Java反射机制研究及应用1.4 反射相关的主要API1.5 反射的优缺点 2. 理解Class类并获取Class实例2.1 理解Class2.1.1 理论上2.1.2 内存结构上 2.2 获取Class类的实例(四种方法)2.3 哪些…

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin

Android基于Matrix绘制PaintDrawable设置BitmapShader&#xff0c;以手指触点为中心显示原图像圆图&#xff0c;Kotlin 手指在上面的图上移动&#xff0c;“剪切”出上面图中以手指触点为中心的图&#xff08;半径图&#xff09;&#xff0c;然后在下面的ImageView显示。 impor…

【AI视野·今日Robot 机器人论文速览 第七十三期】Tue, 9 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 9 Jan 2024 Totally 40 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Digital Twin for Autonomous Surface Vessels for Safe Maritime Navigation Authors Daniel Menges, Andreas Von Brandis, A…

鸿蒙原生应用再添新丁!万达 入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;万达 入局鸿蒙 来自 HarmonyOS 微博1月11日消息&#xff0c;#万达酒店及度假村启动鸿蒙原生应用及元服务开发# 作为具有中国特色的国牌服务酒店标杆之一&#xff0c;万达酒店及度假村Wanda 将带来全新的服务和交互方式&#xff0c;一步获取“…

3 快速前端开发

3 前端JavaScript 3 前端JavaScript1. JavaScript1.1 代码位置1.2 注释1.3 变量1.4 字符串类型案例&#xff1a;跑马灯 1.5 数组案例&#xff1a;动态数据 1.6 对象&#xff08;字典&#xff09;案例&#xff1a;动态表格 1.7 条件语句1.8 函数 2.DOM2.1 事件的绑定 3.知识点的…

大模型训练营Day3 基于 InternLM 和 LangChain 搭建你的知识库

本次的授课人是一个提示词开发项目的负责人。下面一起进入本期课程吧》 本次课程内容主要如下&#xff1a; 开篇交代了大模型的局限性&#xff0c;然后引出主题&#xff1a; 简单总结&#xff0c;大模型是根据数据集训练&#xff0c;很难使用具有实时性的数据进行重新训练&am…