参考链接

官网:Home - Docker

文档:Docker Documentation | Docker Documentation

接下来让我们带着对【Docker】的三连问——What、Why、How,一起踏入【Docker】世界的大门。了解并学习Docker知识。

前言

随着数字化转型浪潮的扑面而来。云原生技术的发展突飞猛进,企业上云成为了千行百业的普遍共识。Docker、K8S、云原生,人工智能、网络安全、大数据,可持续化部署,敏捷开发等新兴技术领域得到快速蓬勃发展。从虚拟化时代的起步发展,到进入容器化时代的如火如荼的发展,越来越多的开发者喜欢并拥抱上了容器化技术。基于中国云原生用户调查报告显示,在用户生产环境中,容器技术的采纳率已经接近70%。容器时代的发展,得益于虚拟化技术的成熟和普及,使得应用上云成为企业转型的关键阶段和有效控制运维成本,提升产业效能的重要措施。

一、什么是Docker?

首先,让我们一起来看看各大搜索引擎和厂商对Docker定义是怎样的:

  • Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分离,以便您可以快速交付软件。 ——来自Docker官方

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 ——来自百度百科

  • Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。 ——来自维基百科

  • Docker 是一个开源平台,用于构建、部署和管理容器化应用程序。 ——来自IBM

  • Docker 是一种开源项目,用于将应用程序自动部署为可在云或本地运行的便携式独立容器。 Docker 也是一家公司,它与云、Linux 和 Windows 供应商(包括 Microsoft)协作,致力于推广和发展这项技术。 ——来自微软

从中,我们能够提取到几个关键字,开源 开放平台 容器 构建部署 快速交付 沙箱机制

根据上述的对Docker大同小异的定义和从提取到的关键字可知道,Docker是什么?

综上所述,可得知

Docker是一个开源的开放的容器化平台,用于构建、开发、部署及运行应用,能够将应用程序与基础架构分离,满足快速交付、可移植性部署、应用程序之间相互独立等用户需求,应用程序之间相互隔离,互不影响。Docker通过隔离机制,将服务器的性能五发挥到极致。

二、Docker风靡原因?

Docker的优势所在

  • 能够使用容器构建、共享和运行应用程序。

  • 将软件打包成标准化单元,用于开发、装运和部署。

  • Docker容器无处不在:Linux,Windows,数据中心,云,无服务器等。

Docker与虚拟机比较

容器和虚拟机具有类似的资源隔离和分配优势,但功能不同,因为容器虚拟化操作系统而不是硬件。容器更便携、更高效。

  • 虚拟机运行结构图

虚拟机 (VM) 是将一台服务器转换为多台服务器的物理硬件的抽象。虚拟机管理程序允许在一台计算机上运行多个 VM。每个 VM 都包含操作系统、应用程序、必要的二进制文件和库的完整副本,占用数十 GB。VM 的启动速度也可能很慢。

  • 容器运行结构图

容器是应用层的抽象,它将代码和依赖项打包在一起。多个容器可以在同一台计算机上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为隔离的进程运行。容器占用的空间比 VM 少(容器映像的大小通常为数十 MB),可以处理更多的应用程序,并且需要更少的 VM 和操作系统。

容器还会在共享 OS 上将应用程序彼此隔离开。 容器化应用程序在容器主机上运行,而容器主机在 OS(Linux 或 Windows)上运行。 因此,容器的占用比虚拟机 (VM) 映像小得多。

每个容器可以运行整个 Web 应用或服务,Docker 主机是容器主机,而 App1、App2、Svc 1 和 Svc 2 是容器化应用程序或服务。

容器化可以将软件及其所有依赖项打包在一个自包含的软件包中,这样就可以省略麻烦的配置,直接运行。

