目录
一、什么是Docker
Docker是一个开源的容器化平台,用于打包、部署和运行应用程序。它利用操作系统级别的虚拟化技术,可以将应用程序及其依赖项打包为一个独立的容器,使其可以在任何环境中运行。
可以在不同的操作系统上运行,包括Windows、Linux和Mac。每个容器都是一个独立的运行实例,具有自己的文件系统、进程和网络栈,但与宿主机和其他容器相互隔离。这种隔离性可以确保容器之间互不干扰,提供了更高的安全性。
Docker镜像是一个只读的模板,包含了运行应用程序所需的所有文件和配置。可以通过定义Dockerfile文件来创建镜像,然后使用Docker命令构建和管理这些镜像。
Docker还提供了一套强大的工具和功能,用于管理和监控容器的生命周期。可以使用Docker命令来启动、停止、重启和删除容器,以及查看容器的日志和状态。Docker还支持容器编排和集群管理,可以在多个主机上部署和管理容器集群,提高应用程序的可伸缩性和高可用性。
总的来说,Docker提供了一种简单、快速和可靠的方法来打包、部署和运行应用程序。可以提高开发效率、加快应用程序的交付速度,并提供一致和可重复的开发、测试和生产环境。
二、特点
- **轻量级:**Docker是轻量级的,相对于传统的虚拟机,它们需要更少的资源,可以更快地启动和停止。
- 可移植性:Docker容器可以在不同的操作系统和云平台上运行,从而实现了应用程序的可移植性。
- 简单易用: Docker提供了简单易用的命令行工具和
API
,使得开发人员可以轻松地构建、打包、运输和部署应用程序。 - **隔离性:**Docker容器提供了隔离性,使得不同的容器之间相互独立,从而避免了应用程序之间的冲突和干扰。
- **可扩展性:**Docker容器可以很容易地进行扩展,从而满足了应用程序的需求。
- **安全性:**Docker容器提供了安全的环境,使得应用程序可以在安全的环境中运行,从而保障了应用程序的安全性。
三、Docker与虚拟机技术的区别
- 虚拟化级别 **:**传统的虚拟机技术通过在物理主机上运行一个完整的操作系统来实现虚拟化。每个虚拟机都有自己的内核、操作系统和应用程序,它们之间是完全独立的。而Docker使用了操作系统级别的虚拟化技术,将应用程序及其依赖项打包为一个独立的容器,容器共享宿主机的操作系统和内核,因此更加轻量级和高效。
- **资源占用:**传统虚拟机技术需要为每个虚拟机分配一定的计算资源和内存,并且每个虚拟机都需要运行一个完整的操作系统,因此会占用较多的计算资源。而Docker容器是轻量级的,共享宿主机的操作系统和内核,因此可以更高效地利用计算资源。
- **启动速度:**传统虚拟机技术需要启动一个完整的操作系统,需要较长的启动时间。而Docker容器是基于镜像启动的,启动速度非常快,通常只需几秒钟即可启动一个容器。
- **系统管理:**传统虚拟机技术需要单独管理每个虚拟机的操作系统和应用程序,需要进行独立的更新、配置和维护。而Docker容器可以通过定义Dockerfile文件来创建镜像,镜像可以进行版本控制和共享,容器可以随时启动、停止和迁移,简化了系统管理和维护的工作。
Docker相对于传统的虚拟机技术更加轻量级、高效和灵活,可以提供更快的启动速度和更高的资源利用率。它在容器化应用程序方面提供了一种简单、快速和可靠的解决方案,并在开发、测试和生产环境中提供了一致性和可重复性。
**实际案例:**以springcloud微服务为例
- 传统虚拟化方式 :7个服务部署需要7台
Linux
服务器 - Docker虚拟化方式 :7个服务部署只需要1台
Linux
服务器上安装docker并运行7个容器
四、Docker的核心概念
Docker大部分的操作都围绕着它的核心概念: 镜像、容器、仓库、Dockerfile和服务。
-
**镜像(Image):**镜像是Docker的核心概念,它是一个只读的模板,包含了运行应用程序所需的所有文件和配置。镜像可以用来创建容器。Docker镜像可以通过Dockerfile文件定义,其中包含了构建镜像所需的指令和配置。
-
**容器(Container):**容器是从镜像创建的运行实例。容器是一个独立且可隔离的运行环境,包含了应用程序、其依赖项和配置。容器可以启动、停止、重启和删除。容器之间相互隔离,但可以与宿主机和其他容器进行通信。
-
**仓库(Registry):**仓库是用于存储和共享Docker镜像的地方。Docker Hub是最常用的公共仓库,提供了大量的官方和社区维护的镜像。除了公共仓库外,还可以搭建私有仓库,用于存储和管理自己的镜像。
-
**Dockerfile:**Dockerfile是用于定义Docker镜像的文本文件。它包含了一系列的指令和配置,用于构建和配置镜像。通过编写Dockerfile,开发人员可以定义应用程序运行所需的环境、依赖项和配置,使得镜像的构建和管理更加简单和可重复。
-
**服务(Service):**服务是用于在分布式环境中部署和管理容器的概念。通过定义服务,可以在多个主机上运行和管理多个容器,实现高可用性和伸缩性。Dock
Docker仓库与仓库注册服务器的区别
Docker仓库 ( Repository )和仓库注册服务器 ( Registry )是Docker中相关的两个概念,区别如下:
-
**仓库注册服务器:**仓库注册服务器是Docker仓库的底层实现,它负责存储和管理Docker镜像。每个仓库注册服务器都有一个唯一的地址,用于标识和访问该仓库。Docker Hub是一个公共的仓库注册服务器,也可以搭建私有的仓库注册服务器。搭建私有仓库注册服务器可以提供更好的安全性和控制,适用于组织内部的镜像管理和共享。
-
**Docker仓库:**Docker仓库是一个存储和共享Docker镜像的地方。它类似于软件仓库,允许用户上传、下载和管理Docker镜像。在Docker中,默认使用的公共仓库是Docker Hub,它包含了大量的官方和社区维护的镜像供用户使用。用户可以通过Docker命令从Docker仓库中拉取镜像到本地,也可以将自己构建的镜像推送到仓库中。
Docker仓库是用户可以访问和使用的集中存储和共享镜像的平台,而仓库注册服务器是底层实现这个仓库的服务器。用户可以从仓库中拉取镜像到本地使用,也可以将自己构建的镜像推送到仓库中共享。公共仓库注册服务器是Docker Hub,也可以搭建私有的仓库注册服务器。
五、CentOS7在线安装Docker
安装配置
-
内核版本信息检查
uname -r
-
卸载可能存在的旧版本
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
注:旧版本的
docker
叫做docker
或者docker-engine
,如果有安装,先卸载其以及其依赖,新版本的docker
叫做docker-ce
。
docker-ce
(社区版,免费)
docker-ee
(专业版,收费)
-
安装必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
安装依赖软件:
-
yum-utils提供yum-config-manager包,用来管理yum配置文件;
-
lv2和device-mapper-persistent-data为dockerdevicemapper存储设备的必须依赖;
-
添加
docker-ce
安装源yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
默认开启的是stable稳定版仓库,如果想要安装test测试版或者是边缘版本可使用如下命令开启相关模式。
# 边缘版本
yum-config-manager --enable docker-ce-edge
# test测试版
yum-config-manager --enable docker-ce-test
关闭的话只需要将--enable参数换成--disable(可选)
-
更新yum缓存
yum makecache fast
- 安装docker-CE
默认安装的是最新版本的稳定版。
yum -y install docker-ce
查看版本列表请使用如下命令:
yum list docker-ce --showduplicates | sort -r
如果要安装特定版本的docker-CE请使用如下命令格式:
yum install docker-ce-<VERSION STRING>
- 配置加速器
国内从Docker Hub
下载镜像速度很慢,我们可以配置阿里云专属加速器来解决。通过浏览器访问并登陆: 阿里云-计算,为了无法计算的价值
登陆后,进入阿里云"控制台",搜索"容器镜像服务"
进入容器镜像服务 ACR 后点击管理控制台 进入 容器镜像服务
左侧菜单"镜像工具",点击镜像加速器,如下:
将容器右边的"加速器地址"复制下来即可。
修改docker相关配置,配置镜像加速器,如下:
# 创建目录
mkdir -p /etc/docker
# 配置镜像加速器
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://rhgi3sfn.mirror.aliyuncs.com"]
}
EOF
最后,重载docker服务并重启。
# 重载服务
systemctl daemon-reload
# 重启服务
systemctl restart docker
- 验证
运行第一个容器(经典的hello world)。
docker run hello-world
输入以上命令后,窗口有输出,表示docker安装成功 。
卸载
移除Docker:
yum remove docker-ce
删除Docker的安装目录:
rm -rf /var/lib/docker
验证是否删除成功:
docker info
-bash: cd: /usr/bin/docker: 不是目录
我们可以看到已经无法找到 docker 安装目录,证明卸载成功 。