• Docker入门1(CICD 插曲)


    先看别人这博客,有一个大致了解:Docker和k8s的区别与介绍 - 我要向前走 - 博客园 (cnblogs.com)

    1、Docker核心概念

    1.1 Docker设计目标(Docker思想来源于集装箱):

    1)提供简单的应用程序打包工具(将应用打包,放在其他地方可以运行)

    2)开发人员和运维人员职责逻辑分离;

      现开发人员工作:

    • 开发项目
    • 打包项目环境+代码 成镜像
    • 部署到容器平台

     运维人员工作:怎么高效的去管理这些容器,比如:监控、日志、怎么开发出傻瓜工具方便自动化部署。

     好处:

    • 运维人员节省人工成本
    • 持续发布有问题更快解决,更好服务开发人员

    3)(开发环境、测试环境、生产环境)多环境保持一致性

    1.2 容器VS虚拟机:

     

     容器之间的隔离是抽象隔离,是逻辑隔离,可以理解为电脑中进程之间的隔离;虚机之间的隔离是用操作系统进行了隔离。容器应该主要是解决应用层面的问题,虚拟机应该主要解决基础资源的问题。

    1.3 Docker应用场景:

    1)应用程序打包和发布

    2)应用程序隔离

    3)持续集成

    4)部署微服务(将大的服务拆分成很多小的微服务,小的服务独立部署,独立数据库,升级时升级小服务就好,影响面小)

    5)快速搭建测试环境(直接拉镜像,启动即可)

    6)提供PaaS产品(平台即服务)

    1.4 Docker安装:

    官网:Empowering App Development for Developers | Docker

    文档:Docker Documentation | Docker Documentation    

    分为企业版与社区版,这边安装社区版。

    先看一下机器内核版本,再根据版本选择安装:

    安装前最好先关防火墙(主要是关闭一些默认规则):

     

     跟着官方文档指南,进行安装,因为我这Centos,所以参考https://docs.docker.com/engine/install/centos/#prerequisites,这里选择【Install using the repository】方式安装。

    1、安装yum-utils包,提供yum-config-manager 实用程序
    # yum install -y yum-utils
    2、设置
    #yum-config-manager \ 
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    3、安装
    #
    yum install docker-ce docker-ce-cli containerd.io

     启动Docker:

    systemctl start docker

    查看安装是否成功:

    # docker info 查看信息

    安装没问题后,设置一下开机自启动:

    # systemctl enable docker

    2、Docker镜像管理

    2.1 镜像是什么

    1. 一个分层存储得文件,不是一个单一得文件
    2. 一个软件得环境
    3. 一个镜像可以创建N个容器
    4. 一种标准得交付
    5. 一个不包含Linux内核而又精简得Linux操作系统

    可以理解为一个压缩包,包含了基础运行环境与源代码。

    2.2 镜像从哪里来

    1、来源于dockerhub(由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。有两种库:公共存储库和私有存储库。如果你是一家公司,你可以在你自己的组织内拥有一个私有存储库,而公共镜像可以被任何人使用。)https://hub.docker.com/

    因为是在线拉,且dockerhub地址在国外,所以可以根据需求先配置镜像加速器(实则就是配置一个国内得镜像仓库,而这个镜像仓库永远与dockerhub同步):

    # vi /etc/docker/daemon.json                   (默认没有这个文件,直接VI创建写入)

    保存后重启docker生效,如果docker因此有问题,肯定是文件内容写错了,英文下得标点符号。

    2、可以本地/私有镜像仓库

    2.3 镜像与容器的联系

    容器是通过镜像创建的运行实例。一个镜像可以启用多个容器,多个容器之间是隔离的。

    2.4 管理镜像常用命令

     

    2.4 镜像存储核心技术:联合文件系统(UnionFS)

    创建很多容器,却不怎么消耗磁盘空间,这是为什么?

    创建一个容器,其实只是将基础镜像进行软链接(类似),所以只要容器中不加内容,即使基于一个镜像创建上百个容器,也不怎么影响磁盘空间。

     

     比如右图中,基础镜像中file2修改,其实只是将file2复制到容器层,进行修改。

    综上:

    读文件:容器层->镜像层

    修改文件:容器层->镜像层(从镜像层复制到容器层)

    3、Docker容器管理

    3.1 创建容器常用选项

     # docker container exec -it 编号 bash

    3.2 容器资源限制

    默认创建的容器,使用宿主机所有资源,谁先抢到谁占用。

     3.3 容器资源配额的扩容

    docker update 更新容器配置

    已创建的,修改配置,只支持部分修改。具体可以docker update --help

     3.4 管理容器常用命令

     3.4 容器实现核心技术:Namespace、CGroups

     

     3.5 Docker核心组件之间关系

     4、容器数据持久化

    4.1 将数据从宿主机挂载到容器中的三种方式

    根据2.4节所讲,容器删除,里面的数据就没有了。但是有时候容器中有些数据很重要,需要持久化(容器删除,数据还在)。

    你必须知道的Docker数据卷(Volume) - EdisonZhou - 博客园 (cnblogs.com)

  • 相关阅读:
    Python3 input() 函数
    Python3 enumerate() 函数
    Python3 ascii() 函数
    Python3 sorted() 函数
    css sprite
    Java 理论与实践: 并发集合类
    关于 Java Collections API 您不知道的 5 件事,第 1 部分
    Treasure! Free Mobile Design Resources
    Indigo Studio
    ionic:Build mobile apps faster with the web technologies you know and love
  • 原文地址:https://www.cnblogs.com/maxiaonong/p/15578637.html
Copyright © 2020-2023  润新知