Docker——Docker基础+Docker安装

Posted Pakho`

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker——Docker基础+Docker安装相关的知识,希望对你有一定的参考价值。

Docker概述

  • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低
  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了
  • 一个完整的Docker有以下几个部分组成:
    1. DockerClient客户端
    2. Docker Daemon守护进程
    3. Docker Image镜像
    4. DockerContainer容器
  • Docker基于容器技术的轻量级虚拟化解决方案
  • “Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人

Docker的基本组成

在这里插入图片描述

  • 镜像(Image)
    • docker镜像就好比是一个模板,可以通过这个模板来创建容器服务
  • 容器(Container)
    • Docker利用容器技术,独立运行一个或多个应用,通过镜像来创建的
    • 启动,停止,删除,基本命令
    • 目前可以把容器理解为简易的Linux系统
  • 仓库(repository)
    • 存放镜像的地方
    • 仓库分为公有仓库和私有仓库

使用Docker的优势

  • 更高效的利用系统资源
    • docker对系统资源的利用率更高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机往往可以运行更多数量的应用
  • 更快速的启动时间
    • 传统的虚拟机技术启动应用服务往往需要数分钟,而docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级甚至毫秒级的启动时间,大大的节约了开发测试,部署的时间
  • 一致的运行环境
    • 对开发和运维人员来说,最希望就是一次创建和部署,可以在任意的地方运行
    • (定制应用镜像来实现集成、持续支付、部署。开发人员可以通过dockerfile来进行镜像构建,并结合持续集成系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署)
    • 而且使用dockerfile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像
  • 更轻松的迁移
    • 由于docker确保了执行环境的一致性,使得应用的迁移更加的容易
    • docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云、甚至是笔记本、其运行结果是一致的
    • 因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
  • 更轻松的维护和拓展
    • docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得十分简单
    • 既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本
  • Docker优势摘自Docker的6大优势

安装Docker

#环境查看
[root@docker /]# uname -r              #系统内核3.10以上
3.10.0-862.el7.x86_64
[root@docker /]# cat /etc/os-release

官方安装文档

  • 卸载旧的版本
[root@docker /]# yum remove docker \\
                   docker-client \\
                   docker-client-latest \\
                   docker-common \\
                   docker-latest \\
                   docker-latest-logrotate \\
                   docker-logrotate \\
                   docker-engine
  • 通过仓库安装
#安装基本的依赖包
[root@docker /]# yum install -y yum-utils
  • 设置镜像仓库
    • 默认是国外的,需要设置国内阿里云镜像
[root@docker /]# yum-config-manager \\
     --add-repo \\
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装docker前更新yum软件包索引
[root@docker /]# yum makecache fast
  • 安装docker
    • 基于ce:社区版安装,同时 官方推荐社区版
[root@docker /]# yum -y install docker-ce docker-ce-cli containerd.io
  • 启动docker
[root@docker /]# systemctl start docker

#查看版本
[root@docker /]# docker version
Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:58:10 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.7
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       b0f5bc3
  Built:            Wed Jun  2 11:56:35 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.6
  GitCommit:        d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc:
  Version:          1.0.0-rc95
  GitCommit:        b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

#测试hello world
[root@docker /]# docker run hello-world

#寻找本地镜像 没有找到helloword的镜像
Unable to find image 'hello-world:latest' locally

#从library拉取镜像
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete 
Digest: sha256:9f6ad537c5132bcce57f7a0a20e317228d382c3cd61edae14650eec68b2b345c
Status: Downloaded newer image for hello-world:latest从library拉取镜像

#拉取完成后显示Hello from Docker
Hello from Docker!

#查看当前系统内的镜像
[root@docker /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   3 months ago   13.3kB
  • 了解,卸载docker
    • docker默认工作路径 /var/lib/docker
yum remove docker-ce docker-ce-cli containerd.io  #卸载依赖
rm -rf /var/lib/docker                            #删除资源
rm -rf /var/lib/containerd                        #删除容器

阿里云镜像加速

容器镜像服务
在这里插入图片描述

[root@docker /]# mkdir -p /etc/docker
[root@docker /]# tee /etc/docker/daemon.json <<-'EOF'
 {
   "registry-mirrors": ["https://k68iw3ol.mirror.aliyuncs.com"]
 }
 EOF
{
  "registry-mirrors": ["https://k68iw3ol.mirror.aliyuncs.com"]
}
[root@docker /]# systemctl daemon-reload
[root@docker /]# systemctl restart docker

回顾hello world流程

在这里插入图片描述

  • docker run hello-world 回车启动
  • docker会在本地寻找是否存在镜像
    • 如果存在则立即运行
    • 如果不存在,则前往仓库下载
      • 如果仓库不存在镜像返回错误
      • 如果存在,则理解下载,然后立即运行

分析Docker底层原理

Docker是怎么工作的?

  • Docker是一个Client-Server的结构的系统,Docker的守护进程运行在主机上(也可称为宿主机) 通过Socket从客户端访问
  • Docker Server 接受到来自Docker-Client的命令,就会执行这个命令!
    在这里插入图片描述

Docker为什么比虚拟机快?

  • docker有着比虚拟机更少的抽象层
  • docker利用的是宿主机的内核,vm需要是Guest OS。
    -
  • 所以说,新建一个容器的时候,docker不需要想虚拟机一样重新加载一个操作系统内核,避免引导性的操作,
  • 虚拟机是加载Guest OS,分钟级别的,
  • 而docker是利用当前宿主机的操作系统,省略了这个复杂的过程,秒级的!

以上是关于Docker——Docker基础+Docker安装的主要内容,如果未能解决你的问题,请参考以下文章

docker基础平台安装1

Docker安装优化与Docker基础命令

docker基础文档(链接,下载,安装)

Docker基础学习笔记一:Docker概述和安装

Centos安装docker及docker基础命令

Docker-基础使用:安装,启用,基本命令,数据卷