zoukankan      html  css  js  c++  java
  • 菜鸟系列docker——docker基本概念(1)

    docker基本概念

    1.准备

    这里先介绍容器技术,后续再介绍docker。docker是容器的一种,除docker以外,还存在coreos。不过在当前趋势下容器和docker基本上可以划为等号了。

    1.1 容器是什么?

    谈到容器,大家可能很熟悉,就和大家在工地看到的集装箱房子一样,里面基本设施都有,多个集装箱房互不干扰,公用一些水电基本设施,当需要换个地方是时候,把集装箱搬过去就行。而这里的容器就是这样的一种技术,可以把我们开发的一些程序,所需要的环境进行打包,使得我们的应用程序可以在虚拟机、服务器、云服务等平台跑,而不需要在各个平台搭环境,在运行程序。容器是一种轻量级、可移植等软件打包技术。
    容器一般由2部分组成,应用程序和依赖库或依赖的其他程序。可能说到这里,就有人问这和虚拟机有啥区别,都是需要一台宿主机运行,虚拟化出自己的环境跑自己的代码。这里我们就进行简单的分析:

    • 虚拟机:需要宿主机上虚拟硬件,在此基础上再部署系统,再部署应用。
    • 容器:直接在宿主机运行,就和一个进程差不多

    image

    1.2 容器有哪些优点?

    各位是否存在本地跑的好好的,在交付的时候发现问题一大堆,不是缺这个就是缺那个。最后来了句“在本地跑的好好的”。此时,由于环境问题,你可能就凉了。
    这个时候,容器就可以大显神威,容器就把集装箱的思维用在IT上,我们可以将环境、依赖及程序全部打包成一个容器,在其他环境直接运行这个容器就好,就可以不考虑什么环境问题,缺库问题来。通过容器可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上。

    2.docker技术

    上面简单介绍来下容器是什么?容器能干啥?接下来肯定就是怎么干了?后续对容器的操作本系列将逐步进行讲解,主要是对docker技术进行学习。

    2.1 docker架构

    Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信。其中,docker客户端我们一般就是直接通过命令操作,通过docker命令在宿主机进行容器、镜像等一系列操作。而docker服务器以linux后台的方式运行,执行我们操作的命令,例如容器的创建、运行,打镜像等操作。

    image

    2.2 docker学习核心

    主要是以下3点,镜像、容器和仓库。

    • 仓库Registry
      Registry 是存放 Docker 镜像的仓库,Registry 分私有和公有两种。 Docker Hub(https://hub.docker.com/) 是默认的 Registry,由 Docker 公司维护,上面有数以万计的镜像,用户可以自由下载和使用。当然,我们也可以搭建自己的私有仓库。
    • 镜像image
      镜像就是我们创建容器的一系列操作的集合,通过这个镜像创建容器。我们一般写一个Dockerfile文件构建镜像。这里镜像就和我们的程序安装包类似,安装后就可以运行程序了。
    • 容器container
      容器就是镜像运行后的实例,类似于安装包安装后的程序,可以运行和退出。

    2.3 docker安装

    “工欲善其事,必先利其器”,在正式学习之前,先安装docker,这里笔者是在centos环境下进行操作,其他环境下各位大佬自行度娘哈。
    安装docker

    sudo yum update
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum list docker-ce --showduplicates | sort -r
    
    可根据上述显示版本自行安装,本人是默认
    sudo yum install docker-ce
    docker version
    sudo systemctl start docker
    

    因为一般docker操作时都需要root用户权限,这里建议把当前用户加入docker用户组

    # 添加 docker 用户组
    groupadd docker
    # 把需要执行的 docker 用户添加进该组,这里是 eggsy
    gpasswd -a eggsy docker
    # 重启 docker
    systemctl restart docker
    

    如果普通用户执行docker命令,如果提示get …… dial unix /var/run/docker.sock权限不够,则修改/var/run/docker.sock权限 使用root用户执行如下命令,即可

    sudo chmod a+rw /var/run/docker.sock
    # docker服务开机自启动
    systemctl enable docker
    

    删除docker

    yum list installed|grep docker
    sudo yum -y remove docker-ce.x86_64 docker-ce-cli.x86_64
    sudo rm -rf /var/lib/docker
    
    有兴趣的关注IT程序员客栈哦

    如果你觉得写的不错,请移步www.itkezhan.top或者关注公众号IT程序员客栈
  • 相关阅读:
    python将阿拉伯数字转换为中文书写的数字形式
    python生成textgrid文件
    将 Nodejs 服务部署到阿里云服务器
    盛最多水的容器
    连续子数组的最大和
    数组中出现次数超过一半的数字
    变态跳台阶
    二进制中 1 的个数
    784.字母大小写全排列
    链表中环的入口节点
  • 原文地址:https://www.cnblogs.com/i-dandan/p/10740687.html
Copyright © 2011-2022 走看看