Docker核心概念与实战

Docker核心概念

Docker概述

Docker是一个用于开发,发布和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

Docker与虚拟机比较

特性容器虚拟机
启动速度秒级分钟级
性能接近原生较弱
内存代价很小较多
硬盘使用一般为MB一般为GB
运行密度单机支持上千个容器一般几十个
隔离性安全隔离完全隔离
迁移性优秀一般

Docker 引擎

Docker Engine是具有以下主要组件的客户端-服务器应用程序:

  • 服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
  • REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。
  • 命令行界面(CLI)客户端(docker命令)。
    在这里插入图片描述

Docker 架构

在这里插入图片描述

Docker引擎

Docker使用客户端-服务器架构
Docker客户端是用户与Docker交互的主要方式,与Docker守护进程(Docker引擎)进行通信
该守护进程完成了构建,运行和分发Docker容器的繁重工作
Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程
序。
Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。
Docker守护进程侦听Docker API请求并管理Docker对象,例如镜像,容器,网络和卷等
守护程序还可以与其他守护程序通信以管理Docker服务

Docker镜像

Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。
镜像是基于联合(Union)文件 系统的一种层式的结构,由一系列指令一步一步构建出来。
比如:
添加一个文件;
执行一个命令;
打开一个端口。
镜像是创建Docker容器的基础。通过版本管理和增量的文件系统, Docker提供了一套十分简单的机制
来创建和更新现有的镜像,用户可以从网上下载一个已经做好的应用镜像,并直接使用
我们可以利用Dockerfile构建自己的镜像。

Docker容器

Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是镜像的一个运行实例。
可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。
可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间
等)以及运行在其中的应用程序打包而成的盒子。
容器是基于镜像启动起来的,容 器中可以运行一个或多个进程。
镜像是Docker生命周期 中的构建或打包阶段,而容器则是启动或执行阶段。
镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

Docker仓库

Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。
仓库注册服务器(Registry)是存放仓库的地方,其上往往存放着多个仓库
每个仓库集中存放某一类镜像,往往包 括多个镜像文件,通过不同的标签(tag)来区分
根据所存储的镜像公开分享与否,Docker仓库可以分为公开仓库 (Public)和私有仓库(Private)两种形式。
目前,最大的公开仓库是 官方提供的Docker Hub,其中存放了数量庞大的镜像供用户下载。
国内不少云服务提供商(如时速云、阿里云等)也提供了仓库的本地源,可以提供稳定的国内访问。
Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。

Docker快速实战

Docker环境安装

安装官方yum源

yum install -y yum-utils 

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker- ce.repo

安装Docker引擎

yum install -y docker-ce docker-ce-cli containerd.io

启动docker

#开机启动 
systemctl enable docker 
#启动 
systemctl start docker 
#查看Docker状态 
docker info

Docker基本操作

镜像基本操作

拉取镜像

#如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。
docker pull NAME[:TAG]
#例如拉取mysql5.7.30
docker pull mysql:5.7.30

查看镜像信息

docker images
$ sudo docker images
REPOSITORY       TAG      IMAGE ID      CREATED      VIRTUAL SIZE
ubuntu           12.04    74fe38d11401  4 weeks ago  209.6 MB
ubuntu           precise  74fe38d11401  4 weeks ago  209.6 MB
ubuntu           14.04    99ec81b80c55  4 weeks ago  266 MB
ubuntu           latest   99ec81b80c55  4 weeks ago  266 MB
ubuntu           trusty   99ec81b80c55  4 weeks ago  266 MB
...

在列出信息中,可以看到几个字段信息

  • 来自于哪个仓库,比如 ubuntu
  • 镜像的标记,比如 14.04
  • 它的 ID 号(唯一)
  • 创建时间
  • 镜像大小

删除镜像

#根据名称删除
docker rmi NAME[:TAG]
#根据ID删除
docker rmi IMAGE ID

上传镜像(默认上传到Docker Hub官方仓库,一般使用中都会上传到私有仓库)

docker push NAME[:TAG]
容器基本操作

创建容器

#参数
#-i 交互模式
#-t 伪终端
#-d 后台运行
#-rm 容器退出后是否自动删除
docker create NAME[:TAG]

启动容器

docker start ID

查看容器状态

#查看运行的容器 
docker ps 
#查看所有容器 
docker ps -a

新建并启动容器(相当于 docker create+docker start,一般使用这个)

docker run -it --rm --network host NAME[:TAG]

终止容器

docker stop ce554267d7a4 -t 5 
docker kill ce554267d7a4

处于终止状态的容器,可以通过docker start命令来重新启动

docker start ID

docker restart命令会将一个运行态的容器先终止,然后再重新启动

docker restart ID

进入容器

docker exec -it ID /bin/bash

查看容器

docker stats ID

删除容器

docker rm ID

docker rm命令只能删除处于终止或退出状态的容器,并不能删除还处于运行状态的容器,要直接删除一个运行中的容器,可以添加-f参数。Docker会先 发送SIGKILL信号给容器,终止其中的应用,之后强行删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值