Java进阶:Docker

1. Docker概述

1.1. Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。即:Docker是一种容器技术,解决软件跨环境迁移的问题。

Docker应用场景

  • Web 应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他的后台应用

使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性。
Java进阶:Docker_第1张图片

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

1.2. Docker容器与传统虚拟机比较

  • 传统虚拟机Java进阶:Docker_第2张图片
    传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如:VirtualBox和VMWare等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。

  • DockerJava进阶:Docker_第3张图片
    Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

1.3. Docker组成部分

Java进阶:Docker_第4张图片

名称

说明

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板。 镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。

Docker 容器(Container)

容器是独立运行的一个或一组应用。镜像相当于类,容器相当于类的实例

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker守护进程

是Docker服务器端进程,负责支撑Docker 容器的运行以及镜像的管理。

Docker 仓库DockerHub(Registry)

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub提供了庞大的镜像集合供使用。用户也可以将自己本地的镜像推送到Docker仓库供其他人下载。

2. Docker安装与启动

2.1. Docker安装

Docker可以运行在MAC、Windows、CentOS、DEBIAN、UBUNTU等操作系统上,提供社区版和企业版,本课程基于CentOS安装Docker。CentOS6对docker支持的不好,使用docker建议使用CentOS7。

以下是在CentOS7中安装Docker的步骤:

# 1、yum 包更新到最新
sudo yum update
# 2、作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依
赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
# 3.1、方案一:使用ustc的(推荐)
sudo yum-config-manager --add-repohttp://mirrors.ustc.edu.cn/dockerce/linux/centos/docker-ce.repo
# 3.2、方案二:使用阿里云(可能失败)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4、 安装docker;出现输入的界面都按 y
sudo yum install docker-ce
# 5、 查看docker版本
docker -v

2.2. 设置ustc镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很
快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker

  1. 编辑文件/etc/docker/daemon.json

    # 执行如下命令:
    mkdir /etc/docker
    vi /etc/docker/daemon.json
    
  2. 在文件中加入下面内容

    {
    	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
    }
    

2.3. Docker启动与停止命令

# 启动docker服务:
systemctl start docker
# 停止docker服务:
systemctl stop docker
# 重启docker服务:
systemctl restart docker
# 查看docker服务状态:
systemctl status docker
# 设置开机启动docker服务:
systemctl enable docker

3. Docker常用命令

3.1. 镜像相关命令

镜像:Docker镜像是由文件系统叠加而成(是一种文件的存储形式);是docker中的核心概念,可以认为镜像就是对某些运行环境或者软件打的包,用户可以从docker仓库中下载基础镜像到本地,比如开发人员可以从docker仓库拉取(下载)一个只包含centos7系统的基础镜像,然后在这个镜像中安装jdk、mysql、Tomcat和自己开发的应用,最后将这些环境打成一个新的镜像。开发人员将这个新的镜像提交给测试人员进行测试,测试人员只需要在测试环境下运行这个镜像就可以了,这样就可以保证开发人员的环境和测试人员的环境完全一致。Java进阶:Docker_第5张图片
Docker提供的关于镜像的操作有:

  • 查看镜像
  • 搜索镜像
  • 拉取镜像
  • 删除镜像

3.1.1. 查看镜像

# 查看镜像可以使用如下命令:
docker images

在这里插入图片描述

  • REPOSITORY:镜像名称
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的创建日期
  • SIZE:镜像大小

3.1.2. 搜索镜像

# 如果你需要从网络中查找需要的镜像,可以通过以下命令搜索
docker search 镜像名称

Java进阶:Docker_第6张图片

  • NAME:镜像名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

3.1.3. 拉取镜像

# 拉取镜像就是从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本
命令如下:
docker pull 镜像名称
# 如拉取centos 7;
docker pull centos:7

Java进阶:Docker_第7张图片

3.1.4. 删除镜像

# 可以按照镜像id删除镜像,命令如下:
docker rmi 镜像id

Java进阶:Docker_第8张图片

  1. docker rmi $IMAGE_ID:删除指定镜像
  2. docker rmi docker images -q:删除所有镜像

3.2. 容器相关命令

容器,也是docker中的核心概念,容器是由镜像运行产生的运行实例。镜像和容器的关系,就如同Java语言中类和对象的关系。

Docker提供的关于容器的操作有:

  • 查看容器
  • 创建容器
  • 启动容器
  • 停止容器
  • 文件拷贝
  • 目录挂载
  • 查看容器ip地址
  • 删除容器

3.2.1. 查看容器

查看正在运行的容器使用命令:docker ps

查看所有容器使用命令:docker ps -a

在这里插入图片描述

3.2.2. 创建并启动容器

可以基于已有的镜像来创建和启动容器,创建与启动容器使用命令:docker run

参数说明:
-i:表示运行容器

-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

–name :为创建的容器命名。

-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)࿰

你可能感兴趣的:(面试,学习路线阿里巴巴,android,前端,后端)