Docker简介及其部署和简单应用

Docker

简介
  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
  • 一个完整的Docker有以下几个部分组成:
    DockerClient客户端
    Docker Daemon守护进程
    Docker Image镜像
    DockerContainer容器
docker基本概念

Docker包括三个基本概念:
镜像(Image)
容器(Container)
仓库(Registry)

镜像
  • Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等) 。
    镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
  • 当新建一层时,之前的那一层就已经成为了镜像层,运行时是自下而上的,所以结果肯定会包含上一层所执行的结果,因为你对之前的镜像层没有进行插入操作,就只是在往上叠加,所以除了现在这层之外的所有层都是一个cache,执行起来比较快。
  • 当你只想执行这一层而且不想要之前某一层的结果时,可以在Dockerfile里边进行修改删掉这一层的run,但是注意这个cache就被破坏了,需要重新执行得到一个新的cache,但是对于结果没有影响,就是比之前慢一点,因为要重新生成cache。
容器
  • 个人对于镜像(Image)和容器(Container)的理解,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
  • 容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间(namespace)。
    因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
仓库
  • 镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
架构
  • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
  • Docker采用 C/S架构 Docker daemon(docker 守护进程) 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。
  • 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
    Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。
    Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。
    在这里插入图片描述
传统虚拟化与容器技术对比

在这里插入图片描述

  • 我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。 每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
  • 而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。
    容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
    在这里插入图片描述
容器是如何工作的

在这里插入图片描述

写时复制技术简介
  • 写入时复制是一种计算机程序设计领域的优化策略。其核心思想是,如果有多个调用者同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这个过程对其他的调用者是透明的(transparently)。此作法的主要优点是如果调用者没有修改该资源,就不会有副本(private copy)被建立,因此多个调用者只是读取操作是可以共享同一份资源。

部署和简单应用

部署过程
  • 搭建yum源:
[root@server1 ~]# vim /etc/yum.repos.d/docker.repo 
[docker]
name=docker
gpgcheck=0
baseurl=http://172.25.254.11/docker
  • 下载docker,开启服务并设置开机自启,以及可以自动补全的包,我们这里用的docker是社区版。
[root@server1 yum.repos.d]# yum install docker-ce -y  
[root@server1 yum.repos.d]# systemctl start docker
[root@server1 yum.repos.d]# systemctl enable docker
[root@server1 yum.repos.d]# docker info  可以看到版本 运行时 内存等信息。
docker 两次tab 自动补全
[root@server1 yum.repos.d]# yum install bash-* -y  如果不能自动补全可以下载这个。退出再登陆
第一个容器
  • 下载镜像,以及导入镜像。
下载镜像:lftp 172.25.254.11:/pub/images> get game2048.tar
[root@server1 ~]# docker load -i game2048.tar  导入镜像
[root@server1 ~]# docker images  查看镜像
[root@server1 ~]# docker run -d --name vm1 -p 80:80 game2048  #-d 后台运行 -p 端口映射 冒号前为宿主机的端口 冒号后为docker容器内部端口 利用该镜像创建容器
[root@server1 ~]# docker ps   查看运行中的容器
 [root@server1 ~]# docker ps -a  查看所有容器
[root@server1 ~]# netstat -antlp  开启了80端口
  • 浏览器中访问http://172.25.11.1/
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值