标签:docker-ce ror docker 实战 persist 打破 常见 mes att sha
近期因为产品方案尚未确定,有些许空闲时间调研下火了挺久的容器技术 Docker
。
如果说主机时代比拼的是单个服务器物理性能(如 CPU 主频和内存)的强弱,那么在云时代,最为看重的则是凭借虚拟化技术所构建的集群处理能力。
在计算机领域,虚拟化一般指的是「计算机虚拟化」或「服务器虚拟化」。维基百科上的定义如下:
在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割障碍,使用户可以用比原本的组态更好的方式来应用这些资源。
言而简之,虚拟机的核心是对资源的抽象
,目标是为了在同一个主机上同时运行多个系统或应用,从而提高系统资源利用率
。
其发展历程大致如下:
传统来看,虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现。而容器技术则更为优雅,它充分利用了操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。
在开发和运维过程中,Docker 具有如下几个方面的优势:
虚拟机方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。而 Docker 容器是在操作系统层面实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | 一般为 MB | 一般为 GB |
运行密度 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
Docker 三大核心概念:
Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。镜像是创建 Docker 容器的基础。
Docker 容器类似于一个轻量级沙箱,它是从镜像创建的应用运行实例,可以启动、开始、停止、删除。容器彼此相互隔离、互不可见。
Docker 仓库类似于代码仓库,是 Docker 集中存放镜像文件的场所。可以分为公开仓库(Public)和私有仓库(Private)两种形式。
Docker 利用仓库管理镜像的设计理念与 Git 代码仓库的概念非常相似,设计上借鉴了 Git 的很多优秀思想。
大致了解 Docker 的核心概念后,我们先在服务器上安装 Docker 进行实操。
本文实操时以下命令均以 root 用户操作,非 root 用户需要在命令前加 sudo
① 首先,如果是新服务器,先升级下软件和系统内核
yum update
② 随后为了方便添加软件源,以及支持 devicemapper 存储类型,安装如下软件包:
yum install -y yum-utils device-mapper-persistant-data lvm2
③ 然后添加 Docker 稳定版本的 yum 软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
④ 之后安装 Docker
yum install -y docker-ce
⑤ 最后确认 Docker 服务启动正常,并设置成开机启动
systemctl start docker
systemctl status docker
systemctl enable docker
安装完 Docker 后,我们通过创建一个 Nginx 容器来熟悉一些常用命令。
docker run
该命令等价于先执行 docker create 命令,再执行 docker start 命令。
当使用 docker run 来创建并启动容器时,Docker 在后台运行的标准操作包括:
示例:
docker run -d -p 91:80 nginx
新建并启动一个 Nginx 容器,-d 代表后台运行,-p 代表端口映射,将 Nginx 容器默认的 80 端口映射到宿主主机的 91 端口。
访问 http://宿主主机IP:91 可以看到如下界面:
docker ps
使用 docker ps 命令即可列出运行中的容器。得到类似如下的表格。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e2ab762027d nginx "nginx -g ‘daemon of…" 33 seconds ago Up 31 seconds 0.0.0.0:91->80/tcp gifted_cray
该表格包含七列,各列含义如下:
docker logs CONTAINER
该命令可以查看容器的输出信息
使用 docker logs 5e2ab762027d 命令可以看到我们刚才浏览器访问 Nginx 的日志
122.224.128.14 - - [31/May/2020:08:23:43 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"
122.224.128.14 - - [31/May/2020:08:23:43 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://127.0.0.1:91/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"
2020/05/31 08:23:43 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 122.224.128.14, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "127.0.0.1:91", referrer: "http://127.0.0.1:91/"
从 1.3.0 版本起,Docker 提供了一个比 attach 命令更方便的 exec
命令,可以在运行中的容器内直接执行任意命令。
docker exec -it CONTAINER bash
该命令会进入容器并启动一个伪终端,
-it
参数用来分配一个伪终端绑定到容器的标准输入上,并保持标准输入打开。
命令行 | 含义 |
---|---|
docker stop CONTAINER | 停止容器 |
docker restart CONTAINER | 重启容器 |
docker rm CONTAINER | 删除容器 |
本篇主要介绍了 Docker 的一些核心概念以及常用命令,下一篇会介绍如何使用 Docker 运行常见的 Web 服务器(包括 Nginx、Tomcat)等,以及一些常见应用(包括 MySQL、Redis)等,并将此前 Spring Boot 系列搭建的 demo 项目也使用 Docker 部署。
标签:docker-ce ror docker 实战 persist 打破 常见 mes att sha
原文地址:https://www.cnblogs.com/orzlin/p/13020413.html