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程序员客栈
  • 相关阅读:
    linux 解压tgz 文件指令
    shell 脚本没有执行权限 报错 bash: ./myshell.sh: Permission denied
    linux 启动solr 报错 Your Max Processes Limit is currently 31202. It should be set to 65000 to avoid operational disruption.
    远程查询批量导入数据
    修改 MZTreeView 赋权节点父节点选中子节点自动选中的问题
    关于乱码的问题解决记录
    我的网站优化之路
    对设计及重构的一点反思
    我的五年岁月
    奔三的路上
  • 原文地址:https://www.cnblogs.com/i-dandan/p/10740687.html
Copyright © 2011-2022 走看看