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
#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=123456 mysql

   

  测试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/    

Docker学习—概念及基本应用的更多相关文章

  1. Docker学习之基本概念

    Docker学习之基本概念 作为一个后端noder,不了解docker有点说不过去,这节开始,学习一些docker层面的东西. 什么是docker Docker最初是dotCloud公司创始人Solo ...

  2. Docker学习(一): 基本概念

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  3. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  4. docker学习(1)--基础概念

    转载请注明源文章出处:http://www.cnblogs.com/lighten/p/6841677.html 1.前言 docker的官网:这里.下一段摘自官网描述. docker是世界领先的软件 ...

  5. Docker 学习笔记之 核心概念

    Docker核心概念: Docker Daemon Docker Container Docker Registry Docker Client 通过rest API 和Docker Daemon进程 ...

  6. 菜鸟系列docker——docker基本概念(1)

    docker基本概念 1.准备 这里先介绍容器技术,后续再介绍docker.docker是容器的一种,除docker以外,还存在coreos.不过在当前趋势下容器和docker基本上可以划为等号了. ...

  7. 优秀的云计算工程师需要学什么?云计算Docker学习路线

    云计算工程师要学什么?随着互联网的快速发展,云计算这个词大家并不陌生,但是云计算究竟是做什么的,想要从事云计算要学习什么,很多都不知道,那么今天就给大家讲一下云计算. 云计算是基于互联网的相关服务的增 ...

  8. Docker 学习新手笔记:从入门到放弃

    本文记录的是作为一个新手,从了解 Docker 是什么.Docker 技术包含哪些概念到上手使用.安装以及发布 Docker 镜像的整个过程.作者在学习过程中参阅了诸多文档和教程,在此一并感谢,与此同 ...

  9. Docker学习之——Node.js+MongoDB+Nginx环境搭建(一)

    最近在学习Node.js相关知识,在环境搭建上耗费了不少功夫,故此把这个过程写下来同大家分享一下,今天我先来介绍一下Docker,有很多人都写过相关知识,还有一些教程,在此我只想写一下,我的学习过程中 ...

随机推荐

  1. 自己实现一个 DFA 串模式识别器(二)

    正规表达式的实现原理 ​ 上文讨论了串的模式的表达,即正规表达式.那么这一小节将讨论我们实现一个正规表达式的方法和原理.因为我们知道,一个正规表达式对应着一个串模式,而一个串模式又对应着一些列符合该模 ...

  2. Object类:又回到最初的起点

    Object类大概是每个JAVA程序员认识的第一个类,因为它是所有其他类的祖先类.在JAVA单根继承的体系下,这个类中的每个方法都显得尤为重要,因为每个类都能够调用或者重写这些方法.当你JAVA学到一 ...

  3. powershell中使用Send-MailMessage发送邮件

    在powershell中我们可以使用Send-MailMessage发送邮件,一般都是有这个命令的 笔者的总结是鉴于公司的环境的,大家在借鉴时,需要根据自己的实际情况进行修改 1.你笔者测试的格式如下 ...

  4. Shell学习(二)Shell变量

    一.Shell变量 变量的定义 例子: my_job="Learn Shell" PS:变量名和等号之间不能有空格!!! 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 ...

  5. 单元测试框架怎么搭?快来看看新版Junit5的这些神奇之处吧!

    为什么使用JUnit5 JUnit4被广泛使用,但是许多场景下使用起来语法较为繁琐,JUnit5中支持lambda表达式,语法简单且代码不冗余. JUnit5易扩展,包容性强,可以接入其他的测试引擎. ...

  6. 用ThreadLocal来优化下代码吧

    最近接手了一个老项目,看到一个很有意思的现象. 这个项目中大量的方法入参都会带上user信息,比如这样 它的意图是希望在方法内使用user的信息,但是如此大范围的传递用户信息,第一感觉就是不优雅.那有 ...

  7. 记一次uwsgi django nginx 调优

    [uwsgi] project = fortune_cat uid = ubuntu gid = ubuntu path = fortune_cat base = /home/%(uid) chdir ...

  8. 编程体系结构(05):Java多线程并发

    本文源码:GitHub·点这里 || GitEE·点这里 一.多线程导图 二.多线程基础 1.基础概念 线程是操作系统能够进行运算调度的最小单位,包含在进程之中,是进程中的实际运作单位.一条线程指的是 ...

  9. NMOS和PMOS区别

    在很多电路途中会出现NMOS和PMOS管,因为不是中文那么直接,都说管压降之类的,但其实它的导通很重要以及区别,关系到你点亮电子元件> 参考: 1.https://blog.csdn.net/l ...

  10. HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表 03

    工具1:HBuilder X 1.9.9.20190522 工具2:火狐浏览器 67.0.4 (64 位) 其实,我还想使用表格,做一个这样的颜色表,如下图所示: 如果按照之前的做法,把每一种颜色都列 ...