写点什么

【docker 总结】docker 简介和安装

作者:Brave
  • 2021 年 12 月 13 日
  • 本文字数:2507 字

    阅读完需:约 8 分钟

一,前言


记得在 2018 年左右,互联网技术发生了比较大的变化:微服务、云原生、DevOps、CI/CD、企业中台、容器化、工程化、Severless、LowCode 等名词铺天盖地;随之而来的还有一系列新的语言和技术栈;

这些“新技术”的应用和普及,改变了互联网时代下的开发模式,极大程度提升了交付速度和开发体验;

。。。此处省略 100 字。。。


之后,会陆续介绍 DevOps 相关内容,包括:docker、k8s、CI/CD 等;

本篇,docker 简介和环境安装;


二,docker 简介


1,虚拟机


软件的运行需要环境,如 jdk;

无法保证环境的一致性,如:版本问题


为什么要保证环境的一致性?

最早使用虚拟机:在电脑中,虚拟了一个完全隔离的操作系统

模拟的是一整套操作系统:硬盘、内存、网卡等整套硬件都有


虚拟机的缺点:

  • 资源占用多

  • 冗余步骤多

  • 启动速度慢


2,Linux 容器


Linux 容器:Linux Containers,缩写为 LXC

Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离

优点:

  • 启动快

  • 资源占用少

  • 体积小 几兆


Docker


Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。

它是目前最流行的 Linux 容器解决方案。


Docker 将应用程序与该程序的依赖,打包在一个文件里面。

运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样



docker 和 KVM 虚拟机对比


  • 启动速度

  • Docker 秒级启动

  • KVM 分钟级启动

  • 轻量级 容器镜像通常以 M 为单位,虚拟机以 G 为单位,容器资源占用小,要比虚拟要部署更快速

  • 容器共享宿主机内核,系统级虚拟化,占用资源少,容器性能基本接近物理机

  • 虚拟机需要虚拟化一些设备,具有完整的 OS,虚拟机开销大,因而降低性能,没有容器性能好

  • 安全性

  • 由于共享宿主机内核,只是进程隔离,因此隔离性和稳定性不如虚拟机,容器具有一定权限访问宿主机内核,存在一下安全隐患

  • 使用要求

  • KVM 基于硬件的完全虚拟化,需要硬件 CPU 虚拟化技术支持

  • 容器共享宿主机内核,可运行在主机的 Linux 的发行版,不用考虑 CPU 是否支持虚拟化技术



docker 的应用场景


  • 节省项目环境部署时间

  • 单项目打包

  • 整套项目打包

  • 新开源技术

不同技术做的开源,需要安装配置环境,docker 开箱即用

  • 环境一致性

  • 持续集成

  • 微服务

  • 弹性伸缩

ECS,弹性计算云服务;根据使用量动态扩缩容,按需付费



Docker 体系结构


  • containerd:是一个守护进程,使用 runc 管理容器,向 Docker Engine 提供接口

  • shim:只负责管理一个容器

  • runC:是一个轻量级工具,只用来运行容器


通过 docker 客户端,为 docker Engine 引擎服务发送命令,

docker 引擎服务,管理镜像仓库

通过 docker Engine 拉取镜像,docker Engine 可以通过镜像生成/启动容器 containerd

containerd 容器内靠 shim 和 runC


三,docker 安装

1,Mac 安装


安装教程:

https://www.runoob.com/docker/macos-docker-install.html


安装前,查看版本信息

bogon:~ brave$ docker --version-bash: docker: command not found
复制代码


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

https://desktop.docker.com/mac/main/amd64/Docker.dmg






启动后查看版本:

bogon:~ brave$ docker --versionDocker version 20.10.11, build dea9396
bogon:~ brave$ docker-compose --versiondocker-compose version 1.29.2, build 5becea4c
复制代码


镜像加速

使用网易镜像地址:http://hub-mirror.c.163.com

任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors

在列表中填写加速器地址,修改完成后,点击 Apply & Restart,重启 Docker 应用镜像地址配置 j



{  "builder": {    "gc": {      "defaultKeepStorage": "20GB",      "enabled": true    }  },  "registry-mirrors": ["http://hub-mirror.c.163.com"],  "features": {    "buildkit": true  },  "experimental": false}
复制代码

重启 docker 后,查看

bogon:~ brave$ docker infoClient: Context:    default Debug Mode: false Plugins:  buildx: Docker Buildx (Docker Inc., v0.7.1)  compose: Docker Compose (Docker Inc., v2.2.1)  scan: Docker Scan (Docker Inc., 0.9.0)
Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 20.10.11 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 2 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d runc version: v1.0.2-0-g52b36a2 init version: de40ad0 Security Options: seccomp Profile: default cgroupns Kernel Version: 5.10.76-linuxkit Operating System: Docker Desktop OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 1.939GiB Name: docker-desktop ID: STT4:PUNN:QLL5:URJY:MEYT:24UA:ZLR3:BOGJ:BNCQ:74SC:OR73:EMGH Docker Root Dir: /var/lib/docker Debug Mode: false HTTP Proxy: http.docker.internal:3128 HTTPS Proxy: http.docker.internal:3128 Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: http://hub-mirror.c.163.com/ Live Restore Enabled: false
复制代码



client:给服务端下达命令

服务端将命令发送给 Docker daemon(daemon:后台,后端;Docker daemon 后台大管家;)


docker pull:从客户端发送指令到 Docker daemon,去 Registry 远程仓库,拉取对应的镜像到 Image 本地镜像仓库来


docker run:从客户端发送指令到 Docker daemon,去 Image 本地镜像找到对应的镜像,生成容器 Containers;


docker build:构建、编译,基于一个已有的镜像,创建一个新的镜像


docker run 通过镜像生成容器;

用户头像

Brave

关注

还未添加个人签名 2018.12.13 加入

还未添加个人简介

评论

发布
暂无评论
【docker 总结】docker 简介和安装