Docker

70 阅读2分钟

Docker解决了什么问题?

工作中遇到过需要创建多个虚拟机部署应用的情况,但是通过VMware安装太慢了,而且资源占用非常庞大,软件应用还需要手动安装,无法实现自动化部署等等。Docker的诞生就是为了解决这个问题。打包应用以及依赖环境到一个可移植的容器中,然后发布到任何平台的主机上(Linux、Windows、MacOS)都能正常运行

对比虚拟机Docker容器
启动速度龟速秒级
镜像大小1G以上M级别
集成方便度手动安装dockerfile自动化
内存访问效率慢,先访问虚拟地址基本等同于宿主机
Cpu损耗率50%接近0损耗

image.png

容器技术发展的几个方向

image.png

Docker 专业术语概念

  • 容器

    容器是镜像运行时的实体,容器可以被创建、启动、停止、删除、暂停等。在镜像上创建了一个可读写的层。

  • 镜像

    镜像就是一个压缩包,它是由一个完整的操作系统的所有文件和目录组成,也就是说这个压缩包里的内容和你本地开发和测试环境用到的操作系统是完全一样的。镜像是分层的,并且只读。

  • 引擎

    用来打包容器镜像、以及运行容器。

  • 仓库 存放镜像的地方

image.png

Docker 安装

  • yum方式安装
    1.安装依赖:yum -y install yum-utils device-mapper-persistent-data lvm2 
    2.添加仓库:yum-config-manager --add-repo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    3.安装docker:yum makecache fast && yum install docker-ce
    4.设置自启动:systemctl enable docker && systemctl start docker
    5.设置加速器
       mkdir /etc/docker
       vim /etc/docker/daemon.json
           {
            "registry-mirrors": ["https://docker.rainbond.cc"]
           }
  • 二进制包的方式安装
   下载地址: https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-23.0.6.tgz
   tar -xf docker-23.0.6.tgz 
   cd docker/
   cp * /usr/local/bin
   vim /usr/lib/systemd/system/docker.service,填入以下内容:
       [Unit]
        Description=Docker Application Container Engine
        Documentation=https://docs.docker.com
        After=network-online.target firewalld.service time-set.target
        Wants=network-online.target

       [Service]
        Type=notify
        ExecStart=/usr/local/bin/dockerd
        ExecReload=/bin/kill -s HUP $MAINPID
        TimeoutStartSec=0
        RestartSec=2
        Restart=always
        StartLimitBurst=3
        StartLimitInterval=60s
        LimitNOFILE=infinity
        LimitNPROC=infinity
        LimitCORE=infinity
        TasksMax=infinity
        Delegate=yes
        KillMode=process
        OOMScoreAdjust=-500

       [Install]
        WantedBy=multi-user.target
       
   设置加速器
   mkdir /etc/docker
   vim /etc/docker/daemon.json
       {
        "registry-mirrors": ["https://docker.rainbond.cc"]
       }

配置加速器后如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行中执行docker info,查看加速器是否配置正确