博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌

Java知识图谱点击链接:体系化学习Java(Java面试专题)
💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

手把手教你入门 Docker_docker


文章目录

  • 1、什么是 Docker
  • 2、Docker 和虚拟化有什么区别
  • 3、Docker 架构
  • 4、Docker 安装
  • 4.1、 卸载旧版本的 Docker(如果有):
  • 4.2、 安装 Docker 所需的依赖项:
  • 4.3、 添加 Docker 的官方 YUM 仓库:
  • 4.4、安装 Docker
  • 4.5、启动 Docker 服务:
  • 4.6、验证 Docker 是否安装成功:
  • 5、仓库配置
  • 5.1、公共仓库配置
  • 5.2、私有仓库配置
  • 6、镜像的查看和拉取
  • 6.1、拉取hello world
  • 6.2、查看镜像
  • 6.3、运行这个镜像


1、什么是 Docker

手把手教你入门 Docker_docker_02

Docker 是一种容器化平台,它可以让开发人员和系统管理员轻松地创建、部署和运行应用程序。Docker 可以将应用程序及其依赖项打包成一个独立的容器,该容器可以在任何环境中运行,而不需要修改应用程序或其依赖项。Docker 的目标是帮助开发人员和系统管理员更快、更可靠地构建、部署和运行应用程序。

Docker 的容器化技术可以让开发人员将应用程序及其依赖项打包成一个独立的容器,该容器可以在任何环境中运行。这意味着开发人员可以在开发和测试环境中构建应用程序,然后将其打包成一个容器,然后将其部署到生产环境中,而无需担心环境之间的不兼容性问题。

Docker 还提供了一些工具和服务,可以帮助开发人员和系统管理员更轻松地管理和部署容器化应用程序。这些工具包括 Docker Compose、Docker Swarm 和 Kubernetes 等。这些工具可以帮助开发人员和系统管理员更轻松地管理容器,并自动化容器的部署和管理过程,从而提高生产力和效率。

2、Docker 和虚拟化有什么区别

手把手教你入门 Docker_java_03

Docker 和虚拟机的最大区别在于它们的虚拟化方式不同。虚拟机是一种完全虚拟化技术,它模拟出一套完整的硬件环境,包括 CPU、内存、网络、存储等,然后在这个虚拟的硬件环境中运行操作系统和应用程序。而 Docker 则是一种容器化技术,它在宿主机的操作系统上创建一个隔离的用户空间,然后在这个用户空间中运行应用程序。因此,Docker 比虚拟机更轻量级、更快速、更灵活,可以更高效地利用物理资源。此外,Docker 容器的启动速度也比虚拟机快很多,通常只需要几秒钟即可启动一个容器,而虚拟机则需要数分钟。

Docker 和虚拟化的区别主要有以下几点:

  1. 虚拟化技术不同:虚拟机是一种完全虚拟化技术,它模拟出一套完整的硬件环境,包括 CPU、内存、网络、存储等,然后在这个虚拟的硬件环境中运行操作系统和应用程序。而 Docker 则是一种容器化技术,它在宿主机的操作系统上创建一个隔离的用户空间,然后在这个用户空间中运行应用程序。
  2. 资源占用不同:由于虚拟机需要模拟出一套完整的硬件环境,因此它需要占用更多的资源,包括 CPU、内存、磁盘空间等。而 Docker 则可以共享宿主机的操作系统和硬件资源,因此它的资源占用更少。
  3. 启动速度不同:由于虚拟机需要启动一个完整的操作系统,因此它的启动速度相对较慢,通常需要数分钟。而 Docker 容器的启动速度非常快,通常只需要几秒钟即可启动一个容器。
  4. 部署方式不同:虚拟机需要将整个虚拟硬件环境打包成一个镜像,然后在目标机器上安装虚拟化软件并加载镜像。而 Docker 可以将应用程序及其依赖项打包成一个独立的容器,然后在目标机器上直接运行容器即可。
  5. 隔离性不同:虚拟机是完全隔离的,每个虚拟机都有自己独立的操作系统和硬件环境。而 Docker 容器是在宿主机的操作系统上创建的隔离用户空间,容器之间共享宿主机的内核,因此容器之间的隔离性相对较弱。

3、Docker 架构

手把手教你入门 Docker_私有仓库_04


