Docker容器化技术

一、介绍

  • 开源的应用容器引擎,基于Go语言开发
  • 容器是完全使用沙箱,容器开销极低
  • Docker就是容器化技术代名词
  • Docker也具备一定虚拟化职能
  • 标准的应用打包

二、Docker的发展

三、Docker安装

1.安装utils

yum install -y yum-utils device-mapper-persistent-data lvm2

后两个工具是持久化工具,yum-utils是省去安装源配置过程

2.yum-config-manager 是yum-utils的命令,如果没有,则会采用去复制repo到某目录,然后刷新yum(比较麻烦)

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.让yum检测最快的源并使用

yum makecache fast

4.安装docker,ce是社区版本

yum -y install docker-ce

5.启动服务

service docker start
或者
systemctl start docker

6.查看docker版本

由于docker是CS架构,所以我们这次查看有Server和Client,在第四步安装,我们就已经安装了Server和Client

docker version

7.拉取hello-world

docker pull hello-world

8.执行hello-world

docker run hello-world

注意:

  • 第七步如果下载失败,则可以使用阿里云的加速代理,加速代理的教程四。

  • 目前Windows 10 64bit也支持了docker,其他版本windows均不支持。

四、阿里云Docker镜像加速

登录阿里云,进入后台

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的码"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 使用tee进行输出{}这段json文本

  • 辅助进程重载

  • 重启docker

五、Docker的基本概念

  • Docker是提供应用打包,部署与运行应用的容器化平台

总体架构

  • Docker引擎分为3个,内层是一个docker daemon,中间层REST API进行通讯,最外层是CLI,我们通过REST API进行与server进行通讯。
  • 因为通讯是REST API,所以我们使用协议是HTTP 协议

Docker引擎

  • 容器与镜像

镜像:镜像是文件,只读的,提供了运行完整软硬件应用程序的集装箱

容器:是镜像的实例,由Docker负责创建,容器之间彼此隔离

  • Docker执行流程

客户端来向服务端发送命令,服务端由Docker daemon来负责管理Containers和Images,最右边是注册中心,用来保存各种各样的镜像文件

docker执行流程

六、命令

  • docker pull imageName<:tags> 远程仓库抽取镜像
  • docker images 查看远程抽取镜像
  • docker run 创建容器,启动应用
  • docker ps 查看正在运行的镜像
  • docker rm 删除容器
  • docker rmi 删除镜像

七、Docker宿主机与容器通信

我们可以使用docker进行端口映射

ip运行原理

容器正常启动,内部8080映射到8000端口

docker run -p 8000:8080 tomcat

容器后台运行

docker run -p 8000:8080 -d tomcat

杀死后台容器

docker kill containerID

八、容器内部结构

  • 以tomcat为例,Tomcat容器内部组件

Tomcat组件

  • 思考:为什么有个linux文件还这么小?

理由:linux仅支持这个应用,其他组件一律没有安装,所以占用资源较少

  • 容器中执行命令
docker exec [-it] 容器id 命令

例子

docker exec -it 098988czcd /bin/bash

退出命令

exit

九、容器生命周期

容器生命周期图

  • docker run = docker create + docker start

  • docker create 单执行,则会进入停止状态

    • 执行docker start 进入开始状态
    • docker destroy 删除容器
  • docker kill 或者 docker stop 都置die状态,紧接着进入stop状态

    • docker kill 后进行docker start 创建新进程
    • docker stop 后进行docker start 进入恢复
  • docker restart 可以重启

  • docker pause 进行暂停状态

  • 内存溢出OOM,会置die

  • 查看状态 docker ps -a 我们会发现更多子状态

十、Dockerfile构建镜像

  • Dockerfile是一个包含用于组合镜像命令的文本文件
  • Docker读取Dockerfile中指令,进行自动生成镜像
  • docker build -t 机构/镜像名<:tags> Dockerfile目录

案例dockerfile

from tomcat:latest //设置基准镜像
MAINTAINER xxx.com //拥有者
WORKDIR /opt/tomcat/webapps //结合web容器路径进行放置打包,如果目录不存在,则创建
ADD docker-web ./docker-web //添加 docker-web ./docker-web

实际案例

创建dockerweb文件夹,内部放一个index.html

在外部书写Dockerfile,无扩展名

FROM consol/tomcat-7.0

MAINTAINER steveyu.com

