Docker核心概念

Docker概述

Docker是一个用于开发,发布和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

Docker与虚拟机比较

特性 容器 虚拟机
启动速度 秒级 分钟级
性能 接近原生 较弱
内存代价 很小 较多
硬盘使用 一般为MB 一般为GB
运行密度 单机支持上千个容器 一般几十个
隔离性 安全隔离 完全隔离
迁移性 优秀 一般

Docker 引擎

Docker Engine是具有以下主要组件的客户端-服务器应用程序:

  • 服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
  • REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。
  • 命令行界面(CLI)客户端(docker命令)。

Docker 架构

Docker引擎

Docker使用客户端-服务器架构
Docker客户端是用户与Docker交互的主要方式,与Docker守护进程(Docker引擎)进行通信
该守护进程完成了构建,运行和分发Docker容器的繁重工作
Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程
序。
Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。
Docker守护进程侦听Docker API请求并管理Docker对象,例如镜像,容器,网络和卷等
守护程序还可以与其他守护程序通信以管理Docker服务

Docker镜像

Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。
镜像是基于联合(Union)文件 系统的一种层式的结构,由一系列指令一步一步构建出来。
比如:
添加一个文件;
执行一个命令;
打开一个端口。
镜像是创建Docker容器的基础。通过版本管理和增量的文件系统, Docker提供了一套十分简单的机制
来创建和更新现有的镜像,用户可以从网上下载一个已经做好的应用镜像,并直接使用
我们可以利用Dockerfile构建自己的镜像。

Docker容器

Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是镜像的一个运行实例。
可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。
可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间
等)以及运行在其中的应用程序打包而成的盒子。
容器是基于镜像启动起来的,容 器中可以运行一个或多个进程。
镜像是Docker生命周期 中的构建或打包阶段,而容器则是启动或执行阶段。
镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

Docker仓库

Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。
仓库注册服务器(Registry)是存放仓库的地方,其上往往存放着多个仓库
每个仓库集中存放某一类镜像,往往包 括多个镜像文件,通过不同的标签(tag)来区分
根据所存储的镜像公开分享与否,Docker仓库可以分为公开仓库 (Public)和私有仓库(Private)两种形式。
目前,最大的公开仓库是 官方提供的Docker Hub,其中存放了数量庞大的镜像供用户下载。
国内不少云服务提供商(如时速云、阿里云等)也提供了仓库的本地源,可以提供稳定的国内访问。
Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。

Docker快速实战

Docker环境安装

安装官方yum源

yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker- ce.repo

安装Docker引擎

yum install -y docker-ce docker-ce-cli containerd.io

启动docker

#开机启动
systemctl enable docker
#启动
systemctl start docker
#查看Docker状态
docker info

Docker基本操作

镜像基本操作

拉取镜像

#如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。
docker pull NAME[:TAG]
#例如拉取mysql5.7.30
docker pull mysql:5.7.30

查看镜像信息

docker images
$ sudo docker images
REPOSITORY       TAG      IMAGE ID      CREATED      VIRTUAL SIZE
ubuntu           12.04    74fe38d11401  4 weeks ago  209.6 MB
ubuntu           precise  74fe38d11401  4 weeks ago  209.6 MB
ubuntu           14.04    99ec81b80c55  4 weeks ago  266 MB
ubuntu           latest   99ec81b80c55  4 weeks ago  266 MB
ubuntu           trusty   99ec81b80c55  4 weeks ago  266 MB
...

在列出信息中,可以看到几个字段信息

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

删除镜像

#根据名称删除
docker rmi NAME[:TAG]
#根据ID删除
docker rmi IMAGE ID

上传镜像(默认上传到Docker Hub官方仓库,一般使用中都会上传到私有仓库)

docker push NAME[:TAG]

容器基本操作

创建容器

#参数
#-i 交互模式
#-t 伪终端
#-d 后台运行
#-rm 容器退出后是否自动删除
docker create NAME[:TAG]

启动容器

docker start ID

查看容器状态

#查看运行的容器
docker ps
#查看所有容器
docker ps -a

新建并启动容器(相当于 docker create+docker start,一般使用这个)

docker run -it --rm --network host NAME[:TAG]

终止容器

docker stop ce554267d7a4 -t 5
docker kill ce554267d7a4

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

docker start ID

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