容器化的另一个优势在于可伸缩性。 通过为短期任务创建新容器,可以快速扩大。 从应用程序的角度来看,实例化映像(创建容器)类似于实例化 服务或 Web 应用等进程。 但出于可靠性考虑,在多个主机服务器上运行同一映像的多个实例时,通常要使每个容器(映像实例)在不同容错域中的不同主机服务器或 VM 中运行。

总而言之,容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。 最重要的优点是可在开发和运营之间提供隔离。

三、如何安装使用Docker?

本实验是基于CentOS 7.9进行演示操作的。

配置Docker镜像

# 安装需要的依赖包
yum install -y yum-utils# 设置阿里云docker镜像
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 生成本地缓存
yum makecache# 配置阿里云docker镜像加速
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://w2kavmmf.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
EOFsudo systemctl daemon-reload# 查看docker所有版本信息
yum list docker-ce --showduplicates | sort -r
[root@m1 ~]# yum list docker-ce --showduplicates | sort -r
Last metadata expiration check: 0:01:17 ago on Fri 01 Apr 2022 10:57:15 PM CST.
docker-ce.x86_64                3:20.10.9-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.8-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.7-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.6-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.5-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.4-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.3-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.2-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.14-3.el8                docker-ce-stable
docker-ce.x86_64                3:20.10.1-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.13-3.el8                docker-ce-stable
docker-ce.x86_64                3:20.10.12-3.el8                docker-ce-stable
docker-ce.x86_64                3:20.10.11-3.el8                docker-ce-stable
docker-ce.x86_64                3:20.10.10-3.el8                docker-ce-stable
docker-ce.x86_64                3:20.10.0-3.el8                 docker-ce-stable
docker-ce.x86_64                3:19.03.15-3.el8                docker-ce-stable
docker-ce.x86_64                3:19.03.14-3.el8                docker-ce-stable
docker-ce.x86_64                3:19.03.13-3.el8                docker-ce-stable
Available Packages

安装Docker

# 安装docker  docker-ce   ee企业版
yum install -y docker-ce docker-ce-cli containerd.io# 启动Docker
systemctl start docker && systemctl enable docker && systemctl status docker# 查看docker版本信息
# docker version
Client: Docker Engine - CommunityVersion:           20.10.14API version:       1.41Go version:        go1.16.15Git commit:        a224086Built:             Thu Mar 24 01:47:44 2022OS/Arch:           linux/amd64Context:           defaultExperimental:      trueServer: Docker Engine - CommunityEngine:Version:          20.10.14API version:      1.41 (minimum version 1.12)Go version:       go1.16.15Git commit:       87a90dcBuilt:            Thu Mar 24 01:46:10 2022OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.5.11GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8runc:Version:          1.0.3GitCommit:        v1.0.3-0-gf46b6badocker-init:Version:          0.19.0GitCommit:        de40ad0

使用Docker命令

查看帮助命令。

