易筋SpringBoot 2.1 | 第廿三篇:SpringBoot之Docker入门

写作时间:2019-09-15
Spring Boot: 2.1 ,JDK: 1.8, IDE: IntelliJ IDEA

什么是 Docker

Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)

Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目 已经超过 5 万 多个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroupnamespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runCcontainerd
在这里插入图片描述

runc 是一个 Linux 命令行工具,用于根据 OCI容器运行时规范 创建和运行容器。
containerd 是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
在这里插入图片描述
图:传统虚拟化
在这里插入图片描述
图: Docker

为什么要使用 Docker?

  1. 更高效的利用系统资源
  2. 更快速的启动时间
  3. 一致的运行环境
  4. 持续交付和部署
  5. 更轻松的迁移
  6. 更轻松的维护和扩展
特性容器虚拟机
启动秒级分钟级
硬盘使用一般为 MB一般为 GB
性能接近原生弱于
系统支持量单机支持上千个容器一般几十个

Docker run 的常用选项

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

选项说明

  • -d, 后台运行容器
  • -e, 设置环境变量
  • –expose / -p 宿主端口:容器端口
  • –name, 指定容器名称
  • –link, 链接不同容器
  • -v, 宿主目录: 容器目录, 挂载磁盘卷

国内Docker 镜像配置

官方 Docker Hub

  • https://hub.docker.com

官方镜像

  • https://www.docker-cn.com/registry-mirror

阿里云镜像

  • https://dev.aliyun.com

Mac 下载Docker

  • https://docs.docker.com/docker-for-mac/install/

Get started with Docker Desktop for Mac

  • https://docs.docker.com/docker-for-mac/

Mac Docker Desktop 安装并启动图
在这里插入图片描述
Mac Docker Desktop 版本信息
在这里插入图片描述

国内镜像

Docker 官方提供的中国 registry mirror

  • https://registry.docker-cn.com

更多镜像加速器请参考

  • https://www.kancloud.cn/docker_practice/docker_practice/469780

通过Docker启动MongoDB

官方指引

  • https://hub.docker.com/_/mongo

获取镜像

% docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
Digest: sha256:d9e20d05063ba34bac4da916e335c70d6add38241cee1e99ad96c47660bd6955
Status: Image is up to date for mongo:latest
docker.io/library/mongo:latest
18:17 zgpeace@zgpeaces-MacBook-Pro /Users/zgpeace/Docker/demo/Mongo
% docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
zgpeace/cheers2019               latest              bc105f0ed7c1        6 hours ago         4.01MB
<none>                           <none>              a9e9a37a3077        6 hours ago         356MB
golang                           1.11-alpine         e116d2efa2ab        3 weeks ago         312MB
mongo                            latest              cdc6740b66a7        4 weeks ago         361MB
...

注释:
docker pull mongo, 拉取MongoDB的官方镜像
docker images, 查看本地的镜像

创建运行MongoDB 镜像

docker run --name mongo -p 27017:27017 -v /Users/zgpeace/Docker/demo/Mongo/data:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin -d mongo

参数说明:
–name, 运行后的名字
-p, 本地的端口 映射到 docker的端口
-v, 数据存放的目录, 本地的目录,映射到 docker的目录
-e, 设置参数
MONGO_INITDB_ROOT_USERNAME, 用户名
MONGO_INITDB_ROOT_PASSWORD, 密码

查看docker进程

% docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
135b7d51d050        mongo               "docker-entrypoint.s…"   13 seconds ago      Up 12 seconds       0.0.0.0:27017->27017/tcp   mongo

进入到MongoDB容器中*

  • docker exec -it mongo bash
% docker exec -it mongo bash

通过Shell, 用admin登录 MongoDB

  • mongo -u admin -p admin
root@135b7d51d050:/# mongo -u admin -p admin
MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("e7490711-540e-4c82-b094-86830b111c55") }
MongoDB server version: 4.2.0
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

注释:
show dbs, 显示用户下数据库已用空间
help, 显示MongoDB的命令帮助

参考

https://yeasy.gitbooks.io/docker_practice/introduction/what.html

https://yeasy.gitbooks.io/docker_practice/introduction/why.html

https://hub.docker.com

https://hub.docker.com/?overlay=onboarding

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值