WORKDIR /opt/tomcat/webapps

ADD docker-web ./docker-web

执行 docker build -t steveyu/mywebapp:1.0 /usr/local
  • 镜像分层

镜像构件图

我们在处理的时候,每一层都是一个镜像,处理过的镜像不必要重新处理,极大加快了构建镜像的速度

Docker容器化技术(上)的更多相关文章

  1. Docker容器化技术(下)

    Docker容器化技术(下) 一.Dockerfile基础命令 1.1.FROM - 基于基准镜像 FROM centos #制作基准镜像(基于centos) FROM scratch #不依赖任何基 ...

  2. 新一代Java程序员必学的Docker容器化技术基础篇

    Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...

  3. Docker容器化技术

    1. 初始Docker 1.1 Docker概念 Docker概念:Docker是一个开源的应用容器引擎 诞生于2013年初,基于Go实现,dotCloud公司出品(后改名为Docker Inc) D ...

  4. Java 服务 Docker 容器化最佳实践

    转载自:https://mp.weixin.qq.com/s/d2PFISYUy6X6ZAOGu0-Kig 1. 概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源 ...

  5. 通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署

    通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署 Intro Azure DevOps Pipeline 现在对于公开的项目完全免费,这对于开源项目来讲无疑是个巨大的 ...

  6. [ci]jenkins-slave-ssh docker容器化-用户名密码

    jenkins-slave-ssh docker容器化 架构 参考:https://www.youtube.com/watch?v=OxrBCt1JLuQ https://github.com/Dav ...

  7. spring boot本地开发与docker容器化部署的差异

    spring boot本地开发与docker容器化部署的差异: 1. 文件路径及文件名区别大小写: 本地开发环境为windows操作系统,是忽略大小写的,但容器中区分大小写 2. docker中的容器 ...

  8. docker容器化python服务部署(supervisor-gunicorn-flask)

    docker容器化python服务部署(supervisor-gunicorn-flask) 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-furt ...

  9. 利用 ELK 搭建 Docker 容器化应用日志中心

    利用 ELK 搭建 Docker 容器化应用日志中心 概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 ...

随机推荐

  1. Python爬虫笔记技术篇

    目录 前言 requests出现中文乱码 使用代理 BeautifulSoup的使用 Selenium的使用 基础使用 Selenium获取网页动态数据赋值给BeautifulSoup Seleniu ...

  2. 使用adb命令控制anroid手机

     adb工具即Android Debug Bridge(安卓调试桥) tools.它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互.在某些特殊的情况下进入不了系统或者需要自动化测试的时候, ...

  3. Redis 主从、哨兵Sentinel、Jedis

    Redis 主从.哨兵Sentinel.Jedis 2017年02月15日 15:52:48 有且仅有 阅读数 6183 文章标签: redis主从sentineljedis 更多 分类专栏: 7/1 ...

  4. Python微服务实践-集成Consul配置中心

    A litmus test for whether an app has all config correctly factored out of the code is whether the co ...

  5. 最新 奥买家java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.奥买家等10家互联网公司的校招Offer,因为某些自身原因最终选择了奥买家.6.7月主要是做系统复习.项目复盘.LeetCo ...

  6. typeof与instanceof运算符

    typeof运算符用来判断某个变量的数据类型.typeof()返回值类型有如下几种: 1.number :数值类型 2.string :字符串类型 3.boolean :布尔型 4.function: ...

  7. SpringBoot常用注解(二)

    这是整个 web 工程的入口,也是与其他框架最大的不同之处.这里主要关注 @SpringBootApplication注解,它包括三个注解: @Configuration:表示将该类作用springb ...

  8. JVM的内存分配垃圾回收策略

    之前看过<深入了解Java虚拟机>感觉容易忘,今天写一篇博客加深一下印象. JVM的内存分配和垃圾回收(GC)主要发生在Java堆中.而Java堆根据对象的存活时间可以分为新生代和老年代, ...

  9. CORS和CSRF

    CORS和CSRF 什么是CORS?CORS是一个W3C标准,全称是"跨域资源共享",他允许浏览器向夸源服务器,发出XMLHTTPRequest请求,从而克服了AJAX只能同源使用 ...

  10. day44——索引、explain、慢查询、数据备份、锁、事务

    day44 索引介绍 为何要有索引? ​ 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还有一些复杂的查询操作 ...