【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令

这篇具有很好参考价值的文章主要介绍了【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是Docker

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

logo解释:

标志是一头鲸鱼携带着一堆容器。它正在向您发送这些信息的途中。Docker直译过来是码头工人,然而Docker给人的第一感觉是容器,容器技术英译为Linux Container, Container的直译有集装箱,容器两个意思。

什么是"集装箱技术"

我们都知道码头里的集装箱是运载货物用的,它是一种按规格标准化的钢制箱子。集装箱的特色,在于其格式划一,并可以层层重叠, 集装箱与集装箱之间互不影响于是乎,IT领域借鉴了这一理念,大家就在想,有没有可能大家 只需要关注程序本身?

我们都知道码头里的集装箱是运载货物用的,它是一种按规格标准化的钢制箱子。集装箱的特色, 「在于其格式划一,并可以层层重叠, 集装箱与集装箱之间互不影响」

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

概述

Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

重心:

Docker其实就是可以打包程序和运行环境,把环境和程序一起发布的容器。

为什么要使用Docker

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

Docker容器虚拟化的好处

开发者需要能方便高效构建应用,并且任何时间任何地点都可以获取。

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

Docker在开发和运维中的优势

对开发和运维( DevOps)人员来说,可能最梦寐以求的就是一次性地创建或配置,可以在任意环境、任意时间让应用正常地运行。而Docker恰恰是可以实现这一终极目标的瑞士军刀。

优势:

  • 更快速的交付和部署
  • 更高效的资源利用
  • 更轻松的迁移和扩展
  • 更简单的更新管理

Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势。

特性 容器 虚拟机
启动速度 秒级 分钟级
磁盘使用 一般为MB 一般为GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个
隔离性 完全隔离 完全隔离

虚拟化与Docker

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

虚拟化技术是一个通用的概念,在不同领域有不同的理解。在计算领域,一般指的是计算虚拟化或通常说的服务器虚拟化。

简单的说,「虚拟化」,顾名思义,就是「虚拟」的,是「假」的,是形而上的,是观念上、逻辑上的划分。

举栗说明

假设你现在手头上有一套房子,并且你要把它给租出去,租金的市场价是2000元/月。那么有没有办法把它租得更贵,获得6000元的租金呢?你想到了两个办法:

  1. 找一个不差钱的傻X租户,让他每月交6000元。
  2. 把房子租给4个单身狗,租金为1500元/人/月。

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

虚拟化分类:

  • 完全虚拟化
  • 硬件辅助虚拟化
  • 部分虚拟化
  • 超虚拟机化
  • 操作系统虚拟化

什么是物理机

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

什么是虚拟机

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

什么是Docker

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

Docker核心概念

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

Docker技术的三大核心概念,分别是:

  • 镜像(Image)
  • 容器 (Container)
  • 仓库 (Repository)
    【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

Docker镜像

Docker 镜像 (Image) 类似于虚拟机镜像,可以将它理解为个面向 Docker引擎的模板,包含了文件系统。

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

镜像从何而来
  • 从Docker Hub下载 maven-> 中央仓库
  • 通过Docker file自己创建出来

Docker容器

Docker容器(Container)类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。**容器是从镜像创建的应用运行实例,**可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

注意:

容器和镜像一样,也是若干层的叠加,唯一区别是所有只读层的最上面一层,是一层可读可写层,可以记住这个简单的公式:容器 = 容器镜像 + 可读可写层

Docker仓库

Docker仓库(Repository)类似于代码仓库,是Docker**集中存放镜像文件的场所。**目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供稳定的国内访问。

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

注意:

Docker利用仓库管理镜像的设计理念与Maven非常相似。

咱们再来理解docker的两句口号就更好理解了

  • 「Build, Ship and Run (搭建,发送,运行)」
  • 「Build once,Run anywhere (搭建一次,运行到任何地方)」

Docker安装

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

系统环境

序号 软件 版本
1 Centos 7.5
2 Linux内核 3.8之上

关闭防火墙

systemctl stop firewalld

关闭selinux

    vim /etc/selinux/config
SELINUX=disabled

安装docker引擎

yum install -y  docker
启动docker
systemctl start docker
设置docker自启动
systemctl enable docker
测试docker是否安装成功
docker run hello-world

Docker核心命令

镜像命令

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

Docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。

镜像下载docker pull

镜像是Docker运行容器的前提。docker pull

语法格式:

docker pull 镜像名字:[tag]

注意:

如果不指定tag,则下载Docker Hub公共注册服务器中仓库的最新版本。

查看镜像docker images

列出本地主机上已有的镜像。docker images

[root@docker *]# docker images
REPOSITORY  TAG    IMAGE ID  CREATED  SIZE

参数:

  • 来自于哪个仓库,比如 ubuntu仓库。镜像的标签信息,比如14.04。
  • 镜像的ID号(唯一)。
  • 创建时间。
  • 镜像大小。

镜像的ID信息十分重要,它唯一标识了镜像。

镜像搜索docker search

搜索远端仓库中共享的镜像,默认搜索Docker Hub官方仓库中的镜像。docker search

docker search  [镜像名字]

参数:

可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级 (表示该镜像的受欢迎程度)、是否官方创建、是否自动创建等。

删除镜像docker rmi

使用镜像的标签删除镜像 docker rmi

docker rmi 源名字
docker rmi image id

容器命令

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

当我们有了镜像,才可以创建容器, 创建一个centos容器来学习

创建容器

Docker的容器十分轻量级,用户可以随时创建或者删除容器。

语法格式

docker create -it 镜像名字

注意:

使用docker create命令新建的容器处于停止状态,可以使用docker start命令来启动它。

列出容器

docker ps [参数]

参数:

  • -a: 显示未启动容器
  • -q:返回容器id号

新建并启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态( stopped)的容器重新启动。所需要的命令主要为docker run,等价于先执行docker create命令,再执行docker start命令。

语法格式:

docker run 镜像名字 /bin/echo 'hello world'

Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载。
  • 利用镜像创建并启动一个容器。
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层。
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去。
  • 从地址池配置一个IP地址给容器。
  • 执行用户指定的应用程序。
  • 执行完毕后容器被终止。

下面命令则启动一个bash端,运行用户交互

docker run -t -i 镜像名字  /bin/bash

参数:

其中,-t选项让Docker 分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。

exit命令退出。

守护态运行

更多的时候,需要让Docker容器在后台以守护态(Daemonized)形式运行。用户可以通过添加-d参数来实现。

语法格式:

docker run -d 镜像名字 /bin/sh -c  "while true; do echo hello world ;sleep 1 ;done"

容器启动后会返回一个唯一的ID,也可以通过docker ps命令来查看容器信息:

docker ps

获取容器输出信息

docker logs 容器id

终止容器

语法格式:

docker stop 容器id

处于终止状态的容器,可以通过docker start命令来重新启动:

docker start 容器id

此外,docker restart命令会将一个运行态的容器终止,然后再重新启动

docker restart 容器id

进入容器

在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach命令、docker exec命令,以及nsenter工具等。

attach命令

语法格式:

docker attach 容器id

注意:

但是使用attach命令有时候并不方便。当多个窗口同时attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

exec命令

Docke自1.3版本起,提供了一个更加方便的工具exec,可以直接在容器内运行命令。例如进入到刚创建的容器中,并启动一个bash:

docker exec -it 容器id  /bin/bash

删除容器

语法格式:

docker rm 容器id

参数:

  • -f, --force=false强行终止并删除一个运行中的容器。
  • -l, --link=false删除容器的连接,但保留容器。
  • -V,–volumes=false删除容器挂载的数据卷。

退出

#如果docker容器在启动的时候没有加 -d 参数
exit # 会直接停止同期并退出
Ctrt + p + q # 容器不停止 并退出

其他命令

【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令,Docker容器,docker,容器,运维,java,spring boot

查看日志

语法格式:

docker logs 容器id

参数:

  • -f, --follow 跟踪实时日志
  • –since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
  • –tail string 从日志末尾显示多少行日志, 默认是all
  • -t, --timestamps 显示时间戳
  • –until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

查看容器里面的进程

语法格式:

docker top 容器id

从容器拷贝文件到主机上

语法格式:文章来源地址https://www.toymoban.com/news/detail-793553.html

