• 云原生之Docker


    初识Docker

    什么是Docker

    docker是一个快速交付应用,运行应用的技术。可以将程序及其依赖、运行环境一起打包为一个镜像,可以部署在任意Linux操作系统。运行时利用沙箱机制形成隔离容器,各个应用互不干扰。

    Docker与虚拟机

    • Docker将不同操作系统的函数库、程序和依赖打包在一个镜像文件中
    • 虚拟机使用Hypervisor等技术模拟计算机硬件,在模拟的硬件上安装完整的操作系统

    Docker的优点:

    • Docker打包的只是阉割版的操作系统的函数库,而虚拟机需要安装整个操作系统,因此,Docker的磁盘占用一般远低于虚拟机,性能也比虚拟机好。
    • 在启动时,Docker启动的是一个进程,而虚拟机需要先启动操作系统,因此,Docker的启动速度也更快。

    Docker相关术语及架构

    镜像和容器

    镜像:Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像

    容器:镜像中的应用程序运行后形成的进程就是容器,Docker会给容器做隔离,对外不可见

    DockerHub

    DockerHun是一个Docker镜像的托管平台,这样的平台称为Docker Registry

    Docker架构

    Docker是一个CS架构,由两部分组成

    服务端:Docker守护进程,负责处理Docker指令,管理镜像、容器等

    客户端:通过命令或RestApI向Docker服务端发送指令,可以在本地或服务端发送指令

    Docker命令

    镜像操作命令

    docker build # 构建镜像
    docker push # 推送镜像到服务
    docker pull # 从服务拉取镜像
    docker save # 保存镜像为一个压缩包
    docker load # 加载压缩包为镜像
    docker images # 查看镜像
    docker rmi # 删除镜像
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    容器操作命令

    docker run # 通过镜像创建并运行容器
    docker pause # 让一个处于运行状态的容器进入暂停状态
    docker unpause # 让一个处于暂停状态的容器进入运行状态
    docker stop # 让一个处于运行状态的容器进入停止状态
    docker start # 让一个处于停止状态的容器进入运行状态
    docker exec # 进入容器执行命令
    docker logs # 查看容器的运行日志
    docker ps # 查看所有运行的容器及状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    暂停和停止的区别是暂停只是将进程挂起不再执行,而停止会释放内存和其他资源

    数据卷命令

    Docker容器内的资源会在容器删除时全部释放,因此如果进行服务的升级和重新打包部署时我们将丢失容器内的全部数据.可以通过数据卷挂载将容器内目录挂载在宿主机目录上以保存和修改数据。

    docker volume create # 创建数据卷
    docker volume ls # 数据卷列表
    docker volume inspect # 检查数据卷
    docker volume rm # 删除数据卷
    docker volume prune # 删除未使用的数据卷
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以在容器运行时通过-v 数据卷名或宿主机目录名:容器内目录名 来进行数据卷的挂载。

    自定义镜像

    镜像结构

    镜像是分层结构,每一层称为一个Layer,大致可分为三部分:

    • BaseImage层:包含基本的系统函数库、环境变量、文件系统
    • Entrypoint:入口,是镜像中应用启动的命令
    • 其他:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置

    Dockerfile

    Dockerfile是一个文本文件,包含多个指令,用指令说明执行什么操作来构建镜像,每一个指令形成一层Layout

    指令说明示例
    FROM设置基础镜像FROM centos:6
    ENV设置环境变量,可在后面指令使用ENV key value
    COPY拷贝本地文件到镜像的指定目录COPY ./mysql-5.7.rpm /tmp
    RUN执行Linux的shell命令,一般是安装过程的命令RUN yum install gcc
    EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
    ENTRTPOINT镜像中应用的启动命令,容器运行时调用EXTRTPOINT java -jar xx.jar

    更多命令参见Docker官方文档

    DockerCompose

    DockerCompose可以基于Compose文件帮助我们快速的部署分布式应用,而无需手动一个个创建和运行容器

    Compose文件是一个文本文件,可以通过指定定义集群的每个容器如何运行

    version: "3.8"
    services: 
    	mysel:
    		image: mysql:5.7.25
    		environment:
    		 MYSQL_ROOT_PASSWORD: 123
    		volumes:
    		- /tmp/mysql/data:/var/lib/mysql
    		- /tmp/mysql/conf/hmy.cnf:/etc/mysql/config.d/hmy.cnf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    安装

    Linux下安装

    curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-'uname -s'-'uname -m' > /user/local/bin/docker-compose
    
    • 1

    修改文件权限

    chmod +x /usr/local/bin/docker-compose
    
    • 1

    常用命令

    docker-compose up #创建并启动容器
    docker-compose restart #重新启动一个或几个容器
    
    • 1
    • 2
  • 相关阅读:
    关于安卓SVGA浅尝(二)加载数据
    02-Java流程控制
    binlog分析工具
    python如何调用另一个.py文件中的类和函数
    C++学习之路-类模板之泛型动态数组的实现
    【机器学习】模型平移不变性/等变性&归纳偏置&Attention机制
    docker 部署环境基本流程
    E中国集装箱涂料行业竞争态势及投资盈利预测报告2022-2028年
    重学Elasticsearch第1章 : Elasticsearch, Kibana概念、Elasticsearch相关术语
    最小生成树--Prim算法和Kruskal算法
  • 原文地址:https://blog.csdn.net/m0_67713667/article/details/133937576