[root@docker ~]# docker --helpUsage:  docker [OPTIONS] COMMANDA self-sufficient runtime for containersOptions:--config string      Location of client config files (default "/root/.docker")-c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")-D, --debug              Enable debug mode-H, --host list          Daemon socket(s) to connect to-l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")--tls                Use TLS; implied by --tlsverify--tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")--tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")--tlskey string      Path to TLS key file (default "/root/.docker/key.pem")--tlsverify          Use TLS and verify the remote-v, --version            Print version information and quitManagement Commands:app*        Docker App (Docker Inc., v0.9.1-beta3)builder     Manage buildsbuildx*     Docker Buildx (Docker Inc., v0.8.0-docker)config      Manage Docker configscontainer   Manage containerscontext     Manage contextsimage       Manage imagesmanifest    Manage Docker image manifests and manifest listsnetwork     Manage networksnode        Manage Swarm nodesplugin      Manage pluginsscan*       Docker Scan (Docker Inc., v0.17.0)secret      Manage Docker secretsservice     Manage servicesstack       Manage Docker stacksswarm       Manage Swarmsystem      Manage Dockertrust       Manage trust on Docker imagesvolume      Manage volumesCommands:attach      Attach local standard input, output, and error streams to a running containerbuild       Build an image from a Dockerfilecommit      Create a new image from a container's changescp          Copy files/folders between a container and the local filesystemcreate      Create a new containerdiff        Inspect changes to files or directories on a container's filesystemevents      Get real time events from the serverexec        Run a command in a running containerexport      Export a container's filesystem as a tar archivehistory     Show the history of an imageimages      List imagesimport      Import the contents from a tarball to create a filesystem imageinfo        Display system-wide informationinspect     Return low-level information on Docker objectskill        Kill one or more running containersload        Load an image from a tar archive or STDINlogin       Log in to a Docker registrylogout      Log out from a Docker registrylogs        Fetch the logs of a containerpause       Pause all processes within one or more containersport        List port mappings or a specific mapping for the containerps          List containerspull        Pull an image or a repository from a registrypush        Push an image or a repository to a registryrename      Rename a containerrestart     Restart one or more containersrm          Remove one or more containersrmi         Remove one or more imagesrun         Run a command in a new containersave        Save one or more images to a tar archive (streamed to STDOUT by default)search      Search the Docker Hub for imagesstart       Start one or more stopped containersstats       Display a live stream of container(s) resource usage statisticsstop        Stop one or more running containerstag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGEtop         Display the running processes of a containerunpause     Unpause all processes within one or more containersupdate      Update configuration of one or more containersversion     Show the Docker version informationwait        Block until one or more containers stop, then print their exit codesRun 'docker COMMAND --help' for more information on a command.To get more help with docker, check out our guides at https://docs.docker.com/go/guides/

查看docker具体命令的使用方法。

# 查看docker镜像命令的使用
[root@docker ~]# docker image --helpUsage:  docker image COMMANDManage imagesCommands:build       Build an image from a Dockerfilehistory     Show the history of an imageimport      Import the contents from a tarball to create a filesystem imageinspect     Display detailed information on one or more imagesload        Load an image from a tar archive or STDINls          List imagesprune       Remove unused imagespull        Pull an image or a repository from a registrypush        Push an image or a repository to a registryrm          Remove one or more imagessave        Save one or more images to a tar archive (streamed to STDOUT by default)tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGERun 'docker image COMMAND --help' for more information on a command.# 查看docker网络命令的使用
[root@docker ~]# docker network --helpUsage:  docker network COMMANDManage networksCommands:connect     Connect a container to a networkcreate      Create a networkdisconnect  Disconnect a container from a networkinspect     Display detailed information on one or more networksls          List networksprune       Remove all unused networksrm          Remove one or more networksRun 'docker network COMMAND --help' for more information on a command.

