Docker实战

Docker 介绍

[什么是 Docker?](#什么是 Docker?)

说实话关于 Docker 是什么并不太好说,下面我通过四点向你说明 Docker 到底是个什么东西。

  • Docker 是世界领先的软件容器平台,基于 Go 语言 进行开发实现。
  • Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放开发人员。
  • 用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
  • Docker 可以对进程进行封装隔离,属于操作系统层面的虚拟化技术。 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。

官网地址:https://www.docker.com/

[为什么要用 Docker?](#为什么要用 Docker?)

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

传统的开发流程中,我们的项目通常需要使用 MySQL、Redis、FastDFS 等等环境,这些环境都是需要我们手动去进行下载并配置的,安装配置流程极其复杂,而且不同系统下的操作也不一样。

Docker 的出现完美地解决了这一问题,我们可以在容器中安装 MySQL、Redis 等软件环境,使得应用和环境架构分开,它的优势在于:

  1. 一致的运行环境,能够更轻松地迁移
  2. 对进程进行封装隔离,容器与容器之间互不影响,更高效地利用系统资源
  3. 可以通过镜像复制多个一致的容器

另外,《Docker 从入门到实践》 这本开源书籍中也已经给出了使用 Docker 的原因。

Docker 的安装

Windows

接下来对 Docker 进行安装,以 Windows 系统为例,访问 Docker 的官网:

然后点击Get Started

在此处点击Download for Windows即可进行下载。

如果你的电脑是Windows 10 64位专业版的操作系统,则在安装 Docker 之前需要开启一下Hyper-V,开启方式如下。打开控制面板,选择程序:

点击启用或关闭Windows功能

勾选上Hyper-V,点击确定即可:

完成更改后需要重启一下计算机。

开启了Hyper-V后,我们就可以对 Docker 进行安装了,打开安装程序后,等待片刻点击Ok即可:

安装完成后,我们仍然需要重启计算机,重启后,若提示如下内容:

它的意思是询问我们是否使用 WSL2,这是基于 Windows 的一个 Linux 子系统,这里我们取消即可,它就会使用我们之前勾选的Hyper-V虚拟机。

因为是图形界面的操作,这里就不介绍 Docker Desktop 的具体用法了。

Mac

直接使用 Homebrew 安装即可

brew install --cask docker

Linux

下面来看看 Linux 中如何安装 Docker,这里以 CentOS7 为例。

在测试或开发环境中,Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,执行这个脚本后就会自动地将一切准备工作做好,并且把 Docker 的稳定版本安装在系统中。

curl -fsSL get.docker.com -o get-docker.sh

sh get-docker.sh --mirror Aliyun

安装完成后直接启动服务:

systemctl start docker

推荐设置开机自启,执行指令:

systemctl enable docker

[Docker 中的几个概念](#Docker 中的几个概念)

在正式学习 Docker 之前,我们需要了解 Docker 中的几个核心概念:

镜像

镜像就是一个只读的模板,镜像可以用来创建 Docker 容器,一个镜像可以创建多个容器

容器

容器是用镜像创建的运行实例,Docker 利用容器独立运行一个或一组应用。它可以被启动、开始、停止、删除,每个容器都是相互隔离的、保证安全的平台。 可以把容器看作是一个简易的 Linux 环境和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的

仓库

仓库是集中存放镜像文件的场所。仓库和仓库注册服务器是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签。 仓库分为公开仓库和私有仓库两种形式,最大的公开仓库是 DockerHub,存放了数量庞大的镜像供用户下载,国内的公开仓库有阿里云、网易云等

总结

通俗点说,一个镜像就代表一个软件;而基于某个镜像运行就是生成一个程序实例,这个程序实例就是容器;而仓库是用来存储 Docker 中所有镜像的。

其中仓库又分为远程仓库和本地仓库,和 Maven 类似,倘若每次都从远程下载依赖,则会大大降低效率,为此,Maven 的策略是第一次访问依赖时,将其下载到本地仓库,第二次、第三次使用时直接用本地仓库的依赖即可,Docker 的远程仓库和本地仓库的作用也是类似的。

相关推荐
码农阿豪几秒前
从零开始搭建高效文档管理系统Moredoc打造私人某度文库
java·coplar
毕业设计-013 分钟前
0042.大学校园生活信息平台+论文
java·spring boot·后端·毕业设计·源代码管理
等一场春雨1 小时前
Java 23 集合框架详解:ArrayList、LinkedList、Vector
java·开发语言
Hello Dam1 小时前
分布式环境下定时任务扫描时间段模板创建可预订时间段
java·定时任务·幂等性·redis管道·mysql流式查询
javaweiming1 小时前
根据中文名称首字母进行分组
java·汉字转拼音
水宝的滚动歌词7 小时前
设计模式之建造者模式
java·设计模式·建造者模式
孤蓬&听雨7 小时前
Java SpringBoot使用Apache POI导入导出Excel文件
java·spring boot·apache·excel导出·excel导入
紫琪软件工作室8 小时前
自定义有序Map
java
刘婉晴8 小时前
【蓝桥杯研究生组】第14届Java试题答案整理
java·蓝桥杯
boy快快长大8 小时前
通过Dockerfile来实现项目可以指定读取不同环境的yml包
docker