美文网首页
Docker入门

Docker入门

作者: 不知名的二狗 | 来源:发表于2020-08-26 21:53 被阅读0次

    Docker概述

    Docker为什么会出现?

    将项目打包并带上部署环境(镜像),上传到Docker 仓库,下载镜像,运行即可。开发打包部署上线一套流程做完。

    Docker思想来自集装箱
    JRE--多个应用(端口冲突)--原来都是交叉的
    隔离:Docker核心思想!打包装箱!每个箱子都是相互隔离的。
    Docker通过隔离,将服务器利用到极致。

    Docker 历史

    2010年,几个搞IT的年轻人,在美国成立了一家公司dotCloud
    做一些pass云计算服务,Linux相关的容器技术,并且将自己的技术(容器化技术)命名就是Docker!
    Docker刚刚诞生的时候,没有引起行业的注意,dotCloud就活不下去!
    2013年,Docker开源
    越来越多的人发现Docker的优点,火了,Docker每个月更新一个版本!
    2014年9月,Docker1.0发布!
    Docker为什么这么火?十分的轻巧!
    在容器技术出现之前,我们都是使用虚拟机技术!
    虚拟机,在windows中装一个VMware,通过这个软件我们可以虚拟出来一台或多台电脑!十分笨重!
    虚拟机属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!
    vm中加载linux centos原生镜像(一个电脑)运行多个应用,需要开启多个电脑,一个电脑几个G
    docker 镜像中包含的最核心的环境小于4m,加上jdk mysql十分小巧,运行镜像就可以了。秒级启动。
    Docker是基于Go语言开发的。

    Docker能干什么

    之前的虚拟机技术


    image.png

    虚拟机技术缺点:

    • 占用资源十分多
    • 冗余步骤多
    • 启动很慢
      容器化技术
      容器化技术不是模拟的一个完整的操作系统


      image.png

      比较Docker和虚拟机技术的不同:

    • 传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
    • 容器内的应用直接运行在宿主机的内核上,容器没有自己的内核,也没有虚拟硬件。
    • 每个容器是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响。

    DevOps(开发、运维)

    更快速的交付和部署
    传统:一堆帮助文档,安装程序
    Docker:打包镜像发布测试,一件运行
    更便捷的升级和扩缩容
    使用了docker之后,部署应用就和搭积木一样,项目打包为一个镜像
    更简单的系统运维
    容器化之后,我们的开发,测试环境高度一致

    Docker基本组成

    image.png

    Docker镜像(image)
    好比一个模板,可以通过这个模板来创建容器服务,例如:
    Tomcat镜像==》run==》tomcat01容器(可提供服务器)。
    通过这个镜像可以创建多个容器(最终服务器或者项目运行就是在容器中的)
    容器(container)
    Docker利用容器技术,独立运行一个后者一组应用,通过镜像来创建的。
    启动 停止 删除 基本命令
    目前可以把这个容器理解为一个建议的linux系统
    仓库(repository)
    仓库就是放镜像的地方
    仓库分为公有仓库和私有仓库!
    DockerHub(国外的)
    阿里云也有容器服务器(配置了镜像加速)

    Docker安装

    环境准备
    1.Linux基础
    2.Centos7
    3.Xshell(MobaXterm)连接服务器
    环境查看

    # 系统内核是3.10以上
    [root@localhost /]# uname -r
    3.10.0-1127.el7.x86_64
    
    #  系统版本
    [root@localhost /]# cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="7"
    
    1. 卸载旧版本
    
    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    

    2.需要的安装包

    
    安装 Docker Engine-Community
    使用 Docker 仓库进行安装
    在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
    设置仓库
    安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
    
    $ 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-config-manager \
        --add-repo \
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    清华大学源

    $ sudo yum-config-manager \
        --add-repo \
        https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
    

    安装 Docker Engine-Community
    安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

    $ sudo yum install docker-ce docker-ce-cli containerd.io
    

    3.启动docker

    [root@localhost /]# systemctl start docker
    
    1. 使用docker 查看是否安装成功
    [root@localhost /]# docker version
    Client:
     Version:         1.13.1
     API version:     1.26
     Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64
     Go version:      go1.10.3
     Git commit:      64e9980/1.13.1
     Built:           Wed Jul  1 14:56:42 2020
     OS/Arch:         linux/amd64
    
    Server:
     Version:         1.13.1
     API version:     1.26 (minimum version 1.12)
     Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64
     Go version:      go1.10.3
     Git commit:      64e9980/1.13.1
     Built:           Wed Jul  1 14:56:42 2020
     OS/Arch:         linux/amd64
     Experimental:    false
    
    
    1. 运行hello-world
    [root@localhost /]# docker run hello-world
    Unable to find image 'hello-world:latest' locally
    Trying to pull repository docker.io/library/hello-world ...
    latest: Pulling from docker.io/library/hello-world
    0e03bdcc26d7: Pull complete
    Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
    Status: Downloaded newer image for docker.io/hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/
    
    For more examples and ideas, visit:
     https://docs.docker.com/get-started/
    

    提示 Hello form Docker,证明成功运行

    6.查看hello-world 镜像

    [root@localhost /]# docker images
    REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
    docker.io/nginx         latest              4bb46517cac3        12 days ago         133 MB
    docker.io/hello-world   latest              bf756fb1ae65        7 months ago        13.3 kB
    

    卸载docker
    1、查询docker安装过的包:

    [root@localhost /]# yum list installed | grep docker
    docker.x86_64                       2:1.13.1-162.git64e9980.el7.centos @extras
    docker-client.x86_64                2:1.13.1-162.git64e9980.el7.centos @extras
    docker-common.x86_64                2:1.13.1-162.git64e9980.el7.centos @extras
    
    

    2、删除安装包:

    [root@localhost /]# yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y
    

    3、删除镜像/容器等

    [root@localhost /]# rm -rf /var/lib/docker
    

    阿里云镜像加速

    1.将docker镜像源修改为国内的:
    在 /etc/docker/daemon.json 文件中添加以下参数(没有该文件则新建):

    {
      "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
    }
    

    2.服务重启:

    [root@localhost /]# systemctl daemon-reload
    [root@localhost /]# systemctl restart docker
    

    回顾hello-world

    run的运行流程


    image.png

    底层原理

    Docker是怎么工作的?
    Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问!
    DockerServer 接收到Docker-Client的指令,就会执行这个命令。

    image.png

    ** Docker为什么比VM快**
    1.Docker有着比虚拟机更少的抽象层
    2.Docker利用宿主机的内核,VM则组要Guest OS。

    相关文章

      网友评论

          本文标题:Docker入门

          本文链接:https://www.haomeiwen.com/subject/smlxsktx.html