一、引言

记得上大三时,要给微机房电脑安装系统,除了原生的操作系统外,还要另外安装一些必要的开发软件,如果每台电脑都重新去安装的话工作量就很大了,这个时候就使用了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/

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

  1. SpringBoot之旅第四篇-web开发

    一.引言 有了自动配置,springboot使web开发变得简单,这个在springboot之旅中的第一篇中就有体现,实际的开发中当然不会这么简单,很多时候我们都需要自己去定制一些东西.web开发的东 ...

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

    1.基于Dockerfile构建SpringBoot镜像 1.1准备工作 将SpringBoot项目通过maven打成jar包 mvn clean package #使用maven打包项目 1.2使用 ...

  3. SpringBoot之旅第六篇-启动原理及自定义starter

    一.引言 SpringBoot的一大优势就是Starter,由于SpringBoot有很多开箱即用的Starter依赖,使得我们开发变得简单,我们不需要过多的关注框架的配置. 在日常开发中,我们也会自 ...

  4. SpringBoot之旅第五篇-数据访问

    一.引言 大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有Mo ...

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

    springboot开启事务很简单,只需要一个注解@Transactional 就可以了.因为在springboot中已经默认对jpa.jdbc.mybatis开启了事事务,引入它们依赖的时候,事物就 ...

  6. SpringBoot非官方教程 | 第七篇:springboot开启声明式事务

    转载请标明出处: http://blog.csdn.net/forezp/article/details/70833629 本文出自方志朋的博客 springboot开启事务很简单,只需要一个注解@T ...

  7. SpringBoot之旅第三篇-日志

    一.前言 日志对于一个系统的重要性不言而喻,日志能帮我们快速定位线上问题,市场上存在非常多的日志框架,比较常见的有 JUL,JCL,Log4j,Log4j2,Logback.SLF4j.jboss-l ...

  8. [第七篇]——Docker Hello World之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker Hello World Docker 允许你在容器内运行应用程序, 使用  docker run 命令来在容器内运行一个应用程序. 输出Hello world xxx@xxx:~$ do ...

  9. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

随机推荐

  1. linux 【目录】

    [第一篇]linux[目录] [第五篇]特殊权限及定时任务 [第六篇]用户和用户管理及定时任务复习

  2. 自己写的Android端HttpUtil工具类

    package com.sxt.jcjd.util; import java.io.IOException; import java.io.UnsupportedEncodingException; ...

  3. (转)SQL中使用or影响性能的解决办法

    原文地址:https://www.cnblogs.com/xuxiaona/p/4962727.html 近期做了一个存储过程,执行时发现非常的慢,竟然需要6.7秒! 经排查,发现时间主要都耗在了其中 ...

  4. php判断手机号码

      //PHP判断手机号码 public function isMobile($params) { $pattern = "/^(13[0-9]|14[0-9]|15[0-9]|17[0-9 ...

  5. 剑指Offer面试题11(Java版):数值的整数次方

    题目:实现函数double Power(double base,int exponent),求base的exponent次方.不得使用库函数,同一时候不须要考虑大数问题 1.自以为非常easy的解法: ...

  6. 并不对劲的WC2019

    并不想说"讲了什么"或"考了什么",讲这些的人太多了 过去的那个下位猎人,会为了第一次击败怪物而开心,会在闪光弹扔对方向后得意(然后忘记输出...),会因能够无 ...

  7. VS2013文件同步插件开发

    一.插件功能描述 插件监控一个xml文件,当该文档有添加新元素在保存的时候将新增的元素同步到指定的目录下. 二.模板的选择 由于该功能是跟代码编辑有关的,要监控文档的保存事件,所以要在文档打开的时候就 ...

  8. 洛谷P4116 Qtree3(树剖+线段树)

    传送门 LCT秒天秒地 树剖比较裸的题了 用线段树记录一下区间的最左边的黑点的编号(因为同一条链上肯定是最左边的深度最小,到根节点距离最近) 然后记得树剖的时候肯定是越后面的答案越优,因为深度越浅 / ...

  9. vim下撤销操作.选中复制等操作

    vim撤销操作:u vim恢复操作:ctrl+r 使用normal模式下的  v命令,进入visual模式,v+ j/k/h/l   进行文本选中 对于选中的文本进行如下按键: (1.1)d   -- ...

  10. Mybatis的全局配置文件标签介绍(mybatis-config.xml)

    全局配置文件中本人只记录了常用的几个  typeHandlers, objectFactory,objectWrapperFactory, reflectorFactory, plugins, dat ...