docker cp 容器id:容器内路径   目录路径

到了这里,关于【什么是Docker ?】一篇博文让你明白什么是Docker,如何安装docker,docker核心命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 商业智能BI是什么都不明白,如何实现数字化?

    2021年下半年中国商业智能软件市场规模为4.8亿美元,2021年度市场规模达到7.8亿美元,同比增长34.9%,呈现飞速增长的趋势。数字化时代,商业智能BI对于企业的落地应用有着巨大价值,逐渐成为了现代企业信息化、数字化转型中的基础建设。 一、什么是商业智能BI? 有一点可

    2024年02月12日
    浏览(41)
  • 一篇讲明白 Hadoop 生态的三大部件

    黎明时怀着飞扬的心醒来,致谢爱的又一天,正午时沉醉于爱的狂喜中休憩,黄昏时带着感恩归家,然后在内心为所爱的祈祷中入眠,让赞美的歌谣停留在唇间。 随着大数据时代的来临,处理和分析海量数据成为了一项重要的挑战。为了应对这一挑战,Hadoop生态系统应运而生

    2024年04月15日
    浏览(27)
  • 第一篇【传奇开心果短博文系列】Python的库OpenCV技术点案例示例:cv2常用功能和方法

    cv2是Python中常用的第三方库,也称为OpenCV库,用于图像处理和计算机视觉任务。它提供了许多功能和方法,可以读取、处理和显示图像,以及执行各种图像处理操作。 以下是cv2库的一些常用功能和方法的介绍: 读取和显示图像: 保存图像: 转换图像颜色空间: 裁剪和调整

    2024年01月23日
    浏览(54)
  • python for...else用法,一个实例就能让你明白

    直接上代码,很简单,不用讲解吧,看不懂的话,就需要补充下基础知识了。 输出内容: 大概意思就是for循环运行结束后,会执行else的语句。就是else代码块始终都会被执行,所以一般都会结合break使用,在for循环中得到一个期望的结果。

    2024年01月20日
    浏览(44)
  • 简单几句话让你明白SaaS与PaaS的区别

    在云计算非常热门的今天,很多人以为租赁个云主机就是云计算的全部。其实不然,云计算分为三个层级。从低到高分别是IAAS(基础架构即服务)、PAAS(平台即服务)、SAAS(软件即服务)。每个层级之间存在一定的区别。下面简单聊三个区别。 1、服务层级不同 众所周知,

    2024年02月11日
    浏览(46)
  • 一篇搞明白微信小程序的基本授权功能

    一、介绍         由于部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个  scope  , 用户选择对  scope  来进行授权,当授权给一个  scope  之后,其对应的所有接口都可以直接使用。 此类接口调用时: 如果用户未接受或拒绝过此权限,会弹窗

    2024年01月17日
    浏览(52)
  • 津津乐道设计模式 - 委派模式详解(以家庭弟位让你彻底明白)

    🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计

    2024年02月10日
    浏览(41)
  • 一篇让你完全弄懂GPIO的8种配置模式

            配置GPIO口是我们软件开发中必须要掌握的,每个模式的作用效果也是需要清楚的。如果连gpio应该配置成什么模式都不懂,是无法进行后面的开发的。 I/O端口的电平信号进入输入数据寄存器。I/O的电平状态是不确定的(高阻态),完全由外部输入决定。 其中 TTL施密

    2024年02月13日
    浏览(38)
  • Linux--进程(一篇博客让你理解操作系统的底层)

    本篇博客讲开始进入进程模块,我们先从冯诺依曼的体系结构和操作系统讲起,由浅入深,先梳理一个Linux相关知识体系框架~   身为一个程序员,我们必须要了解冯诺依曼体系结构,比如我们常见的笔记本电脑,不常见的计算机,如云服务器等,绝大多数都遵循我们的冯诺

    2024年02月05日
    浏览(38)
  • 【C语言】一篇让你彻底吃透(结构体与结构体位段)

    本章重点 主要讲解结构体和位移动的使用和定义与声明,并且结构体和位段在内存中是如何存储的。 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 例如用结构体描述一个学生: struct 结构体 stu结构体标签 (标签可以自己随便起

    2023年04月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包