【Docker三连问】什么是Docker? | Docker风靡原因? | 如何安装使用Docker?相关推荐

  1. docker知识5:在WSL2的ubuntu20.04环境安装使用docker

    提要: 本文是关于docker的专题讨论,作者用一组文档尽可能保证完整地阐述Docker到底是啥?如何使用?docker的使用范围等.相关的其它文章是: Docker知识1:Docker-hub简介 ...

  2. docker mysql镜像连接不上_还在手动安装应用?试一下Docker

    Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化.容器是完 ...

  3. Unraid安装KMS Docker激活Windows+Office

    如果你家里有多台电脑,还有各种虚拟机,那你一定会经常需要激活Windows和Office.现在WIN10或者WIN11的KMS软件都会被提示病毒,让人很不放心.以前用过Koolshare里的KMS激活 ...

  4. Docker系列教程01-Centos7安装新版Docker教程(10步)

    最近一直忙于开发,没有时间好好总结一下docker的知识.其实现在docker的教程已经很多很多了,但是很多系统的教程都是基于Ubuntu系统,因为官方推荐使用Ubuntu系统啊,原因在于Ubuntu ...

  5. docker日志显示时间时区错误,时区UST问题/群晖docker日志时间不正确 寻找解答过程

    问题: 群晖的docker日志时间显示差了8小时,应该是UTC时间问题 进宿主机敲docker logs -t 也是显示UTC时区 寻找解决办法: 网上找了无数个教程, 按照如下方法修改时区 ln - ...

  6. 华为平板安装python_教你用树莓派安装集成docker版openwrt、homeassistant等及一些排坑指南...

    教你用树莓派安装集成docker版openwrt.homeassistant等及一些排坑指南 2020-04-30 18:45:28 30点赞 290收藏 23评论 小编注:此篇文章来自即可瓜分10万 ...

  7. Kubernetes学习笔记三:Docker安装,Docker使用,编写Dockerfile,制作容器镜像,上传docker镜像

    文章目录 Docker的安装 Docker的使用:docker run命令 查看本地存在的镜像:docker images命令 编写Dockerfile,制作容器镜像 docker build制作镜像 ...

  8. Centos6.5 安装配置docker

    宿主机:win7 64位 vagrant封装环境运行在VirtualBox 虚拟机上CentOS6.5,这是做测试时的一个环境,顺便错用安装docker玩玩. centos6.5可以直接安装docke ...

  9. docker网络问题解决办法“大全”:关于宿主机访问不了docker容器中web服务,或者容器内访问不了外网的问题的解决办法

    docker网络问题解决办法"大全":关于宿主机访问不了docker容器中web服务,或者容器内访问不了外网的问题的解决办法 参考文章: (1)docker网络问题解决办法&quo ...

最新文章

  1. java web开发周志_javaweb学习笔记及周报告
  2. OpenCV(十)ROI感兴趣区域
  3. B - Dungeon Master POJ - 2251
  4. apache本地配置多域名(wampserver本地配置多域名)
  5. tcp 发送数据长度比预设缓存大_一文秒懂 TCP/IP实际五层结构(下篇)
  6. 和 Python 2.x 说再见!
  7. 2019职称计算机考试哪些地区取消,2019年职称计算机考试注意事项
  8. DWG/DGN格式导入Arcgis;转化为shp格式;更改地理坐标;导入Google Earth
  9. java 循环赛问题_分治法实现循环赛日程表问题
  10. MATLAB雾霾天气下运动目标检测
  11. ImportError:cannot import name ‘save_state_warning‘和解决torch1.7.1报分布式错误No rendezvous handler for env:
  12. 未知USB设备(设备描述符请求失败)终于解决。网上查到的所有方法我都试过了,全部失败。我的成功方法就是调整“电源选项”
  13. Dubbo系列(二)源码分析之SPI机制
  14. XSS-labs靶场通关秘籍(level 17-20)
  15. 动态链接--打桩机制
  16. IntelliJ IDEA中的神仙插件 写代码必备
  17. 我们每个人都是星辰 —— 《时间简史》读后感 1
  18. 全国程序员薪酬大曝光!看完我酸了,33% 程序员月薪达到这个标准
  19. Python学习前传 —— Python网络爬虫
  20. cat、tail、head命令

热门文章

  1. 《机器学习——数学公式推导合集》1. 线性模型之最小二乘法(least square method)求解线性模型
  2. 黑苹果修复重启_修复了随机重启问题
  3. 【181010】VC++ 大富翁4_大富翁游戏源码
  4. PaddlePaddle笔记6-换脸(懂得都懂)
  5. 加密保护软件 WinLicense常见问题整理大全(八):自定义对话框
  6. ajax跨域请求时 会出现什么问题,在用AJAX跨域请求时遇到的问题
  7. JKS、BKS、PFX证书格式之间转换
  8. 铁路辅警的认识            灵宝西站派出所第一警务区 高飞
  9. BDB 入门篇 第1章 Berkeley DB Java Edition简介
  10. 技术领先、“忠”于业务,用友走出多维数据库的价值之路