docker镜像的制作和容器的运行

docker镜像的制作以及容器的运行

前言:docker安装对Linux的内核要求3.8以上版本,可以通过uname -r查询linux内核另一个要求必须运行在64位的操作系统上;现在的docker可以运行在windows系统和Linux系统实现跨平台。

介绍docker:

Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。

说白了,docker是一种用了新颖方式实现的轻量级虚拟机,类似于VM,但是在原理和应用上和VM的差别还是很大的.并且docker的专业叫法是应用容器(Application Container)。

为啥要用容器?

应用容器是个啥样子呢,一个做好的应用容器长得就像一个装好了一组特定应用的虚拟机一样,比如我现在想用mysql,那我就找个装好了mysql的容器就可以了,然后运行起来,我就能使用mysql了。

为啥不能直接安装一个mysql?安装一个SQL Server也可以啊,可是有的时候根据每个人电脑的不同,在安装的时候可能会报出各种各样的错误,万一你的机器中毒了,你的电脑挂了,你所有的服务都需要重新安装.但是有了docker,或者说有了容器就不同了,你就相当于有了一个可以运行起来的虚拟机,只要你能运行容器,mysql的配置就省了.而且如果你想换个电脑,直接把容器”端过来”就可以使用容器里面的服务.

1:(安装docker)

安装docker有两种方式:

(1)使用centos版本提供的docker,现在是docker1.13版本

(2)通过互联网docker的官方下载网站为http://www.hop5.in/yum/el6/hop5.repo最新版本为docker17版本,docker的最新版本和之前的版本跳度较大

在这里使用的是centos提供的docker

(3)docker的17版本分为两种dockerCE:社区版dockerEE:企业版

2:docker镜像:

注:容器的运行离不开镜像

镜像的存在方式分为两种:一种是本地镜像;另一种是仓库镜像

查看镜像的命令:docker  images

3:容器:

容器用来封装任意类型的app,将app变成标准化轻量级的应用程序。差容器的命令: docker  ps  -a

优点:部署和容易扩展;效率高,内核级虚拟化,简单来说四个字:多快好省

4:docker的结构:

C/s结构; c:docker daemon 服务端   s:docker client

Docker daemon 一般在宿主主机后台运行。

Docker client以系统命令的形式存在,用户用docker命令来跟docker daemon 交互。

Docker 守护进程(Docker daemon)

如上图所示,Docker 守护进程运行在一台主机上。用户并不直接和守护进程进行交互,而是通过 Docker 客户端间接和其通信。

Docker 客户端(Docker client)

Docker 客户端,实际上是docker的二进制程序,是用户与 Docker 交互方式。它接收用户指令并且与背后的 Docker 守护进程通信。

5:docker和传统的虚拟化技术对比:

Docker 在如下几个方面具有较大的优势。

更快速的交付和部署

对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

更高效的虚拟化

Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

更轻松的迁移和扩展

Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

更简单的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

对比传统虚拟机总结


特性


容器


虚拟机


启动


秒级


分钟级


硬盘使用


一般为MB


一般为GB


性能


接近原生


弱于


系统支持量


单机支持上千个容器

创建镜像有两种方式:

(1)docker commit 制作

缺点:容易有黑盒操作;不便和用户之间共同分享

(2)dockerfile创建images

首先自定义目录之后编写dockerfile文件

文件格式:

# 注释说明

FROM 基础镜像

MAINTAINER 作者

RUN 更新容器的指令

 :镜像最多为127层否则不会成功为了较少层,可以在更新容器的指令中执行多条指令使用&&符号链接

6:安装docker服务:

1.安装docker :yum -y install docker

2.启动docker :systemctl enable docker

3.导入基础镜像

方法一:

4.将基础镜像加入镜像仓库: docker load --input centos7.tar

5.将基础镜像运行在容器中: docker run -i -t docker.io/centos:latest /bin/bash  // 环境变量,可以不写linux默认是此变量环境

6.在容器中作出修改,更新容器: yum -y install openssh-clients

7.退出容器后将修改后的容器做成镜像 :docker -m “信息” -a “制作人”  容器的ID号  新的镜像名称

方法二:

8.创建dockerfile文件

9.编写dockerfile文件注意文件格式

10.生成新的镜像:docker build -t=”新的进项名称:标签”  . 或者绝对路径

11.导出镜像到本地文件: docker save -o 导出后的包.tar  镜像:标签

12.将本地文件载入镜像:docker load --input 以.tar结尾的镜像

时间: 2024-08-02 00:03:12

