Docker实践
文章平均质量分 79
呵呵呵1112
这个作者很懒,什么都没留下…
展开
-
14.应⽤于服务化开发
服务开发环境在微服务开发中,每个人所开发的功能可能都不是完整的系统,很多功能需要与其他服务之间配合才能正常运转,⽽我们开发所使⽤的机器时常⽆法满⾜我们在⼀台机器上将这些相关服务同时运⾏起来。我们仅仅是开发某⼀部分服务的内容,既对其他服务的运转机制不太了解,又完全没有必要在⾃⼰的机器上运⾏其他的服务。所以我们最佳的实践⾃然就是让参与系统中服务开发的同事,各⾃维护⾃⼰开发服务的环境,⽽直接提供给我们对应的连接地址使⽤服务即可。更确切地说,我们在开发中,只需要在本地搭建起⾃⼰所开发服务的运⾏环境,再与其他开原创 2021-09-21 17:32:55 · 197 阅读 · 0 评论 -
13.常用的Docker Compose配置
version: "3"services: redis: image: redis:3.2 networks: - backend volumes: - ./redis/redis.conf:/etc/redis.conf:ro ports: - "6379:6379" command: ["redis-server", "/etc/redis.conf"] database: image: mysql:5.7 networks: - backend原创 2021-09-20 19:58:28 · 252 阅读 · 0 评论 -
12.使用Docker Compose管理容器
在Docker的设计中,一个容器只运行一个应用。但是目前的绝大多数应用系统都不是一个应用就可以组成的。虽然之前提到了容器间互相连接、交换数据的方法,使用这些方法也确实能搭建起一个完整应用系统的容器群。但是,需要执行很多命令,需要考虑很多应用和容器间的关系,而Docker Compose正是为了解决这些复杂的操作。解决容器管理问题就拿最简单的例⼦来说吧,如果我们要为我们的应⽤容器准备⼀个 MySQL 容器和⼀个 Redis 容器,那么在每次启动时,我们先要将 MySQL 容器和 Redis 容器启动起来,原创 2021-09-20 17:05:15 · 228 阅读 · 0 评论 -
11.常见的Dockerfile使用技巧
构建中使⽤变量在实际编写 Dockerfile 时,与搭建环境相关的指令会是其中占有⼤部分⽐例的指令。在搭建程序所需运⾏环境时,难免涉及到⼀些可变变量,例如依赖软件的版本,编译的参数等等。我们可以直接将这些数据写⼊到 Dockerfile 中是完全没有问题,有问题的是这些可变变量我们会经常调整,在调整时就需要我们到 Dockerfile 中找到它们并进⾏更改,如果只是简单的 Dockerfile ⽂件尚且好说,但如果是相对复杂或是存在多处变量的 Dockerfile ⽂件,这个⼯作就变得繁琐⽽让⼈烦躁了原创 2021-09-19 18:10:52 · 261 阅读 · 0 评论 -
10.通过Dockerfile生成镜像
关于DockerfileDockerfile 是 Docker 中⽤于定义镜像⾃动化构建流程的配置⽂件,在 Dockerfile 中,包含了构建镜像过程中需要执⾏的命令和其他操作。通过 Dockerfile 我们可以更加清晰、明确的给定 Docker 镜像的制作过程,⽽由于其仅是简单、⼩体积的⽂件,在⽹络等其他介质中传递的速度极快,能够更快的帮助我们实现容器迁移和集群部署。Dockerfile 的定义就是针对⼀个名为 Dockerfile 的⽂件,其虽然没有扩展名,但本质就是⼀个⽂本⽂件Dockerf原创 2021-09-19 17:31:48 · 338 阅读 · 0 评论 -
9.镜像和容器的迁移
将容器提交为镜像Docker 镜像的本质是多个基于 UnionFS 的镜像层依次挂载的结果,⽽容器的⽂件系统则是在以只读⽅式挂载镜像后增加的⼀个可读可写的沙盒环境。基于这样的结构,Docker 中为我们提供了将容器中的这个可读可写的沙盒环境持久化为⼀个镜像层的⽅法。更浅显的说,就是很轻松的在 Docker ⾥将容器内的修改记录下来,并且保存为⼀个新的镜像,命令为docker commit。Docker将容器生成为镜像的时候会先暂停容器,以保证容器内的文件系统处于一个稳定的状态,确保数据的一致性。 doc原创 2021-09-19 16:38:22 · 298 阅读 · 0 评论 -
8.管理和存储数据
数据管理实现方式Docker的文件系统有很多优势,也有很多弊端,最显著的是以下两点:1.容器内文件系统跟随容器的生命周期创建删除,数据无法持久化。2.由于容器的隔离,很难获得或操作容器内部文件的数据。此时就需要文件挂载,由于 UnionFS ⽀持挂载不同类型的⽂件系统到统⼀的⽬录结构中,所以只需要将宿主操作系统中,⽂件系统⾥的⽂件或⽬录挂载到容器中,便能够让容器内外共享这个⽂件。挂载方式基于底层存储实现,Docker 提供了三种适⽤于不同场景的⽂件系统挂载⽅式:Bind Mount、Volum原创 2021-09-16 21:02:37 · 140 阅读 · 0 评论 -
5.获取镜像
镜像仓库镜像仓库就好比是Git中的 GitLab、GitHub 等的托管平台,这不过整个仓库中托管的是镜像不是代码。镜像仓库除了存储镜像外最大的作用是分发,可以将开发环境的镜像推送至镜像仓库,并在测试或生产环境拉取到。获取镜像docker pull redis运行这个命令后,docker就会从仓库拉取镜像。如果不指定tag 那么就会默认使用latest这个标签。控制台中每一行代表一个镜像层,Docker会先拉取镜像所基于的所有镜像层,然后在分别拉取每一层,如果本地已经存在相同的镜像层(共享与其他原创 2021-09-12 16:41:44 · 377 阅读 · 0 评论 -
4.镜像和容器的
镜像镜像可以理解为一个包含应用程序和其相关依赖的一个基础文件系统,在Docker容器启动的过程中,以只读的方式被用于创建容器的运行环境。Docker镜像是由一组镜像层依次挂载而的来的,每个镜像层对应上一个镜像层的修改,这样修改其实是发生在容器运行过程中的,所以反过来理解的话,镜像是对容器运行环境进行持久化存储的结果对于每一个记录文件系统修改的镜像层来说,都有一个由Docker生成的Hash码,是一个64长度的字符串,全球唯一。通过唯一编码能够区分不同的镜像层并能保证它们的内容和编码是进行对应的,这带来原创 2021-09-12 16:06:19 · 173 阅读 · 0 评论 -
3.搭建Docker
Docker 的环境依赖由于Docker的容器隔离依赖于Linux内核中的相关支持,所以需要Linux内核3.10以上的版本,也就是下面的系统版本操作系统 ⽀持的系统版本CentOS CentOS 7DebianDebian Wheezy 7.7 (LTS)Debian Jessie 8 (LTS)Debian Stretch 9Debian Buster 10FedoraFedora 26Fedora 27UbuntuUbuntu Trusty 14.04 (LTS)Ubunt原创 2021-09-07 20:47:16 · 869 阅读 · 0 评论 -
6.运行和管理容器
创建和启动容器创建容器可以通过docker create命令来创建容器#创建容器docker create 镜像名称#创建容器并指定名称docker create --name 容器名称 镜像名称启动容器刚创建的容器状态为Created,其内部的应用还没启动,需要通过以下命令启动容器docker start 容器名还可以通过docker run命令将容器的创建和启动结合,通过--name指定容器名称,通过-d以守护进程方式启动docker run --name 容器名称 -d 镜原创 2021-09-12 18:05:45 · 119 阅读 · 0 评论 -
7.配置容器的网络
容器⽹络容器⽹络实质上也是由 Docker 为应⽤程序所创造的虚拟环境的⼀部分,它能让应⽤从宿主机操作系统的⽹络环境中独⽴出来,形成容器⾃有的⽹络设备、IP 协议栈、端口套接字、IP 路由表、防⽕墙等等与⽹络相关的模块。在Docker网络中,有三个核心概念:**沙盒 ( Sandbox ):**沙盒提供了容器的虚拟⽹络栈,也就是之前所提到的端口套接字、IP 路由表、防⽕墙等的内容。其实现隔离了容器⽹络与宿主机⽹络,形成了完全独⽴的容器⽹络环境。**⽹络 ( Network )????*可以理解为原创 2021-09-13 21:27:56 · 697 阅读 · 0 评论 -
2.Docker的技术实现和组成
之前提到了 Docker 实现容器引擎的⼀些技术,但那些都是⼀些相对底层的原理实现,在 Docker 将它们封装后,我们并不会直接操作它们。在 Docker 中,另外提供出了⼀些软件层⾯的概念,这才是我们操作 Docker 所针对的对象。镜像可以理解为一个只读的文件包,里面包含了虚拟环境运行最原始文件系统的内容。但是Docker的镜像和虚拟机的镜像是有区别的,Docker使用AUFS作为底层的文件系统实现,通过这种方式Docker实现是一种增量式的镜像结构。每次修改镜像,Docker都会将修改铸造成一原创 2021-09-05 20:33:35 · 142 阅读 · 0 评论 -
1.虚拟化和容器技术
Docker是⼀款以容器虚拟化技术为基础的软件,因此在了解有关 Docker 的概念知识和使⽤⽅法之前,虚拟化和容器技术是不可或缺的基础知识。虚拟化虚拟化技术就是将计算机物理资源进行抽象、转换为虚拟的计算机资源提供给程序使用。这里的计算机资源包括硬盘的存储资源、CPU的控制和运算资源、网卡的网络传输资源等等。在虚拟化的实现中,需要着重提的就是虚拟机。所谓虚拟机,通常来说就是通过⼀个虚拟机监视器 ( Virtual Machine Monitor ) 的设施来隔离操作系统与硬件或者应⽤程序和操作系统,以原创 2021-08-30 21:06:21 · 457 阅读 · 0 评论