当前位置: 首页 > news >正文

Docker知识点总结二

四、 Docker 架构

 
Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。

介绍:

  • 1、Docker的客户端client,我们在命令行发送一些信息(命令)给Docker服务端。
  • 2、中间这个就是Docker的服务端,在这个服务端里面,它是一个引擎,用来管理容器的,所以用引擎我们可以基于镜像来创建容器。 
  • 3、右边就是仓库,中心仓库就是Docker hub仓库,存放了成千上万的镜像。
  • 4、Docker容器通过Docker镜像来创建。
  • 有人会误以为,Docker就是容器,但Docker不是容器,而是管理容器的引擎。
容器的基本概念 

    容器是从镜像创建的运行实例。它可以被启动、停止、删除。每个容器都是相互隔离的、保证安全平台。可以把看做一个简易版的 Linux环境,包括root用户权限、进程空间、用户空间和网络空间和运行在其中的应用程序。
    Docker利用容器来运行应用,镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

仓库的概念:

        仓库是集中存放镜像文件的场所,有时候会把仓库和仓库注册服务器(Registry)看做同一事物,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag) ,tag你可以粗略理解为版本;
        仓库分为公开仓库(Public)和私有仓库(Private)两种形式;最大的公开仓库是 Docker Hub(https://hub.docker.com/) ,存放了数量庞大的镜像供用户下载; 当然,用户也可以在本地网络内创建一个私有仓库;

        当用户创建了自己的镜像之后就可以使用push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull下来即可;
        注:Docker仓库的概念跟Git类似,注册服务器也类似于GitHub这样的托管服务;

        用户可通过docker search命令来查找官方仓库中的镜像: 例如 docker search tomcat,并利用docker pull命令来将它下载到本地:

        可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建;官方的镜像说明是官方项目组创建和维护的,automated资源允许用户验证镜像的来源和内容;
        根据是否是官方提供,可将镜像资源分为两类:
        一种是类似centos这样的基础镜像,被称为基础或根镜像。这些基础镜像是由Docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字;
        还有一种类型,比如tianon/centos镜像,它是由Docker的用户创建并维护的,往往带有用户名称前缀。可以通过前缀user_name/来指定使用某个用户提供的镜像,比如tianon用户;

        从Docker 仓库下载镜像到本地,镜像名称格式为 名称号:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。如果你反复执行pull,它会把这个镜像下载到最新版本。

                 docker pull 镜像名称         例如:docker pull  tomcat 

五、Docker使用示例

5.1、Docker安装MySQL

        docker pull mysql (你也可以加上版本号,指定版本)

        接下来我们运行mysql镜像并且访问容器:

   docker run -d -p 3306:3306 mysql -e MYSQL_DATABASE = workdb -e MYSQL_ROOT_PASSWORD = 123456

到时候容器启动之后,你去访问mysql的时候,会有一个数据库的名字叫做workdb,密码123456

         

5.2、Docker安装nginx

下载Nginx镜像:

docker pull nginx

docker run -d -p 80:80   nginx 

docker exec -it  容器id bash  (用docker ps 查看容器id)

                ​​​​​​​        

访问nginx: http://123.57.144.31:80

相关文章:

  • Java agent技术的注入利用与避坑点
  • 主流开发语言和开发环境介绍
  • Docker Register 搭建私有镜像仓库
  • 如何通过隐藏服务器真实IP来防御DDOS攻击
  • 电脑蓝牙在哪里打开?不同系统详解
  • Linux中线程的实现,线程的接口相关函数pthread_create、pthread_join、pthread_exit
  • upload-Labs靶场“11-15”关通关教程
  • vue+uniapp实现图形验证码功能-插件(附源码)
  • SQL Server 安装部署
  • 【教程】uni-app iOS打包解决profile文件与私钥证书不匹配问题
  • leecode2917 | 找出数组中的k-or值
  • 企业跨境电商搭建电子商城需要用到的电商API接口
  • MySQL 8 创建一个新用户并赋予特定权限
  • 砝码称重 蓝桥杯
  • 重拾C++之菜鸟刷算法第9篇---二叉树(中2)
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android组件 - 收藏集 - 掘金
  • Django 博客开发教程 8 - 博客文章详情页
  • echarts的各种常用效果展示
  • iOS | NSProxy
  • JavaScript类型识别
  • JAVA多线程机制解析-volatilesynchronized
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Promise面试题,控制异步流程
  • ReactNative开发常用的三方模块
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • TypeScript实现数据结构(一)栈,队列,链表
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • windows下使用nginx调试简介
  • 今年的LC3大会没了?
  • 使用putty远程连接linux
  • 小程序开发之路(一)
  • 移动端解决方案学习记录
  • 译自由幺半群
  • 用 Swift 编写面向协议的视图
  • 主流的CSS水平和垂直居中技术大全
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • puppet连载22:define用法
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (23)Linux的软硬连接
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (九)One-Wire总线-DS18B20
  • (力扣)循环队列的实现与详解(C语言)
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (图)IntelliTrace Tools 跟踪云端程序
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理出现中文乱码的情况
  • .gitattributes 文件