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   //删除容器
相关推荐
mit6.8246 分钟前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
鹏大师运维7 分钟前
聊聊开源的虚拟化平台--PVE
linux·开源·虚拟化·虚拟机·pve·存储·nfs
watermelonoops14 分钟前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin
阿甘知识库37 分钟前
宝塔面板跨服务器数据同步教程:双机备份零停机
android·运维·服务器·备份·同步·宝塔面板·建站
滴水之功1 小时前
VMware OpenWrt怎么桥接模式联网
linux·openwrt
saynaihe1 小时前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
ldinvicible1 小时前
How to run Flutter on an Embedded Device
linux
YRr YRr2 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
G_whang2 小时前
centos7下docker 容器实现redis主从同步
redis·docker·容器
认真学习的小雅兰.2 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker