• Docker学习—概念及基本应用


    1、Doker基本概念:

     Docker架构:

      Docker使用客户端-服务器架构。Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作

     

       相关描述:

    概念说明

    Docker 镜像(Images)

    Docker 镜像是用于创建 Docker 容器的模板,比如 mysql、Nginx等

    Docker 容器(Container)

    容器是独立运行的一个或一组应用,是镜像运行时的实体。

    Docker 客户端(Client)

    Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

    Docker 主机(Host)

    一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

    Docker Registry

    Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

    Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

    一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

    通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

    Docker Machine

    Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。



     Docker 包含3个基本概念:

    • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统
    • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样。容器可以被创建、启动、停止、删除、暂停等。
    • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

     Docker应用场景:

    • 快速,一致地交付您的应用程序:容器非常适合持续集成和持续交付(CI / CD)工作流程
    • 响应式部署和扩展:Docker 是基于容器的平台,允许高度可移植的工作负载

    • 在同一硬件上运行更多工作负载:Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案

    2、Doker常见命令:

     Docker 主要基础命令:  

    1. docker attach:将本地标准输入、输出和错误流附加到正在运行的容器
    2. docker build:从Dockerfile构建镜像
    3. docker builder:用于构建
    4. docker checkpoint:用于管理检查点
    5. docker commit:根据容器的更改创建新的镜像
    6. docker config:管理Docker配置
    7. docker container:管理容器
    8. docker context:管理上下文
    9. docker cp:在容器和本地文件系统之间复制文件/文件夹
    10. docker create:创建新容器
    11. docker diff:检查容器文件系统上文件或目录的更改
    12. docker events:从服务器获取实时事件
    13. docker exec:在正在运行的容器中运行命令
    14. docker export:将容器的文件系统导出为tar存档
    15. docker history显示镜像的历史记录
    16. docker image管理镜像
    17. docker images显示镜像列表
    18. docker import从tarball导入内容以创建文件系统映像
    19. docker info显示系统的信息
    20. docker inspect返回Docker对象的低级信息
    21. docker kill杀死一个或多个正在运行的容器
    22. docker load从tar存档或STDIN加载镜像
    23. docker login登录Docker仓库
    24. docker logout注销docker仓库登录
    25. docker logs获取容器日志
    26. docker manifest管理Docker 镜像清单和清单列表
    27. docker network管理网络
    28. docker node管理集群节点
    29. docker pause暂停一个或多个容器中的所有进程
    30. docker plugin管理插件
    31. docker port列出容器的端口映射或特定映射
    32. docker ps列出容器
    33. docker pull从仓库中提取镜像或存储库
    34. docker push推送镜像或存储库到仓库中
    35. docker rename重命名容器
    36. docker restart重新启动一个或多个容器
    37. docker rm移除一个或多个容器
    38. docker rmi删除一个或多个镜像
    39. docker run在新容器中运行命令
    40. docker save将一个或多个镜像保存到tar存档(默认情况下流式传输到STDOUT)
    41. docker search在Docker Hub中搜索镜像
    42. docker secret管理Docker机密
    43. docker service管理服务
    44. docker stack管理Docker堆栈
    45. docker start启动一个或多个已停止的容器
    46. docker stats显示容器资源使用统计信息的实时流
    47. docker stop停止一个或多个正在运行的容器
    48. docker swarm管理集群
    49. docker system管理docker
    50. docker tag标记本地进行,将其归入某一仓库
    51. docker top显示容器正在运行的进程
    52. docker trust管理Docker映像的信任
    53. docker unpause取消暂停一个或多个容器中的所有进程
    54. docker update更新一个或多个容器的配置
    55. docker version显示Docker版本信息
    56. docker volume管理卷
    57. docker wait 阻止,直到一个或多个容器停止,然后打印它们的退出代码

     Docker-compose 主要基础命令:

      build              生成或重建服务
      bundle             从Compose文件生成Docker bundle
      config             验证并查看撰写文件
      create             创建服务
      down               停止并删除容器、网络、镜像和卷
      events             从容器接收实时事件
      exec               在正在运行的容器中执行命令
      help               获取命令帮助
      images             显示镜像列表
      kill               杀死容器
      logs               查看容器的输出
      pause              暂停服务
      port               打印端口绑定的公共端口
      ps                 显示容器列表
      pull               拉取服务镜像
      push               推送服务镜像
      restart            重新启动服务
      rm                 移除停止的容器
      run                运行一次性命令
      scale              设置服务的容器数
      start              启动服务
      stop               暂停服务
      top                显示正在运行的进程
      unpause            取消暂停服务
      up                 创建并启动容器
      version            显示Docker-Compose版本信息

    这里提到的都是主要的命令,每个命令内部还有很多参数,在具体使用中来具体学习,接下来我们试验下。

    3、基本应用-部署.net core项目到Docker中

     本次docker采用docker for windows,安装步骤忽略,下载docker安装文件后,下一步即可:

     本次验证将自己学习认证服务部署到Docker中:

      

    •  创建Dockerfile 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
     
    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
    WORKDIR /app
    EXPOSE 80
     
    FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
    WORKDIR /src
    COPY ["cz.IdentityServer/cz.IdentityServer.csproj", "cz.IdentityServer/"]
    RUN dotnet restore "cz.IdentityServer/cz.IdentityServer.csproj"
    COPY . .
    WORKDIR "/src/cz.IdentityServer"
    RUN dotnet build "cz.IdentityServer.csproj" -c Release -o /app/build
     
    FROM build AS publish
    RUN dotnet publish "cz.IdentityServer.csproj" -c Release -o /app/publish
     
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "cz.IdentityServer.dll"]
    •  编译镜像
    复制代码
    docker build -t czids:dev -f ./cz.IdentityServer/Dockerfile .

    说明:
    -t  名称和可选的标记格式如:名称:标记
    -f  Dockerfile的名称(默认为“PATH/Dockerfile”)
    .  命令最后英文状态的 "." 不能省略,表示在当前目录中查找 Dockerfile文件
    复制代码

      当看到以下内容则镜像生成成功:

      可以看到czids镜像已编译成功,接下来把该镜像运行起来。  

    •  运行容器:

      由于该项目使用了mysql,我们接下来在docker中搭建一个mysql环境:

       拉取mysql镜像:docker pull mysql:latest  

      

      启动mysql服务:

     执行命令:
    复制代码
    docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin.123 mysql
    -i      交互式操作
    -t      终端
    -d      在后台运行容器并打印容器ID    
    --name    容器名称
    -p      将容器的端口发布到主机格式:宿主机端口:docker端口
    -e       设置环境变量:root账号密码:
    复制代码

       

      测试mysql连接:

        

      运行镜像czids:

    复制代码
    docker run -d -p 8000:80 --name czids czids:dev

    -d      在后台运行容器并打印容器ID
    -p      将容器的端口发布到主机格式:宿主机端口:docker端口
    --name    容器名称
    czids:dev  镜像名称及标签
    复制代码

      

    • 运行效果:   

      

    4、后续:

      下一步将对docker进一步学习,容器编排、集群、k8s结合等相关运用。

    引用:

    官网地址: https://docs.docker.com/     

    出处:https://www.cnblogs.com/cwsheng/p/13837502.html

    您的资助是我最大的动力!
    金额随意,欢迎来赏!
    款后有任何问题请给我留言。

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我。(●'◡'●)

    如果你觉得本篇文章对你有所帮助,请给予我更多的鼓励,求打             付款后有任何问题请给我留言!!!

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【Jack_孟】!

  • 相关阅读:
    PCA,到底在做什么
    论文笔记:Deep feature learning with relative distance comparison for person re-identification
    论文笔记:Cross-Domain Visual Matching via Generalized Similarity Measure and Feature Learning
    word2vec概述
    登录获取token,token参数关联至所有请求的请求体内
    pip安装库时报错,使用国内镜像加速
    python+unittest+requests+HTMLRunner编写接口自动化测试集
    python实现http get请求
    python实现以application/json格式为请求体的http post请求
    反编译apk
  • 原文地址:https://www.cnblogs.com/mq0036/p/13895360.html
Copyright © 2020-2023  润新知