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 的远程仓库和本地仓库的作用也是类似的。

相关推荐
浮游本尊1 天前
Java学习第22天 - 云原生与容器化
java
渣哥1 天前
原来 Java 里线程安全集合有这么多种
java
间彧1 天前
Spring Boot集成Spring Security完整指南
java
间彧1 天前
Spring Secutiy基本原理及工作流程
java
Java水解1 天前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆1 天前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学1 天前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole1 天前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端
华仔啊1 天前
基于 RuoYi-Vue 轻松实现单用户登录功能,亲测有效
java·vue.js·后端