SpringBoot之旅第七篇-Docker

一、引言

记得上大三时,要给微机房电脑安装系统,除了原生的操作系统外,还要另外安装一些必要的开发软件,如果每台电脑都重新去安装的话工作量就很大了,这个时候就使用了windows镜像系统,我们将要安装的软件装好打包成一个镜像,其他电脑只要装这个镜像就可以了,这样工作量就减少了很多。Docker跟这个镜像并不是一回事,但是思想是相同的。

我们在一台服务器中下载、安装、配置好Mysql,在另外一台服务器中又得重新下载、安装、配置,这样很麻烦也容易出现一些错误。

这个时候Docker就派上用场了,我们可以将安装配置好的软件打包成一个镜像,然后其他的服务器中只要安装了Docker,就可以运行镜像,运行成功后的镜像我们称为容器,每个容器之间使用了沙箱隔离机制,这就是Docker的作用。

Docker是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker是一个轻量级容器技术,它不是一个虚拟机技术,却实现了虚拟机技术的资源隔离,而且他的性能要比虚拟机技术高。

Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操作系统,安装好后什么都有了。

二、核心概念

先学习几个核心概念

  • 主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上)。
  • 客户端(Client):连接docker主机进行操作。
  • 仓库(Registry):用来保存各种打包好的软件镜像(包括公共仓库和私有仓库)。
  • 镜像(Images):软件打包好的镜像,放在docker仓库中。
  • 容器(Container):镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用。

我们使用Docker只需要按照以下步骤:

  1. 安装Docker。
  2. 去Docker仓库找到这个软件对应的镜像。
  3. 使用Docker运行这个镜像,这个镜像就会生成一个Docker容器。
  4. 对容器的启动停止就是对软件的启动停止

三、安装Docker

接下来我们来在Linux安装Docker,首先我们必须先安装好Linux虚拟机,这个在此不赘述了,我们直接从安装Docker开始,

首先我们要检查内核版本,命令为:uname -r,必须是3.10及以上,然后就按照步骤进行安装:

  1. 安装: yum install docker 中间有一个确认操作,按y确定
  2. 启动:systemctl start docker。
  3. 查看版本:docker -v。
  4. 设置开机启动:systemctl enable docker。
  5. 关闭:systemctl stop docker。

一般正常安装不会有问题,如有问题,百度一下也能解决。

四、常用操作

安装完成之后我们来学习下常用的操作

4.1 镜像操作

  1. 检索:docker search 关键字,例:docker search mysql

这里的搜索其实是去https://hub.docker.com/ 中进行搜索,我们也可以去这里直接进行搜索。

  1. 拉取:docker pull 镜像名:tag (:tag是可选的,tag表示标签,多为软件的版本,默认是latest) 搜索完成之后,我们可以对我们想要的镜像进行拉取,例:docker pull mysql

之前没使用国内镜像加速,下载了半个小时还没完成,建议使用镜像加速器,我使用的是阿里云的,直接注册后,按照教程使用即可https://cr.console.aliyun.com/

  1. 列表:docker images 安装完成之后使用命令  查看已下载的镜像

4.删除:docker rmi image-id 删除不要的镜像,image-id 对应相关镜像ID

4.2 容器操作

镜像下载成功后,我们可以开始进行容器操作,为了方便演示,我们再下载tomcat的镜像:docker pull tomcat

下面我们对容器进行操作:

  1. 运行: docker run --name container-name -d image-name 其中name 参数是我们自定义容器名 -d 指后台运行,image-name 是镜像名称,例:docker run --name mytomcat -d tomcat:late

2. 查看运行镜像列表:docker ps ,运行成功后面可以通过命令查看,这个命令只查看正在运行的容器

  1. 停止:docker stop 容器的id ,例:docker stop 43e2182aceec
  1. 查看所有镜像列表:docker ps -a

  1. 启动镜像:docker start 容器的id 例:docker start 43e2182aceec
  1. 删除镜像:docker rm 容器的id 例:docker rm 43e2182aceec
  2. 启动一个做了端口映射的tomcat: 启动的整体命令相同,需要加上一个 -p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口,例:docker run --name mytomcat -d -p 8888:8080 tomcat:latest ,这个时候我们将主机的端口号与容器端口映射,这样才能在外部直接访问。

