Docker系列入门教程一,Docker 安装和基本认识

前言:

Docker教程一,Docker 安装和基本认识
Docker教程二,Docker 基本命令学习
Docker教程三,Docker 安装Mysql集群
Docker教程四,Docker 安装Redis集群
Docker教程五,Dockerfile 学习
Docker教程六,Docker网络和Docker-compose 容器编排
Docker教程七,Docker 监控工具
Docker教程八,IDEA + Docker + SpringBoot + Nginx + MySQL集群 + Redis集群 + MongoDb 集群,微服务发布,负载均衡实现。
Docker教程九,Docker私仓搭建


1. Docker 是什么?

Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

2. Docker 解决了哪些问题

  1. 应用更快速的交付和部署
    • Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期,实现一次开发,到处运行。
  2. 解决环境配置难题
    • 开发过程中一个常见的问题是环境不统一问题。由于个人开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现,到了测试环境、生产环境出现各种奇奇怪怪的环境问题,而浪费大量时间去解决环境问题。Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。docker可以让程序员更专注开发。
  3. 更高效的利用系统资源
    • Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。Docker 非常适合于高密度环境以及中小型部署,可以用更少的资源做更多的事情。

3. Docker 和虚拟机

Docker系列入门教程一,Docker 安装和基本认识_第1张图片

Docker 和虚拟机对比

容器 虚拟机
启动时间 秒级 分钟级
硬盘使用 一般为Mb 一般为Gb
速度 接近原生 比较慢
系统支持量 单机支持上千个容器 一般几十个

4. Docker 组成和基本概念

  1. Docker 三个基本概念

    • Docker 镜像(image):Docker 镜像是用于创建 Docker 容器的模板。类似面向对象里面对象的概念。
    • Docker 容器(Container):容器是独立运行的一个或一组应用,是镜像运行时的实体。类似面向对象里面对象的概念。
    • Docker 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像,类似Maven仓库,任何人都可以上传自己打包的镜像发布到仓库里面。
  2. Docker 其他概念

Docker系列入门教程一,Docker 安装和基本认识_第2张图片

概念 说明
Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker SDK 与 Docker 的守护进程通信。
Docker 主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker Registry Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 面向对象
容器 对象
镜像

5. Docker安装

本人安装Docker环境,Windows11下WSL:Ubuntu18.04 子系统

使用 WSL2 安装 Docker 可参考这篇文章。Windows WSL2 Ubuntu18.04 安装 Docker

相对于大部分程序员来说,开发环境是在Windows环境下,而实际生产环境是在Linux上的,我希望能在Windows上搭建一套完美的开发环境,而我之后 MySQL 集群、Redis 集群、MongoDB的安装都会在 WSL2 上。

其他环境的安装可参考官网的链接教程,步骤大同小异。

Ubuntu 安装参考:https://docs.docker.com/engine/install/ubuntu/

Centos 安装参考:https://docs.docker.com/engine/install/centos/

Debian 安装参考:https://docs.docker.com/engine/install/debian/

Windows 安装参考:https://docs.docker.com/desktop/windows/install/

Mac 安装参考:https://docs.docker.com/desktop/mac/install/

6. Docker加速

安装完 Docker 之后,建议配置阿里云镜像加速,Docker 默认会去国外的仓库地址下载镜像,速度会很慢。

  1. 登录阿里云,找到容器镜像服务

Docker系列入门教程一,Docker 安装和基本认识_第3张图片

  1. 选择镜像加速地址,可根据你安装 Docker 宿主机的版本选择对应的操作文档。
    Docker系列入门教程一,Docker 安装和基本认识_第4张图片

  2. 新建配置文件

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://c2nmylfp.mirror.aliyuncs.com"]
}
EOF
  1. 然后刷新配置、重启docker即可(WSL命令):
# WSL 命令
sudo service docker start
sudo service docker stop

# centos6 的命令
sudo chkconfig daemon-reload
sudo service docker restart

# centos7 的命令
sudo systemctl daemon-reload
sudo systemctl restart docker

7. Docker 底层原理

Docker是一个 C/S(Client-Server) 结构的系统,后端是一个松耦合架构,众多模块各司其职。

Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从容器接收命令并管理运行在主机上的容器。

Docker系列入门教程一,Docker 安装和基本认识_第5张图片

Docker 运行的基本流程为:

  1. 用户是使用Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。
  2. Docker Daemon 作为 Docker 架构的主体部分,首先提供 Docker Server 的功能使其可以接收 Docker Client 的请求。
  3. Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式存在。
  4. Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graph Driver 将下载镜像以 Graph 的形式存储。
  5. 当需要为 Docker 创建网络环境时,通过网络管理驱动 Network driver 创建并配置 Docker 容器网络环境
  6. 当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Exec driver 来完成。
  7. Libcontainer 是一项独立的容器管理包,Network driver 以及 Exec driver 都是通过 Libcontainer 来实现具体对容器进行的操作。

Docker系列入门教程一,Docker 安装和基本认识_第6张图片

8. 万年不变的 Hello World

docker run hello-world

分析:

Docker run hello-world流程分析图如下。

Docker系列入门教程一,Docker 安装和基本认识_第7张图片

你可能感兴趣的:(Docker,docker,容器,java)