Docker 快速入门和安装

  1. Docker简介     

    官网:https://docs.docker.com/    Docker与虚拟机的差异:https://www.cnblogs.com/kex1n/p/6933039.html   

    Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  2. Docker 架构    

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器;

            Docker 包括三个基本概念:
    • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统;

    • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等;

    • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像;

            大白话理解三个概念
    • 镜像:类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据;镜像实际上由一层一层的文件系统组成,可以基于Dockerfile 构建,Dockerfile 是一个描述文件,里面包含若干条命令,每条命令都会对基础文件系统创建新的层次结构;

    • 容器:类似是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序;

    • 镜像和容器关系:镜像类似 Java 类,容器类似 Java 类的实例(或类的对象),一个类可以产生无数个实例(或对象),一个镜像可以产生无数个容器;

      扫描二维码关注公众号,回复: 9700333 查看本文章
    • 镜像和仓库关系:仓库支持的操作类似 git,当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,在另外一台机器上使用这个镜像时,只需要从仓库上 pull 下来即可,也类似 Maven 私人或中央仓库;

      Docker 镜像(Images)

      Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

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

    官网文档:https://docs.docker.com/install/linux/docker-ce/centos/

    (1)、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker ;

    uname -r

    (2)、确保 yum 包更新到最新;

    sudo yum update

    (3)、如果安装过 Docker 旧版本,则卸载;

    sudo yum remove docker  docker-common docker-selinux docker-engine

    (4)、安装必须的包,yum-util 提供  yum-config-manager功能,另外两个是devicemapper驱动依赖的;

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

    (5)、设置仓库;

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    #如下载速度太慢则使用国内阿里云的仓库:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    (6)、更新 yum 缓存;

    sudo yum makecache fast

    (7)、查询 Docker 版本;

    yum list docker-ce --showduplicates | sort -r

    (8)、安装 Docker;

    #由于该命令后没有带具体的版本号,因此默认的tag为lastest,所以不同时间去执行有可能版本会不一样,生产环境建议带上指定的版本号;
    sudo yum install docker-ce

     (9)、启动并加入开机启动;

    sudo systemctl start docker
    sudo systemctl enable docker
    #检查docker状态
    systemctl status docker

    (10)、验证安装是否成功(有client和service两部分表示docker安装启动都成功了);

    #查看版本信息
    docker version
    #查看docker安装信息
    docker info

    (11)、创建第一个容器,我们通过Docker Hub上官方提供的现成的 hello-world 镜像来创建一个容器;

    docker run hello-world

    注1:本地没有这个 hello-world 镜像,他会自动从 Docker Hub 仓库去下载该镜像,然后在创建容器并运行容器内的 helloworld 程序,这个过程都是自动化完成的,并且启动的这个容器其实就相当于是一个小型 linux 系统,但是启动的非常快,几秒钟就启动并运行了,这也正是之前谈到的和虚拟机相比的优势;

    注2:若出现如下问题

    Unable to find image 'hello-world:latest' locally
    docker: Error response from daemon: Get 
    https://registry-1.docker.io/v2/library/hello-world/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io: dial tcp: 
    lookup auth.docker.io: no such host.

     解决

    #这是一个请求头超时异常,说白了就是你的docker请求不到外网无法去docker官网下载镜像!!!
    记住报错的结尾提示的是 no such host 这个异常是你的dns域名没有解析的原因所以我们对症下药
    通过命令去我们linux的dns配置 文件
    vi /etc/resolv.conf
    #新增谷歌的dns域名解析地址:
    nameserver 8.8.4.4
    #再配置一个默认解析地址(如果有请忽略)
    nameserver localdomain
    #保存后重启下 docker
    systemctl restart docker

    (12)、查看本地的镜像;

    docker images

猜你喜欢

转载自www.cnblogs.com/yimusidian/p/12450420.html