Fork me on GitHub

docker

Docker安装常用软件

这里总结常用软件的容器化安装步骤,环境为CentOS7。 环境准备要先安装Docker软件,配置好国内加速镜像,这个可以参考我的Docker教程入门篇。 这里不再多讲。 MySQL这里演示如何在CentOS7上面通过Docker安装MySQL8版本。 拉取镜像文件: docker pull mysql/mysql-server 启动镜像文件: docker run -d -p 13306:3306 --name mysql \ -v /data/mysql/conf.d...

Docker每天学一点11 - 容器网络macvlan

除了 overlay,docker 还开发了另一个支持跨主机容器网络的 driver:macvlan。 macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址, 即多个 interface,每个 interface 可以配置自己的 IP。macvlan 本质上是一种网卡虚拟化技术,Docker 用 macvlan 实现容器网络就不奇怪了。 macvlan 的最大优点是性能极好,相比其他实现,macvlan 不需要创建...

Docker每天学一点10 - 容器网络Overlay

前面已经学习了 Docker 的几种网络方案:none、host、bridge 和 joined 容器, 它们解决了单个 Docker Host 内容器通信的问题。本章的重点则是讨论跨主机容器间通信的方案。 跨主机网络方案包括: docker 原生的 overlay 和 macvlan。 第三方方案:常用的包括 flannel、weave 和 calico。 docker 网络是一个非常活跃的技术领域,不断有新的方案开发出来,那么要问个非常重要的问题了: 如此众多的...

Docker每天学一点09 - 多主机管理

前面的实验都是在一个host中,而真实环境中肯定会有多个主机。 容器在这些 host 中启动、运行、停止和销毁,相关容器会通过网络相互通信,无论它们是否位于相同的 host。 对于这样一个 multi-host 环境,我们将如何高效地进行管理呢?我们面临的第一个问题是:为所有的 host 安装和配置 docker。 如果一个个去安装肯定很麻烦又容易出错,手工方式效率低且不容易保证一致性,针对这个问题,docker 给出的解决方案是 Docker Machine。 安装 ...

Docker每天学一点08 - 存储

Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层。 Data Volume 接下来分别介绍下这两种存储方式。 storage driver在镜像章节我们学习到 Docker 镜像的分层结构: 容器由最上面一个可写的容器层,以及若干只读的镜像层组成,容器的数据就存放在这些层中。这样的分层结构最大的特性是 Copy-on-Write: 新数据会直接存放在最上面的容器层。 修改现有数据会先从镜像层将数据复制到容器层...

Docker每天学一点07 - 单主机网络

这一篇学习容器之间、容器和外界之间怎样相互通信。Docker 网络从覆盖范围可分为单主机的容器网络和跨主机的容器网络, 本章重点讨论前一种。对于更为复杂的多主机容器网络,后面的文章会专门讲。 三个网络Docker 安装时会自动在 host 上创建三个网络,我们可用docker network ls 命令查看: [root@VM_22_2_centos docker]# docker network ls NETWORK ID NAME ...

Docker每天学一点06 - 运行容器

这一篇学习容器的各种操作,容器的状态之间如何转换,以及实现容器的底层技术。 运行容器 docker run -d --name "node001" httpd 查看当前正在运行的容器 docker ps docker container ls 返回结果: [root@VM_22_2_centos ~]# docker ps CONTAINER ID IMAGE COMMAND ...

Docker每天学一点05 - Registry

前面已经学会怎样构建镜像了,这一章介绍怎样分发镜像给多个Docker Host使用, 可以通过复制Dockerfile、将镜像上传至公共Registry、搭建私有Registry三种方式。 这里将后面两种方式,怎样使用公共Registry和搭建私有Registry。 镜像命名其实就跟maven库管理一样,镜像名字由两部分组成:repository 和 tag: [image name] = [repository]:[tag] 如果执行 docker build 时没有...

Docker每天学一点04 - Dockerfile

是时候系统学习 Dockerfile 了,下面介绍 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档。 FROM指定 base 镜像。 MAINTAINER设置镜像的作者,可以是任意字符串。 COPY将文件从 build context 复制到镜像。 COPY 支持两种形式: COPY src dest COPY [“src”, “dest”] 注意:src 只能指定 build context 中的文件或目录。 如果dest在容器中不存在,会被自...

Docker每天学一点03 - 镜像

镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。 如果我们想要创建自己的镜像,肯定要先了解镜像的内部结构。 hello-world 是 Docker 官方提供的一个镜像,通常用来验证 Docker 是否安装成功。 我先从这个最小镜像开始说下,之前已经把它下载下来了。 hello-world 的 Dockerfile 内容如下: FROM scratch # 此镜像是从白手起家,从 0 开始构建。 COPY hello / # 将...

Docker每天学一点02 - 架构详解

Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Docker 注册中心 - Registry Docker 容器 - Container(镜像的运行实例) Docker 架构图如下: Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。 客户端和服务器可以运行在同一个 Host 上,客户端也...

Docker每天学一点01 - 入门

容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。 开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。 可以将容器想象成运输行业中的集装箱,Docker 将集装箱思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。 Docker 可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上。 其实,“集装箱” 和 “容器...