【微服务】认识Docker及其基本操作
文章内容来自黑马Java,侵权请联系删除
一、认识Docker
Docker是一个快速交付应用、运行应用的技术:
- 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
- 运行时利用沙箱机制形成隔离容器,各个应用互不干扰
- 启动、移除都可以通过一行命令完成,方便快捷
Docker如何解决依赖的兼容问题的?
- 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
- 将每个应用放到一个隔离容器去运行,避免互相干扰
Docker如何解决不同系统环境的问题?
- Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
- Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行
Docker和虚拟机的差异:
- docker是一个系统进程;虚拟机是在操作系统中的操作系统
- docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般
镜像和容器
- 镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
- 容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。
Docker架构
Docker是一个CS架构的程序,由两部分组成:
- 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等
- 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令
二、镜像基本操作
- docker images
- docker rmi
- docker pull
- docker push
- docker save
- docker load
容器基本操作
docker run命令的常见参数有哪些?
- –name:指定容器名称
- -p:指定端口映射
- -d:让容器后台运行
查看容器日志的命令:
- docker logs
- 添加 -f 参数可以持续查看日志
查看容器状态:
- docker ps 添加-a参数查看所有状态的容器
删除容器:
- docker rm 不能删除运行中的容器,除非添加 -f 参数
进入容器:
- 命令是docker exec -it [容器名] [要执行的命令]
exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的
数据卷
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
数据卷的作用:
- 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作:
- docker volume create
- docker volume ls
- docker volume inspect
- docker volume rm
- docker volume prune
挂载数据卷
我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录
- -v volumeName: /targetContainerPath
如果容器运行时volume不存在,会自动被创建出来
文件挂载的方式
docker run的命令中通过 -v 参数挂载文件或目录到容器中:
①-v volume名称:容器内目录
②-v 宿主机文件:容器内文件
③-v 宿主机目录:容器内目录
数据卷挂载与目录直接挂载的区别
①数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
②目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看
三、镜像自定义
镜像的结构
镜像是分层结构,每一层称为一个Layer
- BaseImage 层:包含基本的系统函数库、环境变量、文件系统
- Entrypoint:入口,是镜像中应用启动的命令
- 其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置
Dockerfile
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
指令 | 说明 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM centos:6 |
ENV | 设置环境变量,可在后面指令使用 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./mysql-5.7.rpm /tmp |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
- Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
- Dockerfile的第一行必须是FROM,从一个基础镜像来构建
- 基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine
四、DockerCompose
- Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,无需一个个微服务去构建镜像和部署;
- Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。
五、Docker镜像仓库
镜像仓库( Docker Registry )有公共的和私有的两种形式:
- 公共仓库:例如Docker官方的 Docker Hub,国内也有一些云服务商提供类似于 Docker Hub 的公开服务,比如 网易云镜像服务、DaoCloud 镜像服务、阿里云镜像服务等。
- 除了使用公开仓库外,用户还可以在本地搭建私有 Docker Registry。企业自己的镜像最好是采用私有Docker Registry来实现。
总结:
- 推送本地镜像到仓库前都必须重命名(docker tag)镜像,以镜像仓库地址为前缀
- 镜像仓库推送前需要把仓库地址配置到docker服务的daemon.json文件中,被docker信任
- 推送使用docker push命令
- 拉取使用docker pull命令
【微服务】认识Docker及其基本操作相关推荐
- 中间件和微服务,Docker以及原生云架构的关系
IT世界的技术更新非常迅速.一年前我曾写过一篇关于:微服务是否是企业服务总线和其他中间件的死亡魔法.本文章是之前文章的后续以及关于微服务.容器和原生云架构的中间件关系讨论的更新.各种规模的企业正在以令 ...
- re.containerbase.startinternal 子容器启动失败_微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)...
走过路过不要错过 点击蓝字关注我们 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件 ...
- curl查看swift状态命令_微服务之——docker高级命令
微服务之--docker高级命令 一.映射端口 1.先下载 nginx 镜像 [root@localhost ~]# docker pull nginx:1.12.2 1.12.2: Pulling ...
- 基于微服务和Docker的PaaS云平台架构设计
基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...
- docker的文件流处理_迁移到微服务与DevOps,微服务和Docker容器的全面实用指南
迁移到微服务与DevOps,改变软件开发效能! 一如既往,技术行业正处于巨大的转变之中,物联网.软件定义网络以及软件即服务(SaaS)仅为其中几例.由于这些创新,对能够改进应用开发和部署过程的平台和架 ...
- consul命令行查看服务_Go语言微服务架构实战:第十三节 微服务管理--Docker安装及运行consul节点...
微服务管理--Docker安装及运行consul节点 搭建集群 在真实的生产环境中,需要真实的部署consul集群.在一台机器上想要模拟多台集群部署的效果,有两种方案:一种是借助虚拟机,另一种是借助容 ...
- 基于微服务和Docker容器技术的PaaS云平台架构设计
本文讲的是基于微服务和Docker容器技术的PaaS云平台架构设计[编者的话]在系统架构上,PaaS云平台主要分为微服务架构.Docker容器技术.DveOps三部分,这篇文章重点介绍微服务架构的实施 ...
- Docker基础篇 - (六)Docker 网络Spring Boot微服务打包Docker镜像
⑦ Docker 网络 7.1 理解Docker0 清空下前面的docker 镜像.容器 # 删除全部容器 [root@cVzhanshi tomcat-diy]# docker rm -f $(do ...
- [转]微服务与Docker
在Docker上运行微服务 在过去的两年里,微服务架构已经成了非常热门的名词,它出现在很多论坛.视频.演讲中.作为一种更灵活.可靠.开放的架构,其应用实践也越来越多.近日,来自七牛云存储.DaoClo ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_汇总
小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...
最新文章
- ubuntu右键在当前位置打开终端
- BC div2补题以及 复习模除 逆元__BestCoder Round #78 (div.2)
- 排序下---(冒泡排序,快速排序,快速排序优化,快速排序非递归,归并排序,计数排序)
- jeecg 分布式部署附件共享问题(linux下配置共享磁盘nfs服务)
- Firewalld防火墙转换成Iptables
- 索尼高清影视技术学院参观观后感
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第5节 线程池_2_线程池的代码实现...
- JAVA微信小程序购物商城系统毕业设计 开题报告
- 微信公众服务号如何快速申请注册并认证开通支付功能
- 企业IT管理员IE11升级指南【4】—— IE企业模式介绍
- 少年中国说 梁启超
- 男人40岁后的健康生活方式
- python用matplotlib作图时,x轴为时间轴,如何让x轴每隔几个点显示一次?
- ContentProvider使用Demo
- 利达主机联网接线端子_利达主机怎么编辑中文 利达主机接线端子说明
- ES7-ES11新特性汇总
- 咸鱼APP产品使用报告体验分析
- libcurl 库的编译
- 5G时代金融服务如何升级?网易云信助力银行数字化建设
- 使用kinect2.0做动作识别和重量颜色识别