Linux--Docker容器引擎

1、Docker是什么

Docker是在Linux容器里运行应用的开源工具,是一种轻量级的 "虚拟机"。诞生于2013年,最 初的发起者是dotCloud公司。后来改名为Docker Inc,专注于Docker相关技术和产品的开发。Docker 项目目前已经加人啊Linux基金会,全部开源代码均在https://github.com/docker上进行相关维护官网地址为https://www.docker.com/,有相关文档可以参考。现在Docker 与 OpenStack同为最受欢迎的云计算开源项目。

Docker 的Logo设计为蓝色鲸鱼,拖着许多集装箱。如图1.1所示,鲸鱼可以看作宿主机,而集装箱可以理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。正如 Docker的设计宗旨一 样:Build、Ship and Run Any App、Anywhere,即通过对应用组件的封装、发布、部署,运行等生命周期的管理,达到应用组件级别的 "一次封装,到处运行" 的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

2、Docker和虚拟机的区别

作为一种轻量级的虚拟化方式,Docker与传统虚拟机相比具有显著的优势。

Docker容器很快,启动和停止可以在秒级实现,比传统虚拟机要快很多;Docker核心解决的问题是利用容器来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源, 所以 Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,从而在保证应用性能的同时,减小系统开销,使得在一台主机上同时运行数千个Docker容器成为可能;Docker操作方便,还可以通过 Dockerfile配置文件支持灵活的自动化创建和部署。表1-1对使用Docker容器技术与传统虚拟化技术的特性进行了比较。

1.1.2 Docker的核心概念

1、镜像

Docker的镜像(image)是创建容器的基础,类似虚拟机的快照.可以理解为是一个面向 Docker 容器引擎的只读模板。比如,一个镜像可以是一个完整的CentOS操作系统环境,称为一个CentOS 镜像:可以是一个安装了MySQL的应用程序,称为一个MySQL镜像,等等。

Docker提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经做好的应用镜 像来直接使用。

2、容器

Docker的容器(Container)是从镜像创建的运行实例。它可以被启动、停止和删除。所创建的每 一个容器都是相互隔离,互不可见,可以保证安全性的平台。可以把容器看作一个简易版的Linux环境,Docker利用容器来运行和隔离应用。

3、仓库

Docker仓库(Repository)是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用 push 命令将它上传到公有仓库(Public)或者私有仓库(Private),这样一来当下次要在另外一台机器上使用这个镜像时,只需要从仓库上拉取下来就可以了。

仓库注册服务器(Registry)是存放仓库的地方,其中包含了多个仓库,每个仓库集中存放某一 类镜像,并且使用不同的标签(Tag)来区分它们。目前最大的公共仓库是Docker Hub,存放了数量庞大的镜像供用户下载使用。

安装Docker的前提操作

能ping通即可

复制代码
[root@node2 ~]# ping www.baidu.com

下载以下插件需官网yum源,把原来的移回来即可 。安装完成后启动Docker并设置为开机自动启动。

复制代码
[root@node3 ~]# yum -y install epel-release


[root@node3 ~]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/loacl.repo

查看源

复制代码
[root@node3 yum.repos.d]# yum -y install docker-ce


[root@node3 ~]# docker search centos7   //查询centos7 源



[root@node3 ~]# docker pull ansible/centos7-ansible   //下载centos源

查看镜像信息

复制代码
[root@node3 ~]# docker images

可以用 dockertag 命令来为本地的镜像添加新的标签

复制代码
[root@node3 ~]# docker tag ansible/centos7-ansible:latest centos-01

删除镜像

复制代码
[root@node3 ~]# docker rmi ansible/centos7-ansible:latest 

存出镜像和载入镜像

当需要把一台机器上的镜像迁移到另一台机器上的时候,需要将镜像保存成为本地文件,这一过程叫做存出镜像,可以使用docker save命令进行存出操作。之后就可以复制该文件到其他机器。

复制代码
[root@node3 ~]# docker save -o centos7 centos-01

将存出的镜像从A机器复制到B机器.需要在B机器上使用该镜像.就可以将该导出文件导入到B机器的镜像库中,这一过程叫作载入镜像.

复制代码
[root@node3 ~]# docker load --input centos7 

新建一个容器

复制代码
[root@node3 ~]# docker create -it centos-01 /bin/bash

可以使用docker ps命令来查看所有容器的运行状态。添加-a选项可以列出系统最近一次启动的容器。

启动容器

复制代码
[root@node3 ~]# docker start 8158893a3a3d

查询启动状态

停止容器

复制代码
[root@node3 ~]# docker stop 8158893a3a3d

进入容器

复制代码
[root@node3 ~]# docker exec -it 8158893a3a3d /bin/bash

通过 exit 退出

容器的导出与导入.

用户可以将任何一个 Docker容器从一台机器迁移到另一台机器,在迁移过程中,首先需要将已经创建好的容器导出为文件,可以使用docker export命令实现,无论这个容器是处于运行状态还是停止状态均可导出。导出之后可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

例如,导出8158893a3a3d容器到文件centos7-01

复制代码
[root@node3 ~]# docker export 8158893a3a3d>centos7-01

导出的文件从A机器复制到B机器,之后使用docker import命令导入,成为镜像。命令格式:

复制代码
[root@node3 ~]# cat centos7-01 | docker import - centos7

容器删除

复制代码
[root@node3 ~]# docker stop 8158893a3a3d    //先停止容器

[root@node3 ~]# docker rm 8158893a3a3d   //删除容器
相关推荐
报错小能手27 分钟前
讲讲libevent底层机制
linux·服务器
阿星智力囊1 小时前
Thinkphp6+nginx环境报错信息不显示,接口直接报500和CORS跨域(错误的引导方向),真坑啊
运维·nginx·php·thinkphp6
i***22072 小时前
springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice
spring boot·后端·docker
代码AC不AC3 小时前
【Linux】计算机的基石:从冯·诺依曼体系结构到操作系统管理
linux·操作系统·冯诺依曼体系结构
大柏怎么被偷了3 小时前
【Linux】进程等待
linux·运维·服务器
云和数据.ChenGuang4 小时前
运维面试题之oracle和mysql单表最大容量
运维·mysql·oracle
偶像你挑的噻4 小时前
12-Linux驱动开发- SPI子系统
linux·驱动开发·stm32·嵌入式硬件
酷柚易汛智推官4 小时前
Fastlane赋能移动研发:从全流程自动化到工程效能升级
运维·自动化·酷柚易汛
落798.5 小时前
Genlogin × Bright Data,一键解锁自动化采集的高成功率方案
运维·自动化·数据采集·亮数据
羑悻的小杀马特5 小时前
轻量跨云·掌控无界:Portainer CE + cpolar 让远程容器运维像点外卖一样简单——免复杂配置,安全直达对应集群
运维·网络·安全·docker·cpolar