• Docker学习重点(1)~docker基本介绍



    一、Docker 概述

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

    使用Docker后的开发部署流程:

    开发:建立模型--环境--打包带上环境,即镜像--放到Docker仓库

    部署:下载Docker中的镜像,直接运行即可

    1、镜像:打包项目带上环境,即镜像

    2、Docker仓库: 存放docker镜像

    3、隔离

    Docker的思想来自于集装箱,集装箱,对环境进行隔离

    Docker通过隔离机制,可以将服务器利用到极致。

    每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响。

    4、容器化技术

    • 容器化技术的命名就是docker



    二、docker 为什么出现?

    Docker出现的原因--应用环境配置费时费力

    • 版本问题、底层依赖冲突问题

    一般在公司我们制作一个产品通常需要开发和上线,这就涉及到开发人员和运维人员的工作。

    而通常一个产品会有两套环境,一套环境是开发人员的开发时所用的环境,另一套则是运维人员根据开发人员的提示所配置的环境,

    但这两套环境和应用配置难免会有不同或冲突,这就导致有时候在开发人员电脑上可以运行但上线时却无法运行。版本更新导致服务不可用。



    三、docker优点

    轻巧--相对于笨重的虚拟机

    • docker容器技术和虚拟机一样都是虚拟技术,但是十分轻巧, docker模拟的不是完整的操作系统
    • 比如安装centos 系统,只用到centos的最核心
    vm: linux centos 原生镜像(一个电脑) 隔离,需要开启多个虚拟机    几个G  几分钟
    docker: 隔离  镜像(最核心的环境,4m+jdk+mysql)             十分小巧, 秒级启动
    

    容器化技术不是模拟的一个完整的操作系统

    传统虚拟机:模拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件

    docker:容器内的应用直接运行在宿主机的内核,容器是没有自己的内核,也没有虚拟我们的硬件,所以就轻便了



    四、Docker能干嘛(优点)

    DevOps(开发、运维)

    开发和运维过程中,Docker 具有以下几个方面的优势:

    应用更快速的交付和部署

    传统:一堆帮助文档,安装程序

    Docker:打包镜像发布测试,一键运行

    更便捷的升级和扩缩容

    使用了Docker之后,我们部署应用就和搭积木一样!项目打包为一个镜像,扩展 服务器A!服务器B

    更简单的系统运维

    在容器化之后,我们的开发,测试环境都是高度一致的。

    更高效的计算资源利用:

    Docker是内核级别的虚拟化,可以再一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。



    五、Docker的基本组成

    1、docker的三个重要概念:

    (1)镜像:打包项目带上环境,即镜像

    Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像可以用来创建Docker容器,用户可以使用设备上已有的镜像来安装多个相同的Docker容器。

    (2)容器:镜像创建的运行实例,Docker利用容器来运行应用

    每个容器都是相互隔离的、保证安全的平台。我们可以把容器看做是一个轻量级的Linux运行环境。

    (3)仓库:存放镜像(文件)的地方,分为共有仓库和私有仓库

    Docker Hub:国外的

    阿里云:配置镜像加速



    六、了解docker的镜像命令、容器命令后,回来理解容器概念特性就非常容易了

    ☺ 通过命令观察到的结果来证明 docker容器相当一个轻量级的Linux运行环境。且证明容器的特性是相互隔离,各自运行各自的程序,各自有各自的环境。每个容器内都有一个属于自己的文件系统,互不影响。

    证明1:docker容器相当一个轻量级的Linux运行环境

    可以看到,分别在centos容器、tomcat容器、nginx容器内部查看了系统的版本信息,发现他们底层系统都是Linux,通过命令,观察他们的版本信息,发现他们的系统版本,可以是不一样的,可以是linux发行版的RedHat系列(centos),也可以是linux发行版的Debian系列(debian)

    证明2:容器的特性是相互隔离,各自运行各自的程序,各自有各自的环境。每个容器内都有一个属于自己的文件系统,互不影响。

    通过命令ls,分别在centos容器、tomcat容器、nginx容器内部查看到他们有属于自己的文件系统,都是不同的。

    通过命令ip,分别在centos容器、tomcat容器、nginx容器内部查看到,在centos系统可以直接得到ip信息,而一开始tomcat、nginx容器内部,都是ip命令找不到,后来,咱通过给tomcat容器修改一下apt源的镜像,并更新一下命令,然后安装iproute2(没给nginx容器安装iproute2命令)的情况下,分别在tomcat、nginx容器内部查看ip命令,发现只有tomcat 容器可以正常使用ip命令。由此,证明了容器隔离的特性

    # 创建centos的容器
    docker pull centos
    docker run -it --name centos01 centos /bin/bash
    # ———————————————————————————————————————— ls 命令查看目录信息————————————————————————————————————
    [root@dfd0ef52fc43 /]# ls
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    # -----------------------------------这个时候,查看系统的版本信息---------------------------------
    [root@dfd0ef52fc43 /]# cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="8"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="8"
    PLATFORM_ID="platform:el8"
    PRETTY_NAME="CentOS Linux 8"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:8"
    HOME_URL="https://centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    CENTOS_MANTISBT_PROJECT="CentOS-8"
    CENTOS_MANTISBT_PROJECT_VERSION="8"
    [root@dfd0ef52fc43 /]# cat /etc/redhat-release
    CentOS Linux release 8.4.2105
    # ========================================使用命令 ip =====================================
    [root@eed52d253e26 /]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
     valid_lft forever preferred_lft forever
    12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
     valid_lft forever preferred_lft forever
    
    # 创建tomcat的容器
    docker pull tomcat:9.0
    docker run -it --name tomcat01 tomcat:9.0 /bin/bash 
    # ———————————————————————————————————————— ls 命令查看目录信息————————————————————————————————————
    root@f1cfb81dedfd:/usr/local/tomcat# ls
    BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf  logs	    temp     webapps.dist
    CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      lib   native-jni-lib  webapps  work
    # -----------------------------------这个时候,查看系统的版本信息---------------------------------
    root@f1cfb81dedfd:/usr/local/tomcat# cat /etc/os-release
    PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
    NAME="Debian GNU/Linux"
    VERSION_ID="11"
    VERSION="11 (bullseye)"
    VERSION_CODENAME=bullseye
    ID=debian
    HOME_URL="https://www.debian.org/"
    SUPPORT_URL="https://www.debian.org/support"
    BUG_REPORT_URL="https://bugs.debian.org/"
    root@f1cfb81dedfd:/usr/local/tomcat# cat /etc/debian_version
    11.2
    # ========================================使用命令 ip =====================================
    root@f1cfb81dedfd:/usr/local/tomcat# ip a
    bash: ip: command not found
    # ~~~~~~~~~~~~~~~~~~~~~~~~ 给tomcat容器修改一下apt源的镜像,并更新一下命令,然后安装iproute2~~~~~~~~~~~~~~~~~~
    # 修改apt下的sources.list
    # 先备份,可以选择创建一个文件夹,然后拷贝一份放进去
    root@f1cfb81dedfd:/etc/apt# mkdir cat sources.list.backup
    root@f1cfb81dedfd:/etc/apt# cp sources.list ./sources.list.backup
    root@f1cfb81dedfd:/etc/apt/sources.list.backup# cd ../
    # 使用命令 echo 覆盖+追加方式
    deb https://mirrors.aliyun.com/debian bullseye main
    deb https://mirrors.aliyun.com/debian-security bullseye-security main
    deb https://mirrors.aliyun.com/debian bullseye-updates main
    # 执行一下更新命令:
    apt-get update -y
    # 执行下载 iproute2命令:
    apt install -y iproute2
    
    # 再次执行ip 命令
    root@f1cfb81dedfd:/usr/local/tomcat# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
     valid_lft forever preferred_lft forever
    6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
     valid_lft forever preferred_lft forever
    
    # 创建nginx的容器
    docker pull nginx
    docker run -it --name nginx01 nginx /bin/bash
    # ———————————————————————————————————————— ls 命令查看目录信息————————————————————————————————————
    root@7b002c0ac35e:/# ls
    bin   dev		   docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
    boot  docker-entrypoint.d  etc			 lib   media  opt  root  sbin  sys  usr
    # -----------------------------------这个时候,查看系统的版本信息---------------------------------
    root@7b002c0ac35e:/# cat /etc/os-release
    PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
    NAME="Debian GNU/Linux"
    VERSION_ID="11"
    VERSION="11 (bullseye)"
    VERSION_CODENAME=bullseye
    ID=debian
    HOME_URL="https://www.debian.org/"
    SUPPORT_URL="https://www.debian.org/support"
    BUG_REPORT_URL="https://bugs.debian.org/"
    root@7b002c0ac35e:/# cat /etc/debian_version
    11.2
    # ========================================使用命令 ip =====================================
    root@f4cc7c858a88:/# ip a
    bash: ip: command not found
    # ~~~~~~ 在给tomcat容器修改一下apt源的镜像,并更新一下命令,然后安装iproute2(没给nginx容器安装iproute2命令哦),查看ip命令~~~~~~
    root@f4cc7c858a88:/# ip a
    bash: ip: command not found
    
    • 同一个镜像tomcat,创建出第二个tomcat容器tomcat02,发现,也是一样的,新创建的tomcat容器也是因为下载的Tomcat镜像是精简版的,利用这个镜像去打开一个容器的时候发现没有ip addr这个命令。



    ☺ 参考来源:
    狂神的B站视频《【狂神说Java】Docker最新超详细版教程通俗易懂》 https://www.bilibili.com/video/BV1og4y1q7M4



    如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

  • 相关阅读:
    char、varchar、nchar、nvarchar的区别
    linux和windows下分别如何查看电脑是32位的还是64位?
    HP-Unix安装Memcache问题
    安装GCC-4.6.1详细教程
    JSTL 核心标签库 使用
    JSP && EL表达式
    UNIX环境高级编程——标准IO-实现查看所有用户
    UNIX环境高级编程——环境变量表读取/添加/修改/删除
    UNIX网络编程——进程间通信概述
    UNIX网络编程——通过UNIX域套接字传递描述符和 sendmsg/recvmsg 函数
  • 原文地址:https://www.cnblogs.com/shan333/p/16249342.html
Copyright © 2020-2023  润新知