Docker的安装和使用

Docker概述

Docker简介
Docker 是基于 Go 语言实现的云开源项目。
Docker 的主要目标是: Build, Ship and Run Any App, Anywhere ,也就是通过对应用组件的封装、
分发、部署、运行等生命周期的管理,使用户的 APP 及其运行环境能做到 一次镜像,处处运行 Build 
once Run anywhere
应用部署的环境问题
大型项目组件较多,运行环境也较为复杂,部署时会遇到一些问题
依赖关系复杂,容易出现兼容性问题
开发、测试、生产环境有差异
一个项目中,部署时需要依赖于 node.js Redis RabbitMQ MySQL 等,这些服务部署时所需要的函 数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。
Docker解决依赖兼容
Docker 却巧妙的解决了这些问题, Docker 是如何实现的呢?
Docker 为了解决依赖的兼容问题的,采用了两个手段:
1、将应用的 Libs (函数库)、 Deps( 依赖 ) 、配置与应用一起打包
2、将每个应用放到一个容器去运行,避免互相干扰。
优势
作为一种虚拟化方式, Docker 跟传统的虚拟化方式相比具有众多的优势。
1. 更高效的利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销, Docker
对系统资源的利用率更高。
2. 更快速的启动时间:可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时
间。
3. 一致的运行环境: Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致
性。
4. 持续交付和部署:使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。
5. 更轻松的迁移
6. 更轻松的维护和扩展
Docker运行速度快的原因
Docker 有比虚拟机更少的抽象层:
由于 Docker 不需要 Hypervisor (虚拟机)实现硬件资源虚拟化,运行在 Docker 容器上的程序直接使用
的都是实际物理机的硬件资源,因此在 CPU 、内存利用率上 docker 有明显优势。
Docker 利用的是宿主机的内核,而不需要加载操作系统 OS 内核:
当新建一个容器时, Docker 不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作
系统内核返回等比较耗时耗资源的过程。当新建一个虚拟机时,虚拟机软件需要加载 OS ,返回新建过程
是分钟级别的。而 Docker 由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个 docker
器只需要几秒钟。
Docker 容器的本质就是一个进程。
Docker组成
Docker 并非一个通用的容器工具,它依赖于已经存在并运行的 Linux 内核环境。(在 Windows 上安装
Docker 时需要依赖 WLS ,也即 Windows 下的 Linux 子系统)。
Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部
署的 Linux 主机。
Docker 的基本组成部分:
1:镜像( image
2:容器( container
3:仓库( repository
Docker镜像
Docker 将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
Docker 镜像就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建多个容器。
 Docker容器
Docker 利用容器独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟
化的运行环境,容器是用镜像创建的运行实例。
镜像和容器的区别
镜像,就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。
所以镜像以文件形式保存在硬盘中,可以独立存在。
而容器是个进程,只能靠运行镜像而存在,没有能够脱离于镜像而存在的容器。
从一个镜像可以发起多个容器,而一个容器肯定只能从一个镜像产生。
 Docker仓库
Docker 仓库是集中存放镜像文件的场所。
仓库分为公开仓库和私有仓库两种。
最大的公开仓库是 Docker 官方的 Docker Hub https://hub.docker.com/
举个例子
我来到一片空地,想建个房子,于是我搬石头、砍木头、画图纸,一顿操作,终于把这个房子盖好了。
结果,我住了一段时间,想搬到另一片空地去。这时候,按以往的办法,我只能再次搬石头、砍木头、
画图纸、盖房子。
但是,跑来一个老巫婆,教会我一种魔法。
这种魔法,可以把我盖好的房子复制一份,做成 镜像 ,放在我的背包里。
刚才例子里面,那个放在包里的 镜像 ,就是 Docker 镜像。而背包,就是 Docker 仓库。在空地上,用魔法造好的房子,就是一个Docker 容器。
Docker 镜像,是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构

安装docker

安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

配置资源库(阿里)
​
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo​

安装docker
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

查看版本
Docker version

创建配置文件
/etc/docker/daemon.json

配置镜像加速

{
"registry-mirrors": ["https://docker.m.daocloud.io"]
}

重启docker

Systemctl restart docker

拉取镜像

Docker pull 镜像的名字

Docker pull nginx

查看镜像
Docker images

创建容器

Docker create --name 容器的名字 -p 暴露的端口号:原本的端口号 镜像的名字

例:Nginx 的镜像   容器   mynginx

 docker create --name=mynginx -p 80:80 nginx

查看所有的容器

Docker ps -a

查看运行的容器

Docker ps 

启动容器

Docker start 容器的id/容器的名字

根据容器的名字启动

docker start mynginx1

根据容器的id启动

 docker start 809308bc1fb3

访问容器

访问浏览器我们设置的端口号

删除镜像

dockerrmi镜像名称/ID

删除容器

根据id 和名字进行删除

容器名字不能重复

docker rm 容器的名字

进入容器

语法:

Docker exec -it 容器的名字/容器的id bash

docker exec -it mynginx bash

修改文件

需要vim 容器中是没有的

安装工具

执行命令:

apt-get updateapt-get install vim

修改首页的信息

默认页面位置

vi /usr/share/nginx/html/index.html

安装完后,进入html文件里保存后退出,再次打开浏览器访问nginx页面会跟着变化

导入和导出镜像

导出
docker save -o 名字.tar 镜像id:版本号

导出镜像之后将镜像复制到另外一个服务器中

 例: scp ./test.tar root@192.168.184.35/usr

导入

导入镜像

在新的服务器(192.168.184.35)中导入镜像

docker load -i  test.tar

查看镜像

[root@hostM1 nginx]# systemctl start docker[root@hostM1 nginx]# docker load -i test.tar[root@hostM1 nginx]# docker images

这样也就相当于我们建了一个房子,可以将他放到背包里,也可以拿出来

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

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

相关文章

【Python】 已解决:ModuleNotFoundError: No module named…

个人简介:某不知名博主,致力于全栈领域的优质博客分享 | 用最优质的内容带来最舒适的阅读体验!文末获取免费IT学习资料! 🍅 文末获取更多信息 🍅 👇🏻 精彩专栏推荐订阅收藏 &#x…

Qt clicked()、clicked(bool)、toggled(bool)信号的区别和联系

clicked() 信号 所属控件:clicked()信号是QAbstractButton类(及其子类,如QPushButton、QRadioButton、QCheckBox等)的一个信号。clicked信号可以说是许多控件(特别是按钮类控件,如QPushButton)…

linux下共享内存的3种使用方式

进程是资源封装的单位,内存就是进程所封装的资源的一种。一般情况下,进程间的内存是相互隔离的,也就是说一个进程不能访问另一个进程的内存。如果一个进程想要访问另一个进程的内存,那么必须要进过内核这个桥梁,这就是…

Linux基础3-基础工具4(git),冯诺依曼计算机体系结构

上篇文章:Linux基础3-基础工具3(make,makefile,gdb详解)-CSDN博客 本章重点: 1. git简易使用 2. 冯诺依曼计算机体系结构介绍 目录 一. git使用 1.1 什么是git? 1.2 git发展史 1.3 git创建仓库 1.4 git命令操作 二. 冯诺依…

1.3 计算机网络的分类

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言一、按分布范围分类二、按传输技术分类三、按拓扑结构分类四、按使用者分类五、按传输介质分类 前言 计算机网络根据不同的标准可以被分为多种类型,本章从分布…

Flink系列知识之:Checkpoint原理

Flink系列知识之:Checkpoint原理 在介绍checkpoint的执行流程之前,需要先明白Flink中状态的存储机制,因为状态对于检查点的持续备份至关重要。 State Backends分类 下图显示了Flink中三个内置的状态存储种类。MemoryStateBackend和FsState…

二叉搜索树(BSTree)原理及应用场景

目录 引言 二叉搜索树的基本概念 常见算法 插入节点 查找节点 删除节点 二叉搜索树的应用场景 1. 数据库索引 2. 符号表 3. 字典和词汇表 4. 动态集合 结论 引言 二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,其每个节…

JavaEE: 深入探索TCP网络编程的奇妙世界(五)

文章目录 TCP核心机制TCP核心机制六: 拥塞控制为什么要有拥塞控制?动态调整的拥塞控制拥塞控制中,窗口大小具体的变化过程 TCP核心机制七: 延时应答TCP核心机制八: 捎带应答 TCP核心机制 前一篇文章 JavaEE: 深入探索TCP网络编程的奇妙世界(四) 书接上文~ TCP核心机制六: 拥…

Ubuntu20.04 搜索不到任何蓝牙设备

电脑信息 联想扬天YangTianT4900k 问题描述 打开蓝牙之后,一直转圈,搜索不到任何蓝牙设备 排查 dmesg | grep -i blue 有如下错误: Bluetooth: hci0: RTL: unknown IC info, lmp subver 8852, hci rev 000b, hci ver 000b lsusb 芯片型号如…

spark读取数据性能提升

1. 背景 spark默认的jdbc只会用单task读取数据,读取大数据量时,效率低。 2. 解决方案 根据分区字段,如日期进行划分,增加task数量提升效率。 /*** 返回每个task按时间段划分的过滤语句* param startDate* param endDate* param …

每日学习一个数据结构-Trie树(字典树)

文章目录 定义节点结构根节点插入操作查找操作删除操作特点应用示例 “Trie”树,又称为前缀树或字典树,是一种专门用于存储字符串的数据结构。它在许多应用程序中都非常有用,特别是在那些需要高效查找、插入和删除字符串的应用场景中。下面是…

[项目:微服务即时通讯系统客户端(基于C++QT)]三,左侧界面搭建

三,左侧界面搭建 一,导入 先把MainWidget类做成“单例类” 采用的是单例模式,让某一个类,在指定进程中只有唯一的实例 先看一下MainWidget的框架 QWidget//这部分是头文件保护宏,确保该头文件只被包含一次&#x…

低级编程语言和高级编程语言

一.区分低级编程语言和高级编程语言的方法 1.低级编程语言 低级编程语言,并不是简单的编程语言,而是写起来很费事的编程语言,如所有编程语言的"祖宗":汇编语言,写起来极其麻烦,说不定一个 int a1; 它就得写好几行,甚至十几行 这样麻烦的编程语言为什么还没消失那,因…

基于微信小程序的家教信息管理系统的设计与实现(论文+源码)_kaic

摘 要 随着互联网时代的来临,使得传统的家教模式已不复存在,亟需一种方便、快捷的在线教学平台。因此,利用Java语言作为支撑和MySQL数据库存储数据,结合微信小程序的便利性,为用户开发出了一个更加人性化、方便的家庭…

超越sora,最新文生视频CogVideoX-5b模型分享

CogVideoX-5B是由智谱 AI 开源的一款先进的文本到视频生成模型,它是 CogVideoX 系列中的更大尺寸版本,旨在提供更高质量的视频生成效果。 CogVideoX-5B 采用了 3D 因果变分自编码器(3D causal VAE)技术,通过在空间和时…

ps证件照蓝底换白底

ps证件照蓝底换白底 1、打开 Photoshop,导入需要处理的照片。 2、左侧工具栏中选择“魔棒工具”,点击证件照的背景区域进行选择。 3、使用快捷键 Shift F5 或者从顶部菜单选择“编辑” -> “填充”,在弹出的对话框中选择“填充内容”中…

【全网最全】2024年华为杯研究生数学建模A题成品论文

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 点击链接获取群聊【2024华为杯研赛资料汇总】:https://qm.qq.com/q/yB6JDUTaWAhttps://qm.qq.com/q/yB6JDUTaWAA题第一问是关于如何建立一个低复杂度模型&a…

【M-LOAM学习】

M-LOAM(INITIALIZATION) Article Analysis Scan-Based Motion Estimation 通过在consecutive frame (each LiDAR)(因为omp parallel)中寻找correspondences然后通过最小化所有考虑feature之间residual error的transformation between frame to frame 针…

通过解预测和机器学习促进蚁群优化

文章目录 Abstract1. Introduction2. Background and related work2.1 定向越野问题2.2 ACO优化3. 基于预测的蚁群优化算法3.1 构建训练集3.2 训练与解预测3.3 将预测解融入蚁群优化Abstract ML - ACO 算法的第一阶段,使用一组已知最优解的小定向越野问题实例训练一个 ML 模型…

tornado

Tornado通过使用非阻塞网络1/0,可以扩展到数以万计的开放链接,非常适合 长时间轮询,WebSockets和其他需要与每个用户建立长期连接的应用程序。 特点 注重性能优越,速度快解决高并发异步非阻塞websockets 长连接内嵌了HTTP服务器…