docker restart ID

进入容器

docker exec -it ID /bin/bash

查看容器

docker stats ID

删除容器

docker rm ID

docker rm命令只能删除处于终止或退出状态的容器,并不能删除还处于运行状态的容器,要直接删除一个运行中的容器,可以添加-f参数。Docker会先 发送SIGKILL信号给容器,终止其中的应用,之后强行删除

Docker核心概念与实战相关推荐

  1. Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。

    Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  2. 一文了解Docker核心概念和安装配置

    核心概念 Docker 有三大核心概念,分别是镜像,容器,仓库. Docker 镜像 Docker 镜像类似于虚拟机的镜像,可以把它理解为一个只读的模板,例如一个镜像可以包含一个基本的操作系统环境,里 ...

  3. docker 核心概念整理

    一.镜像(Image) vs Dockerfile 1.docker在镜像(image)中运行你的代码,而不是Dockerfile,镜像文件就是从Dockerfile编译而得到的不透明资产 2.doc ...

  4. 【笔记】docker核心概念和使用 docker命令

    介绍 在Linux服务器部署一个单体JavaWeb应用,一般会在服务器安装Tomcat.MySql.Redis.JDK等相关环境或软件,安装完软件之后需要进行相关配置,最后把项目打成War包,放在服务 ...

  5. docker 查看镜像_Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指!...

    来自小洋人最HAPPY投稿 一.Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一 ...

  6. Docker (3)核心概念

    1. C/S架构 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器. 2 核心模块 概念 说明 Docker 镜像(Images) Docker 镜像 ...

  7. 《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务

    文章目录 二.高级篇(大厂进阶) 5.Docker-compose容器编排 5.1是什么 5.2能干嘛 5.3去哪下 5.4 Compose核心概念 5.5 Compose使用的三个步骤 5.6 Co ...

  8. 《Docker技术入门与实战》——2.4 本章小结

    本节书摘来自华章计算机<Docker技术入门与实战>一书中的第2章,第2.4节,作者:杨保华,戴王剑,曹亚仑著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  9. Kubernetes 核心概念介绍

    云计算.容器化以及容器编排是 DevOps 中最重要的发展趋势,无论你是数据科学家.软件开发者还是产品经理,了解 Docker 和 Kubernetes 的基本概念总是有好处的,二者可以帮助你与他人协 ...

  10. Docker技术入门与实战 第2版

    网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击"普通下载" ...

最新文章

  1. 读取串口数据_自定义串口通信的相关问题整理
  2. Python 技术篇-百度语音API鉴权认证获取Access Token实例演示
  3. Object类、常用API
  4. 鸿蒙开发者社区入口,鸿蒙OS 社区
  5. python是值传递还是引用传递_Python里参数是值传递还是引用传递?
  6. 安全整数和 Number.isSafeInteger()
  7. python 输出文字_Python中输出ASCII大文字、艺术字、字符字小技巧
  8. pycharm error:no module named caffe
  9. 工作中如何设计秒杀场景
  10. 八种常用排序算法参考
  11. 天津农学院计算机科学与技术在那个校区,天津农学院有几个校区及校区地址
  12. 网络安全 实验五 :破解密码
  13. mappedBy作用
  14. 灰色模型GM与时间无关
  15. mysql插入路径_Conventional-pathinsert(传统路径插入)
  16. NLP专题直播 | 详谈词向量技术:从Word2Vec, BERT到XLNet
  17. Java——为什么要有接口?
  18. P4711 「化学」相对分子质量
  19. 20211212做实验时的感想
  20. 求double类型的立方根_二分法逼近

热门文章

  1. 整理:不用ACE你不知道ACE有多烂,给饱受ACE折磨的弟兄们散分了。
  2. XSS过滤绕过总结_xss绕过字符过滤
  3. 不经历风雨怎么见彩虹
  4. PTA - 数据库合集4
  5. 5G网络优化工程师是做什么的?4大工作职责!
  6. BUFF67 DM蓝牙5.2双模热插拔PCB
  7. 成考计算机专业难不难,成人高考计算机专业难吗?
  8. adb工具的安装与常用命令
  9. 笔记本模拟android,适用于PC的顶级7个免费Android模拟器在计算机PC笔记本电脑上运行Android应用...
  10. 订单管理_04删除订单信息流程