docker镜像的制作和容器的运行的相关文章

理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境

1. 基础知识:Linux namespace 的概念 Linux 内核从版本 2.4.19 开始陆续引入了 namespace 的概念.其目的是将某个特定的全局系统资源(global system resource)通过抽象方法使得namespace 中的进程看起来拥有它们自己的隔离的全局系统资源实例(The purpose of each namespace is to wrap a particular global system resource in an abstraction th

asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行

1.构建运行mysql容器,添加数据库user 参考Docker创建运行多个mysql容器,地址 http://www.cnblogs.com/heyangyi/p/9288402.html 添加user数据库,添加tbusers表 2.创建asp.net core webapi 应用程序 参考Docker 为 ASP.NET Core WebApi 应用程序生成 Docker 映像,创建容器并运行,地址 http://www.cnblogs.com/heyangyi/p/9323407.htm

制作可以 SSH 登录的 Docker 镜像

Docker使用系列一我们把镜像源改为了阿里云的,方便后续的操作. 执行这个命令就把源地址改为阿里的: curl https://git.oschina.net/feedao/Docker_shell/raw/start/ali-centos.sh | sh 第一安装Docker: yum -y install docker-io 第二 启动Docker: service docker start 第三安装制作CentOS镜像的工具: yum -y install febootstrap 第四

理解Docker(2):Docker 镜像

对于每个软件,除了它自身的代码以外,它的运行还需要有一个运行环境和依赖.不管这个软件是象往常一样运行在物理机或者虚机之中,还是运行在现在的容器之中,这些都是不变的.在传统环境中,软件在运行之前也需要经过 代码开发->运行环境准备 -> 安装软件 -> 运行软件 等环节,在容器环境中,中间的两个环节被镜像制作过程替代了.也就是说,镜像的制作也包括运行环境准备和安装软件等两个主要环节,以及一些其他环节.因此,Docker 容器镜像其实并没有什么新的理论,只是这过程有了新的方式而已. 镜像(i

使用dockerfile构建docker镜像

一,简单介绍 docker镜像构建方式有两种方式,第一种是启动基础容器之后,进入容器安装所需要的文件,配置,变量等,完成后使用docker commit提交成为一个新的镜像,第二种则是通过编写dockerfile文件,进行镜像制作,使用docker  build命令进行镜像的构建.第一种方式可以看到镜像的生成过程,但是不便于自动化:第二种方式则比较直观,可以结合devops实现自动打包发布,本文则介绍如何利用dockerfile实现docker镜像的制作. Dockerfile描述了组装镜像的步

Docker教程:Docker镜像导出及迁移

http://blog.csdn.net/pipisorry/article/details/51330126 Docker目录分析 安装docker时,默认的安装位置是/var/lib/docker. $sudo ls /var/lib/docker/ aufs  containers  graph  init  linkgraph.db  repositories-aufstmp  trust  volumes repositories-aufs:记录了镜像名称以及对应的Id的json文件

docker镜像创建

关于docker镜像的构建有四种形式:     官方下载    dockerfile创建    yum安装    容器commit生成 作为比较核心的东西,镜像的好坏直接影响docker的使用体验 首先说下四种方式的区别: ①官方下载就是docker pull 自己需要的镜像,当然这个是按照镜像的名字去下载,这里就有一个问题,别人写的镜像跟自己的需求不一定是完全吻合的. ②然后是dockerfile写镜像,这个是在官方镜像的基础上去添加自己想要的东西,构成自己的镜像,个人感觉是一种折中的方案.但

使用Docker镜像

什么是Docker镜像? Docer的镜像是一个只读的文件系统,除了提供容器(进程)运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷.环境变量.用户等).镜像不包含任何动态数据,其内容在构建之后也不会改变. 获取镜像 Docker Hub上有大量的高质量的镜像可以用,从Docker镜像仓库获取镜像的命令是docker pull,其命令格式为 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 镜像名称

Docker镜像创建及建立私有仓库

Docker镜像创建方法 创建镜像的方法有三种,分别是基于已有的镜像创建.基于本地模板创建.基于Dockerfile 创建,下面着重介绍这三种创建镜像的方法. ? 基于已有镜像创建 首先将镜像加载到容器,将容器里面运行的程序及运行环境打包起来生成新的镜像,需要记住该容器的ID号. 命令格式: docker commit [选项] 容器ID/名称 仓库名称:[标签] 常用选项: -m:说明信息 ? -a:作者信息 ? -p:生成过程中停止容器的运行 # docker create -it nick