Docker 架构主要由以下几个组件组成:

  1. Docker 客户端:Docker 客户端是用户与 Docker 交互的主要方式,用户可以通过命令行或者图形界面等方式使用 Docker 客户端来执行各种操作。
  2. Docker 服务端:Docker 服务端是 Docker 的主要组成部分,它负责管理 Docker 的各种资源,包括镜像、容器、网络和存储等。Docker 服务端还包括 Docker 引擎,它是 Docker 运行的核心组件,负责创建和管理容器等操作。
  3. Docker 镜像:Docker 镜像是一个只读的模板,它包含了用于创建 Docker 容器的文件系统、应用程序和依赖项等。Docker 镜像可以通过 Dockerfile 文件或者从 Docker Hub 等镜像仓库中获取。
  4. Docker 容器:Docker 容器是 Docker 运行的实例,它基于 Docker 镜像创建,包含了运行应用程序所需的所有文件、配置和依赖项等。Docker 容器是轻量级的,可以快速启动和停止,同时也支持容器之间的数据共享和网络通信等操作。
  5. Docker 仓库:Docker 仓库是用于存储和管理 Docker 镜像的地方,包括公共仓库和私有仓库两种类型。Docker Hub 是 Docker 官方提供的公共仓库,用户可以在其中获取和分享 Docker 镜像。私有仓库则是用户自己搭建的,用于存储和管理自己的 Docker 镜像。

以上是 Docker 架构的主要组件,它们协同工作,为用户提供了一种高效、灵活和可移植的容器化解决方案。

4、Docker 安装

我们这里以 CentOS 为例,基于 CentOS 的操作系统,可以按照以下步骤来安装 Docker:

4.1、 卸载旧版本的 Docker(如果有):

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

手把手教你入门 Docker_Docker_05

4.2、 安装 Docker 所需的依赖项:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

手把手教你入门 Docker_docker_06

4.3、 添加 Docker 的官方 YUM 仓库:

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

手把手教你入门 Docker_容器_07

4.4、安装 Docker

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

手把手教你入门 Docker_Docker_08

4.5、启动 Docker 服务:

sudo systemctl start docker

手把手教你入门 Docker_Docker_09

4.6、验证 Docker 是否安装成功:

sudo docker run hello-world

手把手教你入门 Docker_java_10


以上是在 CentOS 系统下安装 Docker 的步骤和命令

5、仓库配置

Docker 安装好以后,我们就要开始为拉取镜像准备了;国内从 DockerHub 拉取镜像有时会特别慢,此时可以配置镜像加速器。

Docker 仓库配置包括公共仓库和私有仓库两种类型。

5.1、公共仓库配置

Docker 官方提供了公共仓库 Docker Hub,用户可以在其中获取和分享 Docker 镜像。在使用 Docker 时,默认会从 Docker Hub 中获取镜像。

1.Docker 官方和国内很多云服务商都提供了国内加速器服务,比如:阿里云的加速器
https://help.aliyun.com/document_detail/60750.html

2.网易加速器:http://hub-mirror.c.163.com

3.Docker官方中国加速器:https://registry.docker-cn.com

4.ustc 的镜像:https://docker.mirrors.ustc.edu.cn

5.daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

5.2、私有仓库配置

私有仓库则是用户自己搭建的,用于存储和管理自己的 Docker 镜像。私有仓库可以在内网中使用,也可以通过外网访问。搭建私有仓库的步骤如下:

1. 安装 Docker Registry

Docker Registry 是 Docker 官方提供的镜像仓库,可以用来搭建私有仓库。可以通过以下命令来拉取 Docker Registry 镜像:

docker pull registry

2. 运行 Docker Registry 容器

可以通过以下命令来运行 Docker Registry 容器:

docker run -d -p 5000:5000 --name registry registry

其中, -p 5000:5000 表示将容器内部的 5000 端口映射到主机的 5000 端口, --name registry 表示指定容器的名称为 registry。

3. 配置 Docker 客户端

在使用私有仓库时,需要在 Docker 客户端中配置私有仓库的地址。可以通过以下命令来配置:

echo '{"insecure-registries":["<私有仓库地址>:<端口号>"]}' > /etc/docker/daemon.json

其中, <私有仓库地址> 表示私有仓库的地址, <端口号> 表示私有仓库的端口号。配置完成后,需要重启 Docker 服务:

systemctl restart docker

4. 推送和拉取镜像

在配置完成后,就可以使用 docker push 命令来推送镜像到私有仓库,使用 docker pull 命令来从私有仓库拉取镜像了。例如:

docker tag <镜像名称> <私有仓库地址>:<端口号>/<镜像名称>
docker push <私有仓库地址>:<端口号>/<镜像名称>
docker pull <私有仓库地址>:<端口号>/<镜像名称>

其中, <镜像名称> 表示要推送或拉取的镜像名称, <私有仓库地址> 表示私有仓库的地址, <端口号> 表示私有仓库的端口号。

6、镜像的查看和拉取

6.1、拉取hello world

docker pull hello-world:latest

手把手教你入门 Docker_容器_11

6.2、查看镜像

docker images

手把手教你入门 Docker_容器_12

6.3、运行这个镜像

docker run hello-world

手把手教你入门 Docker_私有仓库_13


手把手教你入门 Docker_java_14