8. 查看容器日志:docker logs 容器的id 例:docker logs fc5b1c7c31bb

这是一些基础命令,想要学习更多的命令请访问:https://docs.docker.com/engine/reference/commandline/docker/

原文地址:https://www.cnblogs.com/yuanqinnan/p/10806069.html

时间: 2024-10-03 06:37:22

SpringBoot之旅第七篇-Docker的相关文章

Docker系列-第七篇Docker构建SpringBoot应用

1.基于Dockerfile构建SpringBoot镜像 1.1准备工作 将SpringBoot项目通过maven打成jar包 mvn clean package #使用maven打包项目 1.2使用Dockerfile构建镜像 step1 在存放jar所在目录下创建Dockerfile文件 touch Dockerfile step2 编辑Dockerfile增加以下内容 FROM java:8 MAINTAINER niugang<[email protected]> RUN mkdir

(转)SpringBoot非官方教程 | 第七篇:springboot开启声明式事务

springboot开启事务很简单,只需要一个注解@Transactional 就可以了.因为在springboot中已经默认对jpa.jdbc.mybatis开启了事事务,引入它们依赖的时候,事物就默认开启.当然,如果你需要用其他的orm,比如beatlsql,就需要自己配置相关的事物管理器. 准备阶段 以上一篇文章的代码为例子,即springboot整合mybatis,上一篇文章是基于注解来实现mybatis的数据访问层,这篇文章基于xml的来实现,并开启声明式事务. 环境依赖 在pom文件

Docker入门教程(七)Docker API

Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和Docker Hub API. 纵观我们的Docker系列教程,我们已经讨论了很多重要的Docker组件与命令.在本文中,我们将继续深入学习Docker:剖析Docker APIs. Docker提供了很多的API以便用户使用.这些API包含四个方面: Docker Registry API Doc

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有

SaltStack 入门到精通 - 第七篇: Targeting

什么是Targeting? Targeting minions 是指那些minion会作为运行命令或是执行状态的目标.这些目标可以是一个主机名,系统信息,定义的分组,甚至是自定义的绑定的对象. 例如命令  salt web1 apache.signal restart 可以重启ID 为web1的minion的apache.当然也可以在top文件中使用web1来作为目标匹配的内容: base:   'web1':     - webserver Targing 有哪些匹配方式? Minion Id

Python之路【第七篇】:线程、进程和协程

Python之路[第七篇]:线程.进程和协程 Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env python # -*- coding:utf-8 -*- import threading import time   def show(arg):     time.sleep(1)     print 'thread'+str(arg)   for i in

用仿ActionScript的语法来编写html5——第七篇,自定义按钮

第七篇,自定义按钮 这次弄个简单点的,自定义按钮.其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了.下面是添加按钮的代码, function gameInit(event){ backLayer = new LSprite(); addChild(backLayer); btn01 = new LButton(new LBitmap(new LBitmapData(imglist["replay_button_up"])),new LBitmap(new L

第七篇 Integration Services:中级工作流管理

本篇文章是Integration Services系列的第七篇,详细内容请参考原文. 简介在上一篇文章,我们创建了一个新的SSIS包,学习了SSIS中的脚本任务和优先约束,并检查包的MaxConcurrentExecutables属性.这一篇我们将检查.演示并测试优先约束赋值为"成功"."完成"."失败"时对工作流的影响.约束赋值如果你按照前一篇的步骤操作过,打开My_First_SSIS_Project解决方案下的Precedence.dtsx

第七篇:创建一个SOUI的Hello World

从0开始一个SOUI项目 1.环境配置 SOUI项目本质是一个基于Win32窗口的应用程序.因此首先我们可以从Win32窗口应用程序向导创建一个简单的Win32项目. 并在第3页选择“Window应用程序” 选择“完成”后生成一个Win32应用程序骨架. 项目的文件结构如下图: 要使用SOUI开发程序程序,首先当然是要找到从SVN获取的SOUI项目代码.假定SOUI项目保存在%SOUIPATH%这个环境变量指向的目录(安装了SOUI向导后会自动创建这个环境变量). 我